欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

特征工程

程序员文章站 2022-05-25 16:51:32
...
1.什么是特征工程
  顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。特征工程是指从原始数据转换为特征向量的过程。

2.特征工程作用
  在业界广泛流传一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

(1)特征越好,灵活性越强

只要特征选得好,即使是一般的模型(或算法)也能获得很好的性能,因为大多数模型(或算法)在好的数据特征下表现的性能都还不错。好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护。

(2)特征越好,构建的模型越简单

有了好的特征,即便你的参数不是最优的,你的模型性能也能仍然会表现的很nice,所以你就不需要花太多的时间去寻找最有参数,这大大的降低了模型的复杂度,使模型趋于简单。

(3)特征越好,模型的性能越出色

显然,这一点是毫无争议的,我们进行特征工程的最终目的就是提升模型的性能。

3.特征工程流程

3.1 数据预处理

3.1.1 无量纲化
  无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。

1)标准化

  标准化需要计算特征的均值和标准差,公式表达为:
特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 


2)区间缩放法

  区间缩放法的思路有多种,常见的一种为利用两个最值进行缩放,公式表达为:

特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 


3.1.2 对定量特征二值化
   定量特征二值化的核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0,公式表达如下:

特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 


3.1.3 对定性特征哑编码(OneHotEncoder)
  对无序离散值进行OneHot编码处理

3.1.4 缺失值处理
  对缺失值填写默认值,均值,中位数等处理方法

3.1.5 处理极端离群值
   对极端值,如取对数、限制最大最小值等方法

3.1.6 数据变换
   常见的数据变换有基于多项式的、基于指数函数的、基于对数函数的。4个特征,度为2的多项式转换公式如下:

特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 


3.2 特征变换

3.2.1 特征组合

1)将多个特征进行数值运算
    如对特征进行加,减,乘,除

2)特征交叉
  对多个特征进行交叉组合,或做交,并,补,笛卡尔集等运算


3.2.2 降维

  高维情形下经常会碰到数据样本稀疏、距离计算困难的问题(称为 “维数灾难”),解决方法就是降维。

常用的降维方法有

主成分分析法(PCA)
核化线性降维(KPCA)
主成分回归(PCR)
偏最小二乘回归(PLSR)
萨蒙映射
多维尺度分析法(MDS)
投影寻踪法(PP)
线性判别分析法(LDA)
混合判别分析法(MDA)
二次判别分析法(QDA)
灵活判别分析法(Flexible Discriminant Analysis,FDA
ICA (Independent component analysis,独立成分分析)


3.3 特征选择

  当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:

1) 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
2) 特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除方差法外,本文介绍的其他方法均从相关性考虑。
  
    根据特征选择的形式又可以将特征选择方法分为3种:

Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣

3.3.1 Filter过滤法
1) 方差选择法
    使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征

2) 相关系数法

  使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下:

3) 卡方检验
    经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:
   
特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 

右侧的X^2代表卡方值,卡方值=[(观测值O-期望值E)/期望值E]所有的组别的累加。

例子:

特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 

假设一果农场,今年水果产量记为观察值,往年产量记为期望值,所生成的四格表如上图所示。

计算:

卡方值X^2=(28-20)^2/20+(38-30)^2/30+(34-50)^2/50=10.45
因此卡方值的话是10.45
卡方值再与卡方鉴定表相比较,如果卡方值<鉴定表中值可以得到:
H0:行分类变量与列分类变量无关联
如果卡方值>鉴定表中值可以得到:
H1:行分类变量与列分类变量有关联

4) 互信息法

  经典的互信息也是评价定性自变量对定性因变量的相关性的,互信息计算公式如下:

特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 

    使用互信息理论进行特征抽取是基于如下假设:在某个特定类别出现频率高,但在其他类别出现频率比较低的词条与该类的互信息比较大,通常用互信息作为特征词和类别之问的测度,如果特征词属于该类的话,它们的互信息量最大.


3.3.2 Wrapper包装法

1) 递归特征消除法
    递归消除特征法使用一个基模型(这个模型可以是 lr 或者 decisionTree)来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练,这样在每一轮训练过程中消除掉一些权重较小的特征直至训练结束

3.3.3 Embedded嵌入式法

1) 基于惩罚项的特征选择法
    使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维
    L1正则化/Lasso
    L2正则化/Ridge regression
    L1正则化是指权值向量w中各个元素的绝对值之和,通常表示为|w||1
    L2正则化是指权值向量w中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号),通常表示为||w||2
    L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
    L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合

2) 基于树模型的特征选择法
    树模型中GBDT也可用来作为基模型进行特征选择

4.总结

特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 

良好特征的特点包括

避免很少使用的离散特征值:良好的特征值应该在数据集中出现大约 5 次以上
最好具有清晰明确的含义
良好的浮点特征不包含超出范围的异常断点或 “神奇” 的值
特征的定义不应随时间发生变化

参考文献:
https://blog.csdn.net/jerry81333/article/details/52747892
http://www.cnblogs.com/jasonfreak/p/5448385.html
https://feisky.xyz/machine-learning/basic/feature-engineering.html
https://blog.csdn.net/Dream_angel_Z/article/details/49388733
https://www.deeplearn.me/1470.html
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 888 Bytes
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 1.7 KB
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 2.3 KB
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 4.3 KB
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 7.1 KB
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 2.6 KB
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 38.5 KB
  • 特征工程
            
    
    博客分类: 机器学习 特征工程机器学习特征变换特征处理特征选择 
  • 大小: 134.6 KB