Skip to content

dayL-W/Tianchi-OGeek

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ogeek

项目介绍

实时搜索场景下搜索结果的ctr预估。这是来自OPPO手机搜索排序优化的一个子场景,并做了相应的简化。给定用户输入前缀(用户输入,查询词前缀)以及文章标题、文章类型等数据,预测用户是否点击。文章标题和类型是在候选条目中。评价指标采用F1 Score。

赛题特征:prefix(用户输入,query前缀),query_prediction(根据当前前缀,预测的用户完整需求查询词,最多10条;预测的查询词可能是前缀本身,数字为统计概率),title(文章标题),tag(文章内容标签)

特征工程

0、预处理。对数据中的字母统一为小写。去除符号。去除停词后做分词备用。

1、转化率特征。包括输入前缀、文章标题、类型的点击次数,出现次数,转化率,以及转化率贝叶斯平滑特征。这个特征有可能存在冷启动的问题,我们采取平均值填充的办法。

2、编辑距离特征。计算前缀和文章标题的编辑距离,距离的比率,还可以计算前缀和候选条目编辑距离的最大值、最小值、平均值、加权值等。2个字符串之间编辑距离越小,说明内容越相似。

3、词向量特征。输入前缀和标题都是较短的词语,可以根据词向量计算得到前缀和文章标题的距离。同理还可以计算得到前缀和候选条目距离的最大值、最小值、平均值、加权值等。

4、最长公共子串相关的特征。这个和上面那个特征差不多,但是不大一样。其他

模型

采用XGB/LGB/GBDT+LR模型,模型融合比但模型有所提升 投票法和Stacking方法都试过,Stacking方法稍好

比赛总结

比较重要的还是一些转化率等统计特征,接下来是词向量特征和编辑距离等特征。训练模型大家使用的都差不多,主要在于构造出更加有效的特征。

没有提供用户/时间的信息,无法对用户建模,每个时间内的热点不一样。

还有大佬从拼音的角度构造特征,因为有些用户存在打错字的情况。 还有人使用TextCNN模型,DeepFFM模型。使用转化率特征容易过拟合,统计CTR特征时采用0.5的采样率。

参考资料

1、贝叶斯平滑产生这种问题的的原因是投放量太少,数据有偏,所以如果每个广告在开始投放前就有了默认的一个展示数和点击数,即分子分母都加上一个比较大的常数,这样计算起ctr来就不会有那么大的偏差。这种方法叫做ctr平滑

2、模型融合

3、词向量的训练

About

the code of competition on Tianchi-OGeek

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages