您的位置:首页 > 其它

广告分析

2016-07-17 17:07 176 查看

广告分析


广告点击率预测中的几点问题
@zen.wan
       【问题来源】LR模型将会用于对广告展现时,根据点击率,对展现的广告做重排序。具体的做法是:

根据一个月该行业的日志,找到每次搜索时,当时展现的所有广告(一次展现固定出三条广告)。他们把每个广告的每次展现当作样本,当时是否点击为LR的y值:0或者1。这样一共获得了50w个样本(比如在一次搜索queryA下展现了三条广告a,b,c,其实a被点击了一次,那么这次搜索一共对应3个样本,其中第一个样本的y为1,后面两个样本的y为0)
对样本做均匀抽样分成两份,70%为训练样本,30%为测试样本,抽取了100种特征,其中一个特征是当时广告在网页中的排序(1,2或者3)
使用公司的LR在训练样本上进行训练,在测试样本中进行检测, 认为LR模型给出的p即为广告的点击率,其中:
对于广告在网页中的排序,韩梅梅使用的方法是离散乘0-1特征,即将排序离散成(是否为第一名,是否为第二名,是否为第三名),如果样本的排序是第一名,对应的特征为(1,0,0),如果样本的排序为第二名,对应的特征为(0,1,0),而李雷的方法是直接对排序做归一后当作特征的取值,如第一名为0,第二名为0.5,第三名为1,问他们谁的方法效果会更好,为什么?
一般大型LR模型都是使用随机梯度下降的方式,所以需要选择初始值,韩梅梅把beta()的初始值设置成了广告的平均点击0.01,而李雷把bata()设置为1,问在实际线上应用的时候,他们谁的方法效果会更好,为什么?
在直接使用LR模型的时候(loss=\sum yi*log(h(x))+(1-yi)*log(1-h(x)))h(x)=1/(1+exp(-xi*thetai)),韩梅梅和李雷发现在训练样本中拟合的很好,但是在测试样本中效果比较差,问可能是什么原因导致?怎么解决?
d.在测试的时候,他们使用auc来评估效果,请问auc是怎么计算的?
在单特征(实际业界还需要用到cross_feature)提取中,对于categorical feature ,一般采用one-hot encoding(独热编码),而cross_feature 也一般是对categorical feature经常交叉。需要one-hot encoding 是因为一些离散的值是没有比较大小的意义,比如gender=[“man”,”female”],city = [“shanghai”,”hefei”,”wuhan”],对于一些看似可比的feature,实际上也是没有可比性的,比如广告的位置(rank)。有实际比较意义的feature如:price价格),reviews_count(评论数),sold_count(销量)等。

下面我举个例子来说明one-hot encoding:

user_gender=gender=[“man”,”female”],user_city = [“shanghai”,”hefei”,”wuhan”] ,ad_rank = [1,2,3] 则feature_set = [“man”,”female”,”shanghai”,”hefei”,”wuhan”,rank_1,rank_2,rank_3],假如有一条记录是:一位上海同学对第二个广告进行了点击,则one-hot
endoing的结果就是[1,0,1,0,0,0,1,0].

实际开发中,我们需要扫描两次数据,采用稀疏矩阵存储,第一次生成feature_set,第二次再进特征编码。
beta()初始值设定没有固定原则,beta()的几何意义是截距,就是在特征权值w全为0的情况下的取值,从另外一个角度看,就是对一个全新的商品赋予的点击率。通常可以取平均值,取1的话就是赋予了对点击率预测来说 有点过高,不太可取。
模型选择的策略一般有两种,一种是结构风险最小化,还有一种是经验风险最小化,此处选用的是经验风险最小化,经验风险最小化的一个缺点是,它求取的的参数是对于训练集的无偏估计,结果就是容易产生过拟合现象,即对训练集而言有良好的泛化能力,对验证集却很糟糕,而结构风险最小化就是克服over-fitting而提出的,它的做法就是在经验最小化的基础上增加一个正则化因子,正则化项可以是参数向量的L1范数,也可以是L2范数!业界通常采用LR+L1的做法(Lasso回归)。为什么选择L1而不是L2,主要是L1是一种稀疏型学习方法。
计算AUC前需要了解ROC曲线:



正如我们在这个ROC曲线的示例图中看到的那样,ROC曲线的横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR)。下图中详细说明了FPR和TPR是如何定义的。




接下来我们考虑ROC曲线图中的四个点和一条线。第一个点,(0,1),即FPR=0, TPR=1,这意味着FN(false negative)=0,并且FP(false positive)=0。Wow,这是一个完美的分类器,它将所有的样本都正确分类。第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。类似的,第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

最简便的计算规则如下:首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去正类样本的score为最 小的那M个值的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即


另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。

参考文献:

[1]李航.统计学习方法.清华大学大学出版社.

[2]ROC和AUC介绍以及如何计算AUC

[3] AUC的计算方法总结

计算广告常见问题:用机器学习的方法来预测query和广告之间的点击率

11月 16, 2015
zen.wan   1029 VIEWS

4 comments


广告点击率预测中的几点问题
@zen.wan
       【问题来源】LR模型将会用于对广告展现时,根据点击率,对展现的广告做重排序。具体的做法是:

根据一个月该行业的日志,找到每次搜索时,当时展现的所有广告(一次展现固定出三条广告)。他们把每个广告的每次展现当作样本,当时是否点击为LR的y值:0或者1。这样一共获得了50w个样本(比如在一次搜索queryA下展现了三条广告a,b,c,其实a被点击了一次,那么这次搜索一共对应3个样本,其中第一个样本的y为1,后面两个样本的y为0)
对样本做均匀抽样分成两份,70%为训练样本,30%为测试样本,抽取了100种特征,其中一个特征是当时广告在网页中的排序(1,2或者3)
使用公司的LR在训练样本上进行训练,在测试样本中进行检测, 认为LR模型给出的p即为广告的点击率,其中:
对于广告在网页中的排序,韩梅梅使用的方法是离散乘0-1特征,即将排序离散成(是否为第一名,是否为第二名,是否为第三名),如果样本的排序是第一名,对应的特征为(1,0,0),如果样本的排序为第二名,对应的特征为(0,1,0),而李雷的方法是直接对排序做归一后当作特征的取值,如第一名为0,第二名为0.5,第三名为1,问他们谁的方法效果会更好,为什么?
一般大型LR模型都是使用随机梯度下降的方式,所以需要选择初始值,韩梅梅把beta()的初始值设置成了广告的平均点击0.01,而李雷把bata()设置为1,问在实际线上应用的时候,他们谁的方法效果会更好,为什么?
在直接使用LR模型的时候(loss=\sum yi*log(h(x))+(1-yi)*log(1-h(x)))h(x)=1/(1+exp(-xi*thetai)),韩梅梅和李雷发现在训练样本中拟合的很好,但是在测试样本中效果比较差,问可能是什么原因导致?怎么解决?
d.在测试的时候,他们使用auc来评估效果,请问auc是怎么计算的?
在单特征(实际业界还需要用到cross_feature)提取中,对于categorical feature ,一般采用one-hot encoding(独热编码),而cross_feature 也一般是对categorical feature经常交叉。需要one-hot encoding 是因为一些离散的值是没有比较大小的意义,比如gender=[“man”,”female”],city = [“shanghai”,”hefei”,”wuhan”],对于一些看似可比的feature,实际上也是没有可比性的,比如广告的位置(rank)。有实际比较意义的feature如:price价格),reviews_count(评论数),sold_count(销量)等。

下面我举个例子来说明one-hot encoding:

user_gender=gender=[“man”,”female”],user_city = [“shanghai”,”hefei”,”wuhan”] ,ad_rank = [1,2,3] 则feature_set = [“man”,”female”,”shanghai”,”hefei”,”wuhan”,rank_1,rank_2,rank_3],假如有一条记录是:一位上海同学对第二个广告进行了点击,则one-hot
endoing的结果就是[1,0,1,0,0,0,1,0].

实际开发中,我们需要扫描两次数据,采用稀疏矩阵存储,第一次生成feature_set,第二次再进特征编码。
beta()初始值设定没有固定原则,beta()的几何意义是截距,就是在特征权值w全为0的情况下的取值,从另外一个角度看,就是对一个全新的商品赋予的点击率。通常可以取平均值,取1的话就是赋予了对点击率预测来说 有点过高,不太可取。
模型选择的策略一般有两种,一种是结构风险最小化,还有一种是经验风险最小化,此处选用的是经验风险最小化,经验风险最小化的一个缺点是,它求取的的参数是对于训练集的无偏估计,结果就是容易产生过拟合现象,即对训练集而言有良好的泛化能力,对验证集却很糟糕,而结构风险最小化就是克服over-fitting而提出的,它的做法就是在经验最小化的基础上增加一个正则化因子,正则化项可以是参数向量的L1范数,也可以是L2范数!业界通常采用LR+L1的做法(Lasso回归)。为什么选择L1而不是L2,主要是L1是一种稀疏型学习方法。
计算AUC前需要了解ROC曲线:



正如我们在这个ROC曲线的示例图中看到的那样,ROC曲线的横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR)。下图中详细说明了FPR和TPR是如何定义的。




接下来我们考虑ROC曲线图中的四个点和一条线。第一个点,(0,1),即FPR=0, TPR=1,这意味着FN(false negative)=0,并且FP(false positive)=0。Wow,这是一个完美的分类器,它将所有的样本都正确分类。第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。类似的,第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

最简便的计算规则如下:首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去正类样本的score为最 小的那M个值的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即


另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。

参考文献:

[1]李航.统计学习方法.清华大学大学出版社.

[2]ROC和AUC介绍以及如何计算AUC

[3] AUC的计算方法总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: