机器学习过程中,特征选择是避免维数灾难和减低学习难度的有效途径。特征选择的过程,即为选择对当前学习任务有用的属性(相关特征)和去除无用属性(冗余特征)的过程。那么,如何选择有用的特征子集以及如何评价相对好的特征子集是特征选择的关键步骤。
1、子集搜索
如果训练样本有
n
个特征,那么特征子集将有
Forward Search
Input:training set D ,features set;
Output:features subsetF ;
start with F=∅ ;
Repeat{
(1)for i=1,2,⋯,n .Try adding feature i toF .
evaluate F∪ { i };
(2)Set F=F∪ {best feature found in (1) }
Output features subset.
以上搜索方式称为前向搜索,在(1)中evaluate的过程我们可以通过交叉验证的方式进行,也可以使用后面提到的子集评价方法直接选择。后向搜索指从完整的特征集开始,每次尝试去掉一个无关特征,以逐渐减少特征的策略进行特征搜索。
2、子集评价
我们通常通过信息增益,信息增益比和基尼指数等指标衡量特征对训练集分类的好坏程度。这里先介绍熵的概念。熵在信息论和统计学中度量随机变量的不确定性。设
X
是一个取有限个值的离散随机变量,其概率分布为
其中 i=1,2,⋯,n .则随机变量 X 的熵定义为:
条件熵:设有随机变量
(X,Y)
,其联合概率分布为
其中 i=1,2,⋯,n;j=1,2,⋯,m .条件熵 H(Y|X) 表示已知随机变量 X 的条件下随机变量
其中, pi=P(X=xi),i=1,2,⋯,n .
信息增益:表示得知特征
X
的信息而使得
一般地,熵 H(Y) 与条件熵 H(Y|X) 之差称为互信息。
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题,为避免这种情况,信息论中引入信息增益比对这一问题进行校正。
信息增益比:特征
A
对训练数据集
其中 HA(D)=−∑ni=1|Di|Dlog2|Di|D , n 是特征
基尼指数:分类问题中,假设有
K
个类,样本点属于第
3、特征选择方法
常用的特征选择方法有过滤式选择(filter)、包裹式选择(wrapper)以及嵌入式选择(embedding),可参见周志华老师的《机器学习》,以上内容我只是为了coding决策树所总结。