特征工程小记

特征和数据是结果的上限,模型只是接近结果上限的路径。

特征归一化

①算法结果往往偏向于数值差别大的特征,常常会对做数据无量纲化处理。
②如下图,未归一化的特征方向上图形教长,使用梯度下降时,达到最优解的速度会更慢。在这里插入图片描述
③特征归一化大多数情况下是非常有用的,但是有的模型却不需要这样做。例如:朴素贝叶斯、决策树,他们都是概率模型,只与数据分布有关,与数值大小无关。

类别特征编码

除了决策树等少数模型外,多数模型不能输入类别特征,常见的类别特征编码有:

  • 序号编码:适用于各个编号间有大小、等级关系,如高中低、上中下
  • 独热编码(one-hot):对每个特征取值构造一个特征,该维度的值为1,其余取值构造的特征维度为0。类别值较多时需要注意的问题 :
    • 类别值较多,one-hot构造的特征维度较多,会占用大量的内存。可以用稀疏向量来表示所构造的维度特征以有效节约内存空间。sklearn中的onehot可以用sparse参数来控制。
    • 类别值较多通常会带来三个问题:高维空间中距离度量困难(如KNN等聚类算法需要度量距离、SVM的间隔距离度量)、过拟合(特征多了,通常都会过拟合,一般需要数据数量为特征的10倍以上才能获得较好的结果)、特征冗杂(通常只有部分特征是有效的,对结果有帮助)。故我们可以对其进行特征选择。
  • 二进制编码:相当于把序号编码中的序号转换为二进制,如总的有5种类别,则2转换为010,5转为101。从数值上看也许你觉得她仍然是有大小关系的,实际上这样会构造了三列特征,每列特征上的数值只有0和1,是没有明显的大小关系的。从一定程度上减少了内存占用、减弱了编号间的大小关系。
  • 平均数编码:是一种专门针对类别特征取值特别多的一种特征处理方案。主要思想是:目标总共有C个类,构造C-1个特征,计算每一种取值属于每个类的概率作为对于构造特征的编码值。概率为先验概率和后验概率的线性组合,权重因子根据实际情况做调整。只构造C-1个特征的原因是:所有概率和为1,知道了C-1个就知道第C个的概率。具体可以参考http://www.bewindoweb.com/217.htmlhttps://zhuanlan.zhihu.com/p/26308272

特征组合

很多时候我们仅仅使用获得的原始特征不能得到很好的结果,例如用户、商家,他们分别是一种特征,但是不同的用户有不同的商家偏好、不同的商家面向不同的用户群体,所以我们需要联合用户和商家特征来构造特征以更好的刻画用户。通常的特征取值较少的时候,这样直接结合的方式感觉太完美了,但是如果特征取值很多的时候就会出现问题。例如推荐系统中用户和商家的数据是都是很大的,两两结合构成的维度是M*N,M为商家数、N为用户数,构造的特征会占用特别大的内存空间、同时对模型的运算能力要求极大的增加以至于很可能无法学习。很多商家或者用户群体他们都有很相似,山寨模仿嘛。这个时候我们可以把用户和商家聚类成低纬度的特征,再做特征组合。另外我们也可以对用户和商家的特征进行降维再做特征组合。

有效的构造特征组合

即使我们像上面那样在构造特征组合前对特征做了处理,但仍然会有产生很多的冗杂特征。一种处理方法是根据业务知识选择哪些特征来做组合。一种方法是利用GBDT等决策树做特征组合:决策树的一条路径就是一个规则,则把一条路径上的特征作为一个组合,但是由于仅仅用一条规则来组合,并不能包含把两个特征可能组成的所有组合。由于GBDT等梯度提升树的下一棵树是建立在上一课树的残差上,故我们可以使用梯度提升树来构造特征组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值