CTR算法总结

1 Logitic Regression

是ctr预估模型的最基本的模型.

优势:

优势在于处理离散化特征,而且模型十分简单,很容易实现分布式计算。关于LR的变种也有许多,比如Google的FTRL,其实这些变种都可以看成:LR+正则化+特定优化方法

缺点:

特征与特征之间在模型中是独立的,需要进行大量的人工特征工程进行交叉特征组合;而且LR需要将特征进行离散化,归一化,在离散化过程中也可能出现边界问题。

2 GBDT

梯度提升决策树,是一种表达能力比较强的非线性模型。

优势:

优势在于处理连续值特征;而且由于树的分裂算法,它具有一定的组合特征的能力,模型的表达能力要比LR强;对特征的数值线性变化不敏感,它会按照目标函数,自动选择最优的分裂特征和该特征的最优分裂点,而且根据特征的分裂次数,还可以得到一个特征的重要性排序。所以,使用GBDT减少人工特征工程的工作量和进行特征筛选。

缺点:

需要将很多离散特征统计成连续值特征(或者embedding),这里可能需要耗费比较多的时间。同时,因为GBDT模型特点,它具有很强的记忆行为不利于挖掘长尾特征组合特征的能力十分有限

XGBoost

1 了解xgboost么,请详细说说它的原理

2 知乎

LightGBM

LightGBM介绍及参数调优

LightGBM 如何调参

Factorization Machine-FM/FFM

深入浅出ML之Factorization家族

美团:深入FFM原理与实践

FM:矩阵分解原理,用隐函数内积求解交叉项系数。可以自动处理交叉特征;实现线性的时间复杂度

但是,对于不同的特征组合,比如天气与地点,天气与性别,关联的程度是不一样的,都使用同样的向量去与不同的特征做内积,会带来明显的信息损失。所以引出了FFM(field FM)

FFM:在FM的基础上,考虑了特征交叉的field的特点,但是也导致它没有办法实现线性的时间复杂度,模型训练要比FM慢一个量级,但是效果会比FM来得更好。

4 GBDT+(LR,FM/FFM)

GBDT具备一定的特征选择能力(选择最优的特征进行分裂),且适合处理连续值特征:

利用GBDT替代人工实现连续值特征的离散化,而且同时在一定程度组合了特征,可以改善人工离散化中可能出现的边界问题,也减少了人工的工作量。

GBDT+LR(Facebook)

用已有特征训练GBDT模型,然后利用GBDT模型学习到的树来构造新特征,最后把这些新特征加入原有特征一起训练模型。构造的新特征向量是取值0/1的,向量的每个元素对应于GBDT模型中树的叶子结点。当一个样本点通过某棵树最终落在这棵树的一个叶子结点上,那么在新特征向量中这个叶子结点对应的元素值为1,而这棵树的其他叶子结点对应的元素值为0。新特征向量的长度等于GBDT模型里所有树包含的叶子结点数之和。
叶子节点作为新特征,每个样本只有一个叶子节点值为1,其他都为0.
参考

5 NFFM (待完成)

GitHub

 

 

GBDT原理及利用GBDT构造新的特征-Python实现

常见计算广告点击率预估算法总结

Kaggle实战——点击率预估

从最近的比赛学习CTR/CVR

Kaggle滑水 - CTR预估(GBDT-LR)

Pandas面对大数据集,如何将内存占用降低90% (附实例)​​​​​​​

你可能感兴趣的:(Machine,Learning)