介绍有关CTR预估相关的知识

常用的损失函数

对数损失

如果只有两类 {0, 1}, 则对数损失函数的公式简化为 两类。这时, yi 为输入实例 xi 的真实类别, pi 为预测输入实例 xi 属于类别 1 的概率. 对所有样本的对数损失表示对每个样本的对数损失的平均值, 对于完美的分类器, 对数损失为 0 .

TODO 主流CTR方案的演进和对比

知乎

embedding

相对于高维稀疏的one-hot编码表示,embedding-based的方法,学习 一个低维稠密实数向量(low-dimensional dense embedding)。类似于hash方法, embedding方法吧位数较多的稀疏数据压缩到位数较少的空间,不可避免会有冲突; 然而,embedding学到的是类似于主题的语义表示,对于item的"冲突"是希望发生的, 这有点像软聚类,这样才能解决稀疏性的问题。

FM FFM

Google公司开源的word2vec工具让embedding标识方法广为人知。 Embedding标识通常用神经网络模型来学习,当然也有其他学习方法,比如矩阵分解(MF)、 因子分解机(FM)等。这文章详细介绍一下基于神经网络的embedding学习方法。 FM和基于树的模型(GBDT)都能够自动学习特征交叉组合。 基于树的模型适合 连续中低度稀疏数据,容易学到高阶组合。但是树模型缺不适合学习 高度稀疏数据的特征组合,一方面高度稀疏数据的特征纬度一般很高,这时基于树的模型学习效率很低, 甚至不可行;另一方面树模型也不能学习到训练数据中很少或者没有出现的特征组合。

矩阵分解也是生成embedding表示的一种方法。

MF方法可以看做是FM模型的一种特例,即MF可以看做特征只有userId和itemId的FM模型。

TODO 点击率预测综述

ctr方法系统性总结

https://cloud.tencent.com/developer/article/1005051 https://cloud.tencent.com/developer/column/1346

CTR预估中GBDT与LR融合方案

https://blog.csdn.net/lilyth_lilyth/article/details/48032119

XGBoost与spark在广告排序中的应用

https://mp.weixin.qq.com/s/4i5O0QlKpWz_5_NA9gdiPA

深入FFM原理与实践

1

美团DSP广告策略实践

2

kaggle: Click-Through Rate Prediction

https://github.com/guestwalk/kaggle-avazu

kaggle-2014-criteo

https://github.com/guestwalk/kaggle-2014-criteo

百度凤巢:DNN在凤巢CTR预估中的应用

百度凤巢:DNN在凤巢CTR预估中的应用

http://www.enterbat.com/kecheng/detail_1539154?f=org_coursecenter

Kaggle实战——点击率预估

https://zhuanlan.zhihu.com/p/32500652

TODO 我用过的CTR预估模型

http://www.doesbetter.com/862/

TODO CTR预估特征工程

机器学习中如何利用id类特征?

https://blog.csdn.net/supinyu/article/details/52351465 https://www.zhihu.com/question/34819617

    id类特征的价值:
  1. 可以使得在学习过程中,每个人的信号更合理地影响整体模型。使得模型泛化能力更好。
  2. 可以使得模型能够对每个id有更细粒度的排序能力,使得模型的个性化效果更好。

LR是适合使用ID类特征的,原因在于LR适合接受超高维度的特征输入。 对于XGBoost、DNN,这么高纬度的特征进来,在工程和算法上都有挑战。 然而其实针对这种超高纬度特征,灌入Tree、NN模型的方法,并不难想到,就是Embedding。

高维稀疏特征的时候,lr 的效果会比 gbdt 好

https://blog.csdn.net/papaaa/article/details/79910449

  • 这个问题我也是思考了好久,在平时的项目中也遇到了不少 case,确实高维稀疏特征的时候,使用 gbdt 很容易过拟合。
  • 但是还是不知道为啥,后来深入思考了一下模型的特点,发现了一些有趣的地方。
  • 假设有1w 个样本, y类别0和1,100维特征,其中10个样本都是类别1,而特征 f1的值为0,1,且刚好这10个样本的 f1特征值都为1,其余9990样本都为0(在高维稀疏的情况下这种情况很常见),我们都知道这种情况在树模型的时候,很容易优化出含一个使用 f1为分裂节点的树直接将数据划分的很好,但是当测试的时候,却会发现效果很差,因为这个特征只是刚好偶然间跟 y拟合到了这个规律,这也是我们常说的过拟合。但是当时我还是不太懂为什么线性模型就能对这种 case 处理的好?照理说 线性模型在优化之后不也会产生这样一个式子:y = W1*f1 + Wi*fi+….,其中 W1特别大以拟合这十个样本吗,因为反正 f1的值只有0和1,W1过大对其他9990样本不会有任何影响。
  • 后来思考后发现原因是因为现在的模型普遍都会带着正则项,而 lr 等线性模型的正则项是对权重的惩罚,也就是 W1一旦过大,惩罚就会很大,进一步压缩 W1的值,使他不至于过大,而树模型则不一样,树模型的惩罚项通常为叶子节点数和深度等,而我们都知道,对于上面这种 case,树只需要一个节点就可以完美分割9990和10个样本,惩罚项极其之小.
  • 这也就是为什么在高维稀疏特征的时候,线性模型会比非线性模型好的原因了:带正则化的线性模型比较不容易对稀疏特征过拟合。

TODO CTR预估入门及各种模型介绍

http://www.mayi888.com/archives/54482

GBDT+LR产生新的特征

https://blog.csdn.net/u013385925/article/details/80055101

TODO CTR点击率预估干货分享

探索和利用

https://blog.csdn.net/kingzone_2008/article/details/80534786 如何控制探索的量和探索的有效性,使得系统长期的、整体的收入增加,就是探索与利用的核心问题.

广告点击率预估是怎么回事?

https://zhuanlan.zhihu.com/p/23499698

美团DSP广告策略实践

CVR CTR 点击率 转化率

https://tech.meituan.com/mt_dsp.html

参考文章

  • http://www.cnblogs.com/klchang/p/9217551.html