机器学习--特征选择

本文转自:


http://blog.csdn.net/linkin1005/article/details/43018827

特征选择是一种及其重要的数据预处理方法。假设你需要处理一个监督学习问题,样本的特征数非常大(甚至 ),但是可能仅仅有少部分特征会和对结果产生影响。甚至是简单的线性分类,如果样本特征数超过了n,但假设函数的VC维确仍然是O(n),那么,除非大大扩展训练集的数量,否则即会带来过拟合的问题。在这样的情况下,可以使用特征选择算法降低特征的数量。

假设样本有n个特征,那么,其有种可能的特征子集,如果特征选择需要去穷举所有种可能的特征子集,对于n比较大的情况,计算的代价太大,无法真正实现。因此可以通过一些启发式算法实现特征的选择。

正向搜索/反向搜索(forward/backwardsearch)

正向搜索的基本思想是:依次在当前集合中加入一个其没有的属性,然后用交叉验证等方法对新的集合进行评估,找出评估结果最佳的属性加入当前集合。不断重复上面的步骤,直到加入任何新的属性都不能提高评估结果算法即告停止。此算法是一个典型的贪心算法,可能找到局部最优的属性集,但是不一定是全局最优。

1.Initialize ;

2.repeat{

(a)   for i=1,…,n

       if ,let  

      then 交叉验证评估特征集 (泛化误差最小的)

(b)    找出步骤(a)中最佳特征子集F

}

3. 找出在整个搜索过程中最佳特征子集。
反向搜索与正向搜索恰恰相反,它是假设所有的特征都在集合内,逐步减少属性,直至找到(局部)最优属性集。
类似前向/后向搜索方法,称为封装模型特征选择算法(wrapper model feature selection algorithm),因为在该方法执行过程中,不断重复的运行学习算法去评估属性集的好坏。封装模型特征选择算法通常比较有效,但是需要反复的运行学习算法,产生大量的计算。事实上,完成一次前向搜索算法,大约需要调用次学习算法。

过滤特征选择(filter feature selection)
过滤特征选择算法也是一种启发式算法,但是在选择特征子集过程中,计算量较少。其基本思想是:制定一个衡量标准S(i),用来衡量每个特征,对标签值y的影响程度,最后再选择得分最高的k个特征值。

其中一种策略是定义S(i)为和y的关联程度,这样可以选择出和结果关联性最高的一批特征。在实际操作中,通常(对于离散值)采用互信息(themutual information)来度量和y的关联程度:

(上面假设了和y都是二值属性)而概率值都可以通过训练样本计算出来。最后,依然可以通过交叉验证的方法,找到使得泛化误差最小的特征数量k。


这可能是最短的一篇,原因是这些笔记主要以 Andrew Ng的机器学习系列课程讲义为基础,所以只介绍了两个维度选择的方法,实际上维度选择的方法有很多(见weka截图),以后等自己掌握了,再补充进来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值