打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(1)机器学习中的特征选择问题

机器学习中,特征选择是特征工程中的重要问题(另一个重要的问题是特征提取),坊间常说:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程尤其是特征选择在机器学习中占有相当重要的地位。

强烈推荐一篇博文,说如何进行特征选择的:

http://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

下面进入正题(一下内容属于半成品,还在修改中.....)

对于一个训练集,每个记录包含两部分,1是特征空间的取值,2是该记录的分类标签

一般情况下,机器学习中所使用特征的选择有两种方式,一是在原有特征基础上创造新特征,比如决策树中信息增益、基尼系数,或者LDA(latentdirichletallocation)模型中的各个主题,二是从原有特征中筛选出无关或者冗余特征,将其去除后保留一个特征子集。

本文详细说下第二种方法。

一般来说,进行特征集选择有三条途径,filter,wrapper,所谓filter就是衡量每个特征的重要性,然后对其进行排序,筛选的时候或者选择前N个,或者前%X。

常用于衡量特征重要程度的方法,PCA/FA/LDA(linear discriminalanalysis)以及卡方检测/信息增益/相关系数

而wrapper是将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题,这里有很多的优化算法可以解决,比如GA/PSO/DE/ABC[1].

下面举一个例子来说一下特征选择

数据集中的每个特征对于数据集的分类贡献并不一致,以经典iris数据集为例,这个数据集包括四个特征:

sepal length,sepal width,petal length,petal width,

有三个分类,setoka iris,versicolor iris和virginica iris

这四个特征对分类的贡献如下图所示:



可见,petalwidth and petal width比sepallength和width在分类上的用处要大得多(因为后者在训练集上的重叠部分太多了,导致不好用于分类)。

下面我们做几个测试,使用四个特征集

第一个:所有特征

Accuracy: 94.44% (+/- 3.51%), all attributes
第二个:两个特征,petal width and petal width,虽然准确率和第一个没区别,但方差变大,也就是说分类性能不稳定
Accuracy: 94.44% (+/- 6.09%), Petal dimensions (column 3 & 4)使用PCA方法,从新特征中找出权重TOP2的,
Accuracy: 85.56% (+/- 9.69%), PCA dim. red. (n=2)使用LDA(不是主题模型的LDA)方法,从新特征中找出权重TOP2的,
Accuracy: 96.67% (+/- 4.44%), LDA dim. red. (n=2)

那么我们忍不住问一个问题,是不是选择全部特征集,模型准确率最高,如果不是这样,蛮究竟选择什么样的特征集时准确率最高?

这里有一个图,横轴是所选择的特征数目,纵轴是交叉验证所获得的准确率,从中可以看到,并非选择了全部特征,准确率最高,当少数几个特征就可以得到最高准确率时候,选择的特征越多,反倒画蛇添足了。


PS两块小内容:(1) 如何进行交叉验证

将数据集分为训练集和验证集,各包含60%和40%的数据。

注意:在训练集上对模型参数进行训练后,用验证集来估计准确率时只能使用一次,如果每次训练模型参数后都使用这个验证集来估计准确率,很容易导致过拟合。

如果我们使用4-fold交叉验证的话,其过程如下,最终错误率取4次的平均值,以表现我们模型的泛化能力。



(2) 决策树的特征选择汇总:

在决策树部分,三类经典决策树模型的主要区别在于其用于分类的属性不同,也即特征选择不同

ID3:信息增益

C4.5:信息增益率,

附加一句,C4.5之所以用信息增益率,也即gr(D,A)=g(D,A)/H(A),是因为ID3中,所以如果是取值更多的属性, 更容易使得数据更纯 ”,其信息增益更大,决策树会首先挑选这个属性作为树的顶点。结果训练出来的形状是一棵庞大且深度很浅的树,这样的划分是极为不合理的。而H(A),也即数据D在属性A上的熵值,随着A可取值类型的增加而变大,所以可以用H(A),作为惩罚因子,从而减少取值更多属性的目标函数值,进而避免生成树的深度很浅。

CART :基尼系数

 

主要参考文献:

[1]http://blog.csdn.net/google19890102/article/details/40019271

[2]http://nbviewer.ipython.org/github/gmonce/scikit-learn-book/blob/master/Chapter4 - Advanced Features - Feature Engineering and Selection.ipynb

[3]http://nbviewer.ipython.org/github/rasbt/pattern_classification/blob/master/machine_learning/scikit-learn/scikit-pipeline.ipynb#Linear-Discriminant-Analysis-(LDA)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R语言判别分析
ML之DR:基于鸢尾花(Iris)数据集利用多种降维算法(PCA/TSVD/LDA/TSNE)实现数据降维并进行二维和三维动态可视化应用案例
不容忽视!机器学习中的特征选择初探【sklearn实战】
R语言实现有限混合模型建模分析
手把手教你学习R语言~
select函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服