本文共 1051 字,大约阅读时间需要 3 分钟。
特征交叉是通过组合两个或更多个特征而形成的合成特征, 通过特征组合的方式增加特征的维度,以求得更好的训练效果。
如下图,无法用一条直线来对两组数据进行分类。
但是如果我们如果增加一个组合特征x1x2,得到分类图如下,下图我们就可以很好对两个类型的数据进行分类了。
[A X B]
: 2个特征相乘形成的组合特征[A x B x C x D x E]
: 5个特征相乘形成的组合特征[A x A]
: 通过单个特征的平方形成的组合特征在房价预估中可能涉及到经纬度特征,通过分档编程下面:
binned_latitude(lat) = [ 0 < lat <= 10 10 < lat <= 20 20 < lat <= 30]binned_longitude(lon) = [ 0 < lon <= 15 15 < lon <= 30]
那现在我们想基于经度和纬度创建一个组合特征,那么就会形成2*3=6个特征值,类似于下面:
binned_latitude_X_longitude(lat, lon) = [ 0 < lat <= 10 AND 0 < lon <= 15 0 < lat <= 10 AND 15 < lon <= 30 10 < lat <= 20 AND 0 < lon <= 15 10 < lat <= 20 AND 15 < lon <= 30 20 < lat <= 30 AND 0 < lon <= 15 20 < lat <= 30 AND 15 < lon <= 30]
然后我们在使用时候,对这6个值进行0ne-hot编码即可。
在这里要注意一点,不一定组合特征对模型训练有帮助,具体哪个组合特征有意义要根据实际训练来确定。
这种暴力做交叉很可能导致特征稀疏的问题,这里可以参考FM、FMM以及阿里妈妈发布的MLR的做法和解决思路。
(Factorization Machine)主要目标是:解决数据稀疏的情况下,特征怎样组合的问题。
FMM: 在FM模型中,每一个特征会对应一个隐变量,但在FFM模型中,认为应该将特征分为多个field,每个特征对应每个field 分别有一个隐变量。特别说明: 以上第三点引自于CSDN博客专家
转载地址:http://lekai.baihongyu.com/