首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

特征工程(一)

对于一个机器学习问题,数据和特征往往决定了结果的上线,而模型、算法的选择及优化则是在逐步接近这个上限。

特征工程,就是对原始数据进行一系列工程处理,将其提炼为特征,做为输入供算法和模型使用。

特征工程的目的是去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。

一、特征归一化

数据归一化,使各指标处于同一数值量级,使不同指标之间具有可比性。

归一化的方法:线性函数归一化((对应值-最小值)/(最大值-最小值));零均值归一化(均值为0,标准差为1分布,公式:(对应值 - 均值)/标准差)。

为什么对数值类型的特征做归一化?

例如:两种数值特征,x1~[0,5]   x2~[0,10],使用随机梯度下降时,在学习速率相同的情况下,x1比x2需要较多的迭代才能找到最优解,这个时候训练的话,两种特征对结果的影响就会因为数值范围不同而受影响。但是将两种数值特征归一化到相同的数值区间后,他们的迭代速度就是一样的,对最后结果的影响就不会因为数值范围不同而有影响。

数据归一化不是万能的,通过梯度下降法求解的模型通常是需要归一化的,包括线性模型、逻辑回归、支持向量机、神经网络等模型。但是决策树就不适用。比如c4.5,节点分裂时,选择的依据是信息增益比。而信息增益比与是否归一化无关。

二、类别型特征

类别型特征(比如性别):原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型,类别型特征必须经过处理转换成数值型特征才能正确工作。

在对数据进行预处理时,应该怎样处理类别型特征?

序号编码

独热编码

二进制编码

序号编码:用于处理类别间具有大小关系的数据。比如成绩:92,91,90。序号分别表示为3,2,1。转换后依然保留了大小关系。

独热编码:用于处理类别间不具有大小关系的特征。例如:血型,一共4个取值。独热编码将其转化为一个4维稀疏向量。A型血表示为(1,0,0,0),B型血表示为(0,1,0,0),AB型血表示为(0,0,1,0),O型血表示为(0,0,0,1)。对于类别取值较多的情况下使用独热编码需要注意两个问题:1. 使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置取值均为0,因此可以用向量的稀疏表示有效的节省空间,并且大部分的算法均接受稀疏向量形式的输入。2.配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在k近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。

二进制编码:先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。本质上是利用二进制对 ID 进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。例如:对四种血型的表示为:A型血是001,B型血是010,AB型血是011,O型血是100。

还有很多其他的编码方式:如Helmert Contrast、Sum Contrast、Polynomial Contrast、Backward Difference Contrast。

向量的稀疏表示: 向量(1, 0, 0, 1, 3, 0)  密集表示:[1, 0, 0, 1, 3, 0]。稀疏表示:(6, [0, 3, 4], [1, 1, 3])   6表示向量的长度,[0, 3, 4]表示的是有值的索引组成的数组,[1, 1, 3]表示的是不为0的值组成的数组。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200913A0AIPV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券