机器学习id类特征实用性

6,309次阅读
没有评论

共计 1675 个字符,预计需要花费 5 分钟才能阅读完成。

ID类特征在很多应用场景下都会遇到,电商里面的物品id,信息流里面资讯id,用户的id等等。id 类特征可以直接onehot编码使用,也可以进行embedding使用,前者是巨大的稀疏onehot编码向量,后者面临embedding varaiable 问题。提到这个id类特征是我在进行baseline模型训练的时候前后对比,发现在AUC上竟然可以提升一个点,同事说这个可是强有力的特征,必须得用。

这次是个新业务前期baseline特征没用那么多,之前都是已经包含的迭代的特征范围之内,现在算是有了一次近距离接触。自己的理解还是有点浅,参考下知乎大佬的解释,夹杂一些自己的理解。

使用id类特征原因

会极⼤提⾼模型的个性化能⼒和实际效果。⽽且可以对抗热度穿透现象。 假设⼀个最简单的问题,预估⼴告的点击率CTR。为了便于讨论,假设你只有⼀个特征,就是每次展现⼴ 告在过去⼀个时间窗内的历史点击率ctr,现在⽬标是预测下⼀次点击的ctr。简单起⻅,不妨假设系统中只 有两条候选⼴告。 显⽽易⻅,预测分数是和ctr正相关的。如果你使⽤的是离散LR,那么在分段之后,显然ctr越⾼的分段上权 重越⼤。这个模型实际跑起来就是最简单的“热⻔⼴告”的效果。 现在你加⼊了⼀个新的特征,叫做设备id(更理想的情况当然是⽤户id)。那么你会发现,对于不同的⽤户 id,也许能学出来⼀些权重。但是模型打分的排序应该基本是不变的。那么你会问:那这特征加进来有蛋 ⽤? 当然有,假设最极端的情况,整个⼴告系统只有2个设备,⼀个设备属于普通⽤户,⼀个设备属于⼀个恶意 的刷⼦(他专⻔⽤脚本点击某个⼴告以使得这条⼴告有更⾼⼏率被浮现)。那么由于普通⽤户他看到⼴告 后实际点击率是⽐刷⼦低的。那么模型就学到了:导致⼴告更⾼点击率的原因其实是⽤户id。那么经过机 器学习之后,刷⼦这个id的权重就⾼了,⽽ctr的权重就低了。那么相对来讲,尽管每个⼈看到的排序是⼀ 样的,但是其中刷⼦的刷分⾏为效果就被⼤⼤降低了。 所以你在这⾥看到了第⼀个有趣的现象:直接加⼊id类特征,尽管并不能实现完全的个性化,但是可以把 每个⽤户的⾏为模式区分开,从⽽提⾼了其他特征的泛化能⼒。 再进⼀步地想:每个⼈对⼴告的喜好是⼀样的,这科学吗?那我希望模型对每个⼈的排序效果都不⼀样, 这样⼴告系统就更加个性化了呀! 于是你⼜增加了⼀个特征,叫做 设备id x 历史ctr。那么因为有了这个组合特征,LR就能学习到组合的信 息。他实际的效果,就相当于对每个设备id建⽴了⼀个只有⼀个历史ctr作为特征的LR模型。那么这个模 型,想必是⽐原始的模型效果更好的了。

id类特征价值

id类特征的价值体现出来了:

1. 可以使得在学习过程中,每个⼈的信号更合理地影响整体模型,使得模型泛化能⼒更好

2. 可以使得模型能够对每个id有更细粒度的排序能⼒,使得模型的个性化效果更好。

如何使用id类特征

1. id类特征上的信号是极其稀疏的,所以这意味着我们需要更⼤量的数据。但是其实这并没有想象中的 难,计算⼴告、推荐系统这种机器学习场景中,单个id上收集的数据其实⾮常多。但是⼀定要通过正则的 ⽅法来限制以使得id类特征不过拟合。

2. id类特征在预测中的命中率可能并不⾼,但这其实也不是问题。因为⼀个特征就是⼀个体系,⼀个体系 化的特征是通过层次化的特征设计来达到命中率和个性化的综合。⽐如说 ⽤户id->⽤户GPS坐标+⽤户喜好 Tag+⽤户最近⾏为->⽤户年龄、⽤户性别。通过分层的,由最细粒度到最粗粒度的特征搭配来保证特征命 中率

3. 组合。单独的id类特征是意义并没有那么⾼,有意义的是不同层次的交叉组合。这取决于业务理解和特 征⼯程⼿法。

4. 模型和算法。实际上,LR是适合使⽤ID类特征的,原因在于LR适合接受超⾼维度的特征输⼊。对于 XGBoost、DNN,这么⾼维度的特征进来,在⼯程和算法上都有挑战。然⽽其实针对这种超⾼维度特征灌 ⼊Tree、NN模型的⽅法,并不难想到,就是Embedding。

 

参考链接:https://www.zhihu.com/question/34819617

正文完
请博主喝杯咖啡吧!
post-qrcode
 1
admin
版权声明:本站原创文章,由 admin 2020-04-04发表,共计1675字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码