【机器学习基础】特征工程常用操作
文章目录
一、数值型特征
常用处理方法:归一化、统计值、离散化(分箱or分桶)、log变化、高次与四则运算特征
1.1 归一化
- 特征归一化能够消除不同特征之间量纲的影响,将所有特征都统一到一个大致相同的数值区间内。这样就使得不同特征之间具有可比性。
- 当通过梯度下降法进行模型求解时,可以降低迭代次数,更快的收敛到最小值。
- 树模型并不需要归一化。
1.2 统计值
可以计算出特征的均值,最大值,最小值等,利用这些信息构造出新的特征。比如,要想判断某人是否购买某一部手机,可以计算出他以往购买的手机的价格最大值(或均值),然后与现在这部手机的价格进行比较,得到一个新的特征。
1.3 离散值
离散化是指将一个数值型的特征分成多个小的区间。然后将每个区间作为一个特征(one-hot)进行表示。
离散化可以将一个线性的问题表示为非线性的问题。
可以举个例子:
在公交车上,上来一个人,你到底让不让座?分析这个问题,有一个特征是年龄(age),当年龄较小或年龄较大时,比如说小于7岁或者大于60岁,你会选择让座。假设我们使用逻辑回归模型来进行预测,那么如果年龄前面的系数是正数,模型会偏爱年龄大的人,就是说年龄越大,让座的可能性越大。反之,当系数为负数时,模型会认为年龄越小,让座的可能性越大。显然这种处理方法是不对的。在这种情况下,我们可以采用离散化的方法来对年龄特征进行处理。
将年龄特征分成多组,比如说“1-7岁”,“8-15岁”……“70岁以上”等,然后将每一个组作为一个特征。经过这样操作之后,每一个人的年龄都可以表示为一个向量。比如6岁的人,表示为[1,0,0,0,0],75岁的人表示为[0,0,0,1],然后,可以将“1-7岁”前的系数设置为负数,表示年龄越小越应该让座。“70岁以上”前的系数设置为正数,表示年龄越大越应该让座。
1.4 log变换
在进行线性回归时,前提假设是预测变量服从正态分布,但是实际中的数据往往不是这样子的,因此,我们需要对预测变量进行log变换,将其变为正态分布。
1.5 高次与四则运算
- 高次:如把x变为x的平方、x的立方等
- 四则运算:比如说:计算两个日期的间隔。预测一个人在网上是否买化妆品,可以将“上一次购买时间与现在时间的差值”作为一个特征来进行预测,时间越长,可能购买的概率越高。
二、类别型特征
注意:除决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归,SVM等模型,类别型特征必须要转换为数值型才能使用。
2.1 序号编码
序号编码通常用来处理类别间具有大小关系的数据
例如,成绩分为‘高,中,低’三档,将其转换为序号后,序号编码会依据大小关系对类别型特征赋予一个数值ID。例如高表示为3,中表示为2,低表示为1。转换后依然保留了大小关系。
2.2 独热向量编码
当类别间不存在大小关系时,可以采用独热向量编码。比如特征“颜色”有“红,黄,蓝”三种,转换为独热向量之后,红表示为(1,0,0),黄表示为(0,1,0),蓝表示为(0,0,1)。经过这样的变换之后,不同类别之间具有同等的地位。但是,如果采用序号编码,将三种颜色表示为1,2,3的话,就会有问题。因此这种编码方式默认了蓝色比其它颜色的数值要大,这是不合理的,这三种颜色应该是平等的。对于类别特别多的特征,在使用独热向量编码时,需注意如下问题:
① 使用稀疏向量存储来节省空间。(因为特征向量只有某一维度取1,其余维度均为0)
② 使用独热向量编码,能够显著的增加特征空间的维度,容易带来过拟合问题。可以配合降维方法来进行特征选择。(一般来讲只有部分特征对分类,预测结果是有帮助的)
2.3 二进制编码
二进制编码分为两步。首先进行序号编码。给每个类别一个ID,然后再将该ID转换为二进制。这种做法的本质在于利用二进制对ID进行映射,最终也得到0/1向量,但是维度显著小于独热向量编码,节省了存储空间。
三、时间类特征
连续值:持续时间、间隔时间
离散值:一周中的第几天,是否为节假日
四、文本类特征
待更新。
五、数据科学比赛常用做法
5.1 特征工程流程
- 结构化比赛中,做特征工程时:
- 可以先利用统计值筛选特征,比如缺失比例大于99%,或者信息量较少的特征;
- 然后再做特征编码,在编码后也可以利用模型去筛选特征。
- 如果原始数据的特征足够有效,就可以不做特征筛选;
- 利用统计值筛选,比模型筛选靠谱点。
5.2 类别编码方法
- 对于类别字段,是one hot、标签编码、频率编码和目标编码都要做吗:
- 先看类别字段的取值空间,如果不大,可以one hot独热编码。
- 通过EDA分析频率编码和目标编码是否足够有区分性,再决定做不做。
5.3 特征交叉
- 根据特征A和特征B,构造新的特征:A+B、A-B、A*B、group(A)[B]等
- 可以从EDA先分析,能分析新特征,和标签存在相关性,则可以做。
5.4 特征筛选
- 基于模型如何筛选特征:排列重要性、shap value、null importance
- 如果筛选后分数下降:考虑保留下来,好的筛选方法筛选结果一般不会对精度有很大影响。
六、缺失值处理
Reference
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/125922451
- 点赞
- 收藏
- 关注作者
评论(0)