广告点击率常用模型的优点和缺点

本文对比分析了LR、GBDT+LR、FM和神经网络等点击率预估模型的优缺点,探讨了它们在广告点击率预测领域的应用与挑战。

 

LR

优点:

1. 是一个很好的baseline,效果不错,当然因为效果不错,所以后续的版本想超过它,真的还是很难的。

2. 实现简单,有开源的工具可以直接用来训练,在线的代码也写起来也比较容易

 

缺点:

1. 因为是线性模型,所以有选择交叉特征的工作,这部分工作消耗大量的精力,但往往没什么效果。一般都是wrapper方法选择,每轮可能都要进行小时级的运算,理论上要进行2^n轮(n是特征数),但因为离线分析的指标和线上效果不一定是强相关的,所以分析起来更痛苦。更令人崩溃的是点击率预估的数据变化是比较大的,离线选出来的特征,参数都不一定适用于未来。

2. 因为广告位对点击率有着决定性的影响,所以几乎所有的特征都会交叉广告位,这样广告位间的信息是无法共享的,比如广告A在广告位x上点击率很高,但如果广告A在广告位y上没有曝光过,那对广告位y来讲,广告A是一个全新的广告。

3. 实践中交叉特征还会导致模型非常大,我们也使用了FTRL,但实践中它并不能非常有效的产生稀疏模型,如果模型非常大,会导致同步模型变慢,一样会严重影响效果。

4. 在线预测时,因为大量的特征都要与广告ID交叉,所以在线拼装特征的成本很高,性能可能也会成为问题。

 

GBDT+LR

GBDT+LR真有人实践中搞成功了吗?我好怀疑,听过两个分享都是没有成功的例子。我没信心试,欢迎打脸。

优点

它是一个很有意思的想法

缺点

1. 离线处理和在线处理都复杂。不同于比赛,在实践中ID类特征还是非常重要的,广告ID可能就有几十万个,深度怎么控制呢?把那么多棵树丢到线上去,然后遍历,拼装特征,想想都难搞。

2. 要调的参数很多,人生苦短,为什么要搞这么多参数折磨自己。另外再重复一遍:在点击率预估这个问题上,离线效果好往往只能说是模型基本没问题,不能说上线后就效果好。

3. GDBT+LR本身是想解决特征选择的问题,但现实中也没那么多特征可以用吧?另外没发现点击率预估中如果特征本身没问题,加上去一般都不会降效果吗?

4. 性能问题怎么解决呢?如果GBDT+LR是不是只能batch方式训练了?如果batch更新速度比FTRL会慢不少,效果又怎么保证呢?想不通。

FM

优点

1. 它可以自动学习两个特征间的关系,可以减少一部分的交叉特征选择工作,而且参数也不算多,调起来不会太痛苦。

2. 因为不需要输入那么多的交叉特征,所以产生的模型相对LR的模型会小很多。

3. 在线计算时减小了交叉特征的拼装,在线计算的速度基本和LR持平(虽然两个向量的点积的计算看上去会导致计算量翻了几倍)。

缺点

1. 无法学习三个及以上的特征间的关系,所以交叉特征选择的工作仍然无法避免。

2. 虽然从原理上好像FM学习能力更强,但在实践中超过LR的效果也要凭实力(运气?)

3. 从功利的角度看,FM是非常不值得尝试的,它的工作量没比神经网络小多少,在这个不说深度学习都好像不懂机器的环境下,用FM算法,所能得到的资源,支持和收获,远比不上神经网络,所以建议做完LR后,就直接换神经网络吧,别搞FM了。

神经网络

优点

1. 可以直接输入原始的特征,减少了交叉特征的选择工作,并且可以支持大量的特征输入,相比因为LR要考虑交叉特征,所以交叉特征比较多的时候,模型会非常大,可能会有一些工程问题。

2. 如果输入的是原始特征,结构是用embedding layer + fc layer,产生的模型非常小,远小于LR。

3. 在线计算因为使用是大量的用户特征,所以一次请求中,用户特片和第一层隐层之间的计算只用计算一次(这是运算量最大的一部分),只有广告维度的特征需要计算多次(以及第一层隐层和之后的隐层也要多次计算),而广告维度的embedding向量和第一层隐层的计算可以预先算好,并且在线完全没有交叉特征的拼装工作,所以在线计算速度还好,实测比LR速度竟然还快了。

4. 神经网络对外宣传效果会好很多,虽然大部分时间也没什么必要搞神经网络。


 

首先,gbdt具有非常好的非线性拟合能力,以及对超参数的鲁棒性,因此在各种比赛中大量应用,堪称王者。比较适用的特征形式是连续值特征,这样的特征包含了足够的信息量用以树上各个分裂点的取值。但是,他也有明显的问题,对于线上使用的话存在一些不足。由于依赖统计特征,特征的准备需要积累一定周期才有足够置信度,故特征的实时性不太好。第二,特征准备环节多,对于线上效果迭代不利。第三,模型计算复杂度好,不能吞吐大规模样本。第四,非常重要!抛开数据质量,单纯从模型本身讲,还是由于计算代价高导致特征数很快就会达到瓶颈,从而导致效果达到瓶颈。另外,如果实在想用的话,推荐xgboost,他可以吞吐稀疏数据,计算效率也做了优化,还可以使用spark上的包方便并行计算。

再说lr。线性模型,但是在业界广泛使用。为什么呢?虽然模型本身表达能力差,但是可以通过特征工程不断减少问题的非线性结构。又由于模型计算复杂度低,可以吞吐超大规模的特征空间和样本集合,这样就为效果优化打开了空间。同时,他可以学习id化特征,从而减少了特征工程的环节,可以提高特征的实时性。

把gbdt和lr结合确实是一个很美丽的故事。大家都在说怎么怎么好,但实际落地的真的少见。当然,也许是我孤陋寡闻,如果有请给大家科普下。首先通过经年累月的优化,很多应用其实人工特征工程已经做的不错了,再把gbdt的encoding特征加进来可以表达能力有不小的overlap。两者的结合就是一种组合模型的stacking,这种没有反馈的组合对于效果的提升从理论上说不会比包含backproportion更合理。从线上系统考虑,两个模型的stacking也会加重复杂度和增加latency。

fm是一种lr思路的扩展。在一阶拟合的基础上加入二阶拟合,可以自动的学习任意两维特征的交叉。而且,交叉是以embedding向量的形式表达。跟lr一样,他可以吞吐超大规模的稀疏特征空间的样本集合。这种形式可以比较好的提高模型的表达能力,把性能和学习非线性结构的能力结合在一起,有不少实际场景中有一些应用。

dnn是当下最火的方法。本质上讲,该方法是通过前面多层的隐藏网络学习抽象特征,在最后输出层使用上述抽象得到的特征完成最终的学习任务。这种学习到的特征可以较好的降低问题的非线性程度。它的强大在于bp可以将目标函数的误差回传,逐层向输入层的方向传播从而矫正网络参数,经过多次迭代,网络参数会被修正的很好,这是多个模型简单上下的stacking所不能比的。同时,对传统的网络输入层进行改造,可适配大规模id化稀疏特征,将特征工程的难度大大降低,所以百度凤巢已经解散了主模型的特征工程team。自己把自己的工作给close了也是蛮有意思,哈哈。由于数据驱动的模式学习到了人工特征工程难以学到的隐含特征,所以模型的表达能力会有明显提升,线上效果会碾压一般的模型。但是,由于模型学习的复杂性,很难直观的解释特征与效果的关系。另外,网络结构,超参数的调参也是个技术与艺术的结合。简单点说,回报是跟付出正相关的。

<think>嗯,用户问的是常用的分类模型有哪些。首先,我需要确定用户的需求。他们可能是在做机器学习或者深度学习项目,需要选择合适的模型进行分类任务。可能是学生、刚入行的数据科学家,或者是Kaggle竞赛的参与者,想要了解不同模型的优缺点应用场景。 接下来,我得回忆常见的分类模型,覆盖传统机器学习深度学习两个方向。传统模型比如逻辑回归、决策树、随机森林、支持向量机等,这些都是基础且常用的。深度学习方面,CNN在图像分类很流行,还有Transformer模型,比如BERT用于文本分类。另外,可能用户也需要知道一些集成方法,比如XGBoost、LightGBM,这些在竞赛中表现很好。 然后,我需要考虑如何组织这些信息。可能按传统机器学习深度学习来分大类,每个类别下列举模型,简要说明原理、优缺点适用场景。这样结构清晰,便于用户理解。同时,用户可能需要知道选择模型的依据,比如数据量、特征类型、计算资源等,所以在最后给出选择建议会更好。 还要注意用户可能的背景。如果他们刚入门,可能需要更简洁的解释,避免太多技术术语。但根据之前的对话,用户可能已经有一定的知识,比如处理过Kaggle数据格式转换,所以可以适当深入一些,但保持易懂。 需要验证每个模型的描述是否准确,比如逻辑回归是线性模型,适合二分类;SVM基于间隔最大化,对高维数据有效。对于深度学习模型,像ResNet解决了梯度消失问题,Vision Transformer是基于自注意力的结构。这些关键点需要准确无误。 另外,用户可能想知道最新的模型,比如Transformer的应用,或者轻量级模型如MobileNet,这些在实际应用中有部署的需求。可能需要提到这些,以覆盖更广泛的应用场景。 最后,总结选择模型时的考虑因素,比如数据规模、特征类型、可解释性需求、计算资源等,帮助用户根据具体情况做出决策。这样不仅回答问题,还提供实用建议,增强回答的价值。</think>以下是常用的分类模型及其特点总结,涵盖传统机器学习与深度学习领域: --- ### **一、传统机器学习模型** #### **1. 逻辑回归(Logistic Regression)** - **原理**:线性模型 + Sigmoid函数,输出概率值。 - **优点**:简单高效,可解释性强,适合二分类问题。 - **缺点**:无法处理非线性关系。 - **场景**:金融风控(评分卡)、广告点击率预测。 #### **2. 决策树(Decision Tree)** - **原理**:通过特征阈值划分数据,构建树形结构。 - **优点**:直观易解释,支持类别数值特征。 - **缺点**:容易过拟合,对噪声敏感。 - **改进**:集成方法(随机森林、GBDT)。 #### **3. 随机森林(Random Forest)** - **原理**:多棵决策树集成,通过投票或平均输出结果。 - **优点**:抗过拟合,处理高维数据,支持并行计算。 - **缺点**:模型复杂度高,解释性弱。 - **场景**:医疗诊断、客户流失预测。 #### **4. 支持向量机(SVM)** - **原理**:寻找最大间隔超平面分割数据,可核化处理非线性问题。 - **优点**:高维数据表现好,理论完备。 - **缺点**:计算复杂度高,参数调优敏感。 - **场景**:文本分类、图像分类(小样本)。 #### **5. XGBoost / LightGBM / CatBoost** - **原理**:梯度提升树(GBDT)的高效实现。 - **优点**:竞赛常用,自动处理缺失值,特征重要性分析。 - **缺点**:训练时间较长,需调参。 - **场景**:Kaggle竞赛、表格数据分类(如银行信贷评分)。 --- ### **二、深度学习模型** #### **1. 全连接神经网络(DNN)** - **原理**:多层感知机堆叠。 - **优点**:可拟合复杂非线性关系。 - **缺点**:参数量大,易过拟合。 - **场景**:结构化数据分类(需配合特征工程)。 #### **2. 卷积神经网络(CNN)** - **原理**:卷积层提取局部特征,池化层降维。 - **经典模型**: - **LeNet**:手写数字识别(MNIST)。 - **AlexNet**:ImageNet图像分类突破。 - **ResNet**:残差结构解决梯度消失,支持深层网络。 - **MobileNet**:轻量化设计,适合移动端部署。 - **场景**:图像分类、医学影像分析。 #### **3. Transformer** - **原理**:自注意力机制捕捉长距离依赖。 - **经典模型**: - **ViT(Vision Transformer)**:将图像分块输入Transformer。 - **BERT**:文本分类(情感分析、新闻分类)。 - **场景**:跨模态分类(图像+文本)、长文本分类。 #### **4. 图神经网络(GNN)** - **原理**:聚合节点邻居信息更新特征。 - **模型**:GCN、GraphSAGE。 - **场景**:社交网络用户分类、分子性质预测。 --- ### **三、模型选择建议** | **因素** | **推荐模型** | |-------------------------|-----------------------------------| | 小样本数据 | SVM、逻辑回归 | | 结构化表格数据 | XGBoost、LightGBM | | 图像数据 | ResNet、ViT | | 文本数据 | BERT、LSTM | | 需高可解释性 | 决策树、逻辑回归 | | 实时性要求高 | MobileNet、LightGBM | | 数据量极大 | DNN(GPU加速)、分布式XGBoost | --- ### **四、典型工具库** - 传统机器学习:`scikit-learn`(Python) - 深度学习:`PyTorch`、`TensorFlow/Keras` - 树模型:`XGBoost`、`LightGBM`、`CatBoost` 实际应用中需结合**数据规模**、**特征类型****业务需求**选择模型。例如:图像分类优先CNN或ViT,表格数据优先树模型,文本分类优先Transformer。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值