写在开头:刚开始接触机器学习,选择了周志华教授的《机器学习》作为入门教材,很不错的书籍,受益良多。没有使用matlab去编写代码,而是选择了使用python的scikit-learn的开发包,大致看了一下开发包的特征选择方法,结合周志华教授的书,想先总结总结feature selection的方法
特征选择
filter(过滤式)
思路
通过评估自变量与目标变量之间的关联,也就是量化两者之间的关系,我们暂且叫做量化值为“相关统计量”,然后根据相关统计量,找出相关性较强的k个自变量。
如何量化两者的关联
通常有相关系数,卡方检验,信息增益,和互信息
结合scikit-learn
1.Removing features with low variance
移除变量中变化较小的,一般用于自变量为离散型时,某个变量在n个样本中取相同的值的频率大于既定的阈值的时候,我们直接删除
2.Univariate feature selection
单变量特征选择,其中涉及到的函数最主要的两个是SelectKBest,SelectPercentile,一个选择前k个,一个选择前k%个。其中涉及到的量化方式主要有:chi2(卡方检验),f_classif,f_regression前两个用于分类,后一个用于回归。
还有几个看不懂的SelectFpr,SelectFdr,SelectFwe还没用到就没有深究。
wrapper(包裹式)
思路
直接将原始数据拿去训练,然后评估其性能,在选择其所有子集,递归着不断重复,直到最后找到性能最好的特征子集。