一、目标:
本文总结在机器学习过程特征选择的一些技术,只是一个概述。机器学习的特征选择的技术有很多,每种技术使用的条件和阶段都不一样。本文主要是比较各个技术的不同。
二、寻找特征阶段:
这个部分网上很多资料:http://www.cnblogs.com/stevenlk/p/6543628.html
当你拿到一个问题,有很多的属性,此时你并不知道哪些是特征。
- 特征特点
特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除移除低方差法外,本文介绍的其他方法均从相关性考虑。
根据特征选择的形式又可以将特征选择方法分为3种:
- 提取特征的方法
Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
- 特征选择主要有两个目的:
减少特征数量、降维,使模型泛化能力更强,减少过拟合;
增强对特征和特征值之间的理解。
拿到数据集,一个特征选择方法,往往很难同时完成这两个目的。通常情况下,选择一种自己最熟悉或者最方便的特征选择方法(往往目的是降维,而忽略了对特征和数据理解的目的)。
三、特征抽取:
这主要是对文本特征的操作,把文本特征转化为数字信号。
1,对类别特征:及这个特征代表的是一个类别,并没有实际的数值意义。
此时可以用0/1的形式表示,在sklearn中用DictVectorizer处理。这种方法也称one-hot编码。
2,对纯文本:对纯文本可以用词频(tf)或者用(tf-idf)进行表示
(sklearn用CountVectorizer和TfidfVectorizer处理)
四,特征筛选:这部分是对选出特征后,对特征进行筛选,选出好的特征,去掉一些线性相关的特征。
1,不改变特征值,和属性名称的筛选:只是对原有的特征进行筛选。(sklearn用SelectPercentile处理)
2,降维:属性值和属性的解释都改变了。主要有PCA(主成分分析)和因子分析。
主成分分析的原理是高维进行压缩成低维,找到特征主轴方向,变化的主方向。发现是XTX的特征向量(也可以用奇异值分解实现主成分分析)。
因子分析的原理是用低维构造高维数据:自己得先定义数据的主要因子的维度。然后通过参数估计(em算法)求得因子载荷矩阵,和特殊因子矩阵。