一.数据处理
1.对已有的特征进行数值转化,将非数值的数据转换为数值型。常用方法使用LableEncoder,One-hot编码。
2.对特征进行直方图的展示,判断特征值是连续还是离散的。
3.对特征缺失值进行处理,常用的方式:删除缺失样本(使用的较少)、补值(使用0,Nan,平均值,众数,中 位数 等)、不做处理(有些模型可以处理空值)。
4.处理异常特征值,使用箱型图可以明显看出异常值的分布。对于异常数据采取的方式,舍弃样本、当作缺失值处理、可用前后两个观测值的平均值修正该异常值(平均值修正)。
5.对定量特征进行二值化处理,定量特征二值化的核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。
6.数据分区,有时候,将连续型变量转换成类别呈现更有意义,同时能够使算法减少噪声的干扰,通过将一定范围内的数值划分成确定的块。
7.特征值的缩放,有时候特征的值的跨度有很大的不同,通过将特征值缩放到同一数量级。便于计算特征之间的相互关系,也可以避免某些特征获得大小非常悬殊的权重值。
8.Categorical特征常被称为离散特征、分类特征,数据类型通常是object类型,而我们的机器学习模型通常只能处理数值数据,所以需要对Categorical数据转换成Numeric特征。
Categorical特征又有两类,我们需要理解它们的具体含义并进行对应的转换。
Ordinal 类型(顺序变量):这种类型的Categorical存在着自然的顺序结构,如果你对Ordinal 类型数据进行排序的话,可以是增序或者降序,比如在学习成绩这个特征中具体的值可能有:A、B、C、D四个等级,但是根据成绩的优异成绩进行排序的话有A>B>C>D
Nominal类型:这种是常规的Categorical类型,不能对Nominal类型数据进行排序。比如血型特征可能的值有:A、B、O、AB,但你不能得出A>B>O>AB的结论。
对于Ordinal和Nominal类型数据有不同的方法将它们转换成数字。
对于Ordinal类型数据可以使用LabelEncoder进行编码处理,例如成绩的A、B、C、D四个等级进行LabelEncoder处理后会映射成1、2、3、4,这样数据间的自然大小关系也会保留下来。
对于Nominal类型数据可以使用OneHotEncoder进行编码处理
二.特征选择
定义:从给定的特征集合中选出相关特征子集的过程称为特征选择(feature selection)。
对于一个学习任务,给定了属性集,其中某些属性可能对于学习来说很关键,但有些属性意义就不大。
对当前学习任务有用的属性或者特征,称为相关特征(relevant feature);
对当前学习任务没用的属性或者特征,称为无关特征(irrelevant feature)。
特征选择可能会降低模型的预测能力,因为被剔除的特征中可能包含了有效的信息,抛弃这部分信息一定程度上会降低模型的性能。但这也是计算复杂度和模型性能之间的取舍:
如果保留尽可能多的特征,模型的性能会提升,但同时模型就变复杂,计算复杂度也同样提升;
如果剔除尽可能多的特征,模型的性能会有所下降,但模型就变简单,也就降低计算复杂度。
方式:
1.对于连续值,可以计算Pearson系数,系数的取值在[-1,1],如果相关系数为0,则表示特征之间的相关兴小(线性相关度小)。对于相关性大的两个特征,如果都作为特征就可能就会存在信息冗余。
2.对于二分类数据,可以计算Pointbiserialr系数。
3.对于顺序变量,可以计算spearman系数。
4.方差选择法,使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。方差小的特征包含的信息弱。
5.相关系数法使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的 P 值。(类似上述系数的计算)
6.卡方检验,经典的卡方检验是检验定性自变量对定性因变量的相关性。
7.互信息法,经典的互信息也是评价定性自变量对定性因变量的相关性的。
8.子集搜索:
给定特征集合 A={A1,A2,…,Ad} ,首先将每个特征看作一个候选子集(即每个子集中只有一个元素),然后对这 d 个候选子集进行评价。
假设 A2 最优,于是将 A2 作为第一轮的选定子集。
然后在上一轮的选定子集中加入一个特征,构成了包含两个特征的候选子集。
假定 A2,A5 最优,且优于 A2 ,于是将 A2,A5 作为第二轮的选定子集。
…
假定在第 k+1 轮时,本轮的最优的特征子集不如上一轮的最优的特征子集,则停止生成候选子集,并将上一轮选定的特征子集作为特征选择的结果。
对于子集的评价,是计算子集的信息增益的大小。
( 特征取值已经去除量纲的影响,或者说已经做过归一化处理 )
基于统计量的特征选择,因为没有模型的参与,计算起来相对简单,可以作为一个特征预处理的过程。
基于模型的方法,要对模型参数进行学习,因此计算量相对较大;但也更接近于最终目标,即训练出一个泛化能力很好的模型。训练模型来筛选特征,比如带L1或L2惩罚项的Linear Model、Random Forest、GBDT。因此,这两种方法可以结合起来使用。
常用方式:
1.方差选择法,选择特征值本身方差大的特征
2.卡方校验,卡方检验是检验 定性自变量 对 定性因变量 的相关性
3.特征选择看做一个特征子集搜索问题,筛选各种特征子集。首先全部特征训练模型,再逐步的删除特征,直到auc得分不再上升。
