在有的时候,我们需要学习出特征在分类器中所占的比重,例如判断某个人是否具有贷款资格,特征收入应该比年龄要更重要一些,那么具体重要多少,我们可以通过训练数据学习出来。
第一个办法可以借鉴决策树中特征选择的思想,以贷款为例,特征向量={年龄,收入,有房子,婚否}。通过计算每个特征
Ai
在训练数据集下的信息增益:
gi(D,Ai)=H(D)−H(D|Ai),i=1,2,3,4
得到四个信息增益值,对其做归一化处理,可得每个特征所占的权重:
wi=gi(D,Ai)∑i=14gi(D,Ai)
第二个办法借鉴投票机制,选择一种分类模型,分别训练出该特征下的分类器,并在测试集中验证正确率,以训练SVM分类器为例,
1、在训练数据集D下分别训练出四个SVM分类器,每个分类器都是关于单特征的分类器,如分类器
S1
是关于单特征年龄的;
2、在测试集
Dt
下分别测试四个分类器的分类效果,并统计正确分类个数
counti,i=1,2,3,4
分别表示四个特征下的正确分类数;
3、对第二步求出的
counti
做归一化处理,即可得到特征的权重
wi=counti∑i=14counti
。
基于投票机制,还可以考虑利用缺一法来求得特征权重,过程如下:
1、在训练数据集D下,分别训练缺少了第
i
个特征的分类器,如分类器
S1
的特征为{收入,有房子,婚否};
2、在测试集
Dt
下分别测试四个分类器的分类效果,并统计错误分类个数
counti,i=1,2,3,4
分别表示四个特征下的错误分类数。
3、对第二步求出的
counti
做归一化处理,即可得到特征的权重
wi=counti∑i=14counti