Kaggle[2]

WBOY
WBOYOriginal
2016-06-07 15:37:001302Durchsuche

比赛链接:http://www.kddcup2012.org/c/kddcup2012-track2 比赛描述: Search advertising has been one of the major revenue sources of the Internet industry for years. A key technology behind search advertising is to predict the click-through

比赛链接:http://www.kddcup2012.org/c/kddcup2012-track2

比赛描述:

Search advertising has been one of the major revenue sources of the Internet industry for years. A key technology behind search advertising is to predict the click-through rate (pCTR) of ads, as the economic model behind search advertising requires pCTR values to rank ads and to price clicks. In this task, given the training instances derived from session logs of the Tencent proprietary search engine, soso.com, participants are expected to accurately predict the pCTR of ads in the testing instances.

看样子就是ctr预估了。ctr上面有提到,叫做click-through rate,点击率。然后广告的这个点击率跟搜索引擎的返回顺序和竞价排名有很大关系。

具体的提供的数据集,特征情况,可参考最前面的链接。

本篇主要总结1st队伍的paper(kddcup2012 best paper)

先来看看整个系统的构建:

Kaggle[2]

主要有3部分组成。

1. 单独模型构建:包括分类、回归、ranking、以及矩阵分解(隐因子挖掘)等

2. 融合模型改进: 融合第一部分的单模型(用validation set得到融合参数)

3. 集成模型生成: 得到最终的集成模型


首先要说下,他们每个模型使用的特征都不一样(特征包括题目给的,也有自己加进去的),具体的可以参考他们的paper的附录。

数据这样的:

# click, # impression, ...

click是点击次数,impression可以理解成出现次数,然后要预测的是click/impression。

后面做二分类的时候,把click当成正样本集,impression - click 作为负样本集

先看看第一部分吧。

classification:

1. Naive Bayes 做二分类,正样本是positive sample 负样本是negative sample(其实这里正负样本是一样的,只是个数不同,原因是同一个广告词条,用户有时候会点,有时候不会点)。然后计算条件概率的时候,用到2种smooting的办法(additive 和 back off)。

2. Logistic Regression也是做二分类,加入L2正则项,用LIBLINER来解这个优化问题(LIBLINEAR适用于大数据,LIBSVM、LIBLINEAR貌似都是台大的)。具体训练步骤,为了最大化AUC,他们用到了很多策略,包括删选特征、抽样策略等。

Regression:

1. Ridge Regression:

Regression的target variable是#click / #Impression。Ridge regression没啥好说的。

2. SVR

Support Vector Regression。要说的是,他们使用了kernel。不过是很简单的kernel - 加了2次项。继续用LIBLINEAR(自己的东西,而且效率又高嘛)

Ranking:

1. Rank Logistic Regression:

Ranking model 主要是为了最小化pairwise logistic loss。 

Kaggle[2]

2. RankNet

这个我不是太懂了== 参考文献是Learning to rank using SGD。 日后看完了,再补上。

Matrix Factorization:

这部分是挖掘隐因子。如果看过NetFlix的推荐系统大赛,应该很清楚。矩阵分解,主要用于挖掘user和item的隐关系。希望每个user和item都能由几个隐变量表示,然后相乘起来。其实这个ctr预估,也可以看成是推荐系统。因为我们希望知道user对这个广告感不感兴趣,从而预测会不会点击。

作者主要用到了regression based(ctr就是评分)和ranking based(ranking不是很懂,看完再补)。


最后作为第一部分的总结,看看每个model的AUC情况:

Kaggle[2]


第二部分是 Validation Set Blending

这一步的目的主要是融合单个的预测器,提升性能,同时扩大多样性,使得最终在test data上有比较好的效果。

具体的做法其实就是把单模型的预测特征,作为blending的输入特征,然后在训练一个模型。

1. feature selection

作者的这一步很简单,如果我们认为这个单模型overfit(AUC差异大), 那么直接扔掉。

2.Score Transformation

就是scale一下。

3.Blending Models

开始融合了!作者尝试了RankNet、SVR、Combined Regression and Ranking、LambdaMart。

如果最后使用的是1-level blending,那么参考之前的大图,整个系统以及完成。

若是2-level,相当于把1-level blending的模型再blend一次,没啥太大区别。


第三部分就是Testing了

这部分相当于把前面的单模型还有融合模型,一起集成起来,用作预测。可以linear combine 或者干脆uniformly combine。


这个比赛的best paper解读就到此为止啦~

自己对ranking这块不太了解,然后文中所说的AUC和ranking的pairwise loss有很大关系,我也得看看。

本身这个比赛又一次验证了,ensamble的强大,其实说到底,ensamble只是为了那个diversity,防止overfitting。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn