腾讯广告算法大赛随手记6——自测单调性得分
2019-04-28 本文已影响341人
山东大葱哥
欢迎点赞
大葱哥不定期发布关于大赛的文章,欢迎大家关注。
觉得喜欢就给点个赞
觉得赞不够表达你的喜欢,可以给大葱哥一个赏。
知乎咨询入口
做个广告,有需要深入问题讨论的可以移步到,知乎搜索山东大葱哥,或者复制链接在浏览器打开
大葱哥腾讯算法大赛咨询入口
链接:
https://www.zhihu.com/consult/people/1088941583310782464?ab_signature=CiRBRUJDM3REd1p3eExCVXIxRlFMQnlqNWlXT2tQcDhWLS1URT0SIGQxYmFlYmJjMzI3YTgzOTU1NGQ3Mjk1OWVkNmIwY2YzGhAIARIGNS40Mi4wGgQxMjM4
单调性计算方法
由于竞价机制的特性,在广告其他特征不变的前提下,随着出价的提升,预估曝光值也单调提升才符合业务直觉。所以,定义出价单调相关性评估指标如下:
对待预估广告 ad, 除出价 bid 外其他设置不变,任意变化 n 个 bid 取值,得到对应的 n 个曝光预估值,计算如下该广告出价单调性得分如下:
image.png
对所有待预估广告,计算单调性得分均值如下(易知,该值越大越好)
image.png
import pandas as pd
import time
import numpy as np
def getMonoScore (samplefilename,submissionfilename):
test_samplefile = pd.read_csv(samplefilename,sep='\t',
nrows=30000,header=None,names=['样本id','广告id','创建时间','素材尺寸','广告行业id'
,'商品类型','商品id','广告账户id','投放时间','人群定向'
,'出价'],usecols=['样本id','广告id','出价'])
test_sampledf = pd.DataFrame(test_samplefile)
test_sampledf_result=pd.read_csv(submissionfilename,
sep=",",header=None,names=["样本id","曝光量"])
test_sampledf_resultdf= pd.DataFrame(test_sampledf_result)
test_sampledf=pd.merge(test_sampledf,test_sampledf_resultdf, how='left', left_on='样本id', right_on='样本id')
test_sampledf.sort_values(by=["广告id","出价"],inplace=True)
# 作为基准
standard=test_sampledf.groupby(by='广告id').head(1)
standard.rename(columns={'样本id':'基准样本id','出价':'基准出价','曝光量':'基准曝光量'},inplace=True)
test_sampledf=pd.merge(test_sampledf,standard,how="left",left_on='广告id', right_on='广告id')
test_sampledf['score']=test_sampledf.apply(
lambda x: (
((x['基准曝光量']-x['曝光量'])* (x['基准出价']-x['出价']))/
abs((x['基准曝光量']-x['曝光量'])* (x['基准出价']-x['出价']))
)
,axis=1
)
monoscore=test_sampledf.groupby(by='广告id')['score'].mean().mean()
print("经过相关性计算成绩为:"+str(monoscore))
print("预估相关性部分成绩为:"+ str(60*(monoscore+1)/2))
# 传入官方的样本文件以及自己生成的结果文件路径
getMonoScore('test_sample.dat',"submission.csv")
经过相关性计算成绩为:0.3253976419099872
预估总成绩为:39.76192925729961
最终得分 Totalscore
上述两个指标值域和趋势都不同,为了比赛评分简便,会将上述两个指标各自归一化后
再加权求和得到一个最终得分。形式如下:
image.png
这个就没法写了,因为没有官方的标准答案,话说有答案的话就直接可以100分了。