在业界广泛流传着一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。 由此可见,数据和特征是多么的重要,而在数据大多数场景下,数据已经就绪,不同人对于同样的数据处理得到的特征却千差万别,最终得到的建模效果也是高低立现。从数据到特征这就要从特征工程说起了...

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

 由此可见,数据和特征是多么的重要,而在数据大多数场景下,数据已经就绪,不同人对于同样的数据处理得到的特征却千差万别,最终得到的建模效果也是高低立现。从数据到特征这就要从特征工程说起了...

0. 特征工程

    首先介绍下,特征工程是什么:利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程[1.wiki]。特征工程是一个较大领域,它通常包括特征构建、特征提取和特征选择这三个子模块,重要性排序:特征构建>特征提取>特征选择。

    先来介绍几个术语:

  • 特征构建:从原始数据中构建出特征,有时也称作特征预处理,包括缺失值处理、异常值处理、无量纲化(标准化/归一化)、哑编码等。
  • 特征提取:将原特征转换为一组具有明显物理意义或统计意义或核的新特征。
  • 特征选择:从特征集合中挑选一组最具统计意义的特征子集。

    其中本文主要总结下可统一用于特征降维的特征提取和特征选择技术方法,特征构建涉及技术点较少,下回再分解。

1. 特征降维

WHAT:将高维空间的特征通过删减或变换转为低维空间特征

WHY:降低时间/空间复杂度、降低提取特征开销、降噪、提升鲁棒性、增强可解释性、便于可视化;

HOW:主要有两种方式,即特征选择和特征提取。

1.1 特征选择(子集筛选):

特征选择方法主要分为三种:

  • Filter:过滤式;按权重排序,不涉及到学习器,排序规则一般有方差法、相关系数法、互信息法、卡方检验法、缺失值比例法(注意受范围影响的方法需先归一化)[2.zhihu]
    • 方差法:计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。可使用sklearn.feature_selection库的VarianceThreshold类来实现。
    • 缺失值比例法:计算各个特征的缺失值比例,将缺失值比例较大的特征过滤掉。
    • 相关系数法:计算特征与输出值的相关系数以及相关系数的 P值(常见的有:皮尔森相关系数用于数值特征的线性检验,秩相关系数用于类别特征的单调性检验)。
    • 互信息法:计算定性特征与输出值的相关性(运用了信息熵理论),决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
      •   数据挖掘篇——特征工程之特征降维_数据库 
    • 卡方检验法:对于每个特征与输出值,先假设独立,再观察实际值与理论值的偏差来确定假设的正确性,即是否相关。
  • Embedded:嵌入式;确定模型过程中自动完成重要特征挑选,基于惩罚项如岭回归(L2正则)、LASSO(L1正则),基于树模型如GBDT、决策树[3.cnblog]
  • Wrapper:封装式;用学习器的性能评判不同特征子集的效果,特征子集生成方式:完全搜索(前向&后向)、启发式搜索、随机搜索[3.cnblog]

1.2 特征提取(投影or转换):

  • 线性方法[4.csdn]
    • PCA:主成分分析;理论:通过正交变换将原始的 n 维数据集变换到一个新的被称做主成分的数据集中,变换后的结果中第一个主成分具有最大的方差值;
      • 特点:无监督,尽量少维度保留尽量多原始信息(均方误差最小),期望投影维度上方差最大,不考虑类别,去相关性,零均值化,丧失可解释性
    • ICA:独立成分分析;将原特征转化为相互独立的分量的线性组合;PCA一般作为ICA的预处理步骤[5.zhihu]
    • LDA:线性判别分析,有监督,尽可能容易被区分(高内聚、低耦合)[6.cnblog]
    • SVD:奇异值分解,可用于PCA、推荐、潜在语义索引LSI,可并行,可解释性不强
  • 非线性方法:
    • LLE:局部线性嵌入,非线性降维(基于图),保持原有流行结构
    • LE:拉普拉斯特征映射,非线性(基于图),相互有联系的点尽可能靠近
    • t-SNE:t分布随机临近嵌入,将欧几里得距离转为条件概率表达点与点之间的相似度[7.datakit]
    • AE:自动编码器
    • 聚类

 

特征降维方法对比先介绍到这里,更多内容后续继续分解~

转载请注明出处:数据挖掘篇——特征工程之特征降维https://www.cnblogs.com/webary/p/12498886.html

 

参考链接:

1.wiki:https://en.wikipedia.org/wiki/Feature_engineering

2.zhihu:https://www.zhihu.com/question/28641663

3.cnblog:https://www.cnblogs.com/pinard/p/9032759.html

4.csdn:https://blog.csdn.net/yujianmin1990/article/details/48223001

5.zhihu:https://www.zhihu.com/search?type=content&q=PCA%20ICA

6.cnblog:https://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html

7.datakit:http://www.datakit.cn/blog/2017/02/05/t_sne_full.html