机器学习之:特征向量选取

来源:互联网 发布:ubuntu最低配置 编辑:程序博客网 时间:2024/05/01 18:49

本系列介绍机器学习中的在实际应用和理论研究中的一些重要的方向。这些文章能给大家起到抛砖引玉的作用。一些细节或者深入的讨论可在每篇博文最后列出的文献中找到。本篇博文介绍特征向量选取。在机器学习中, 特种向量选取是整个机器学习系统中非常重要的一步。


假设特征向量总共有d个,那么选取这d个向量中重要的特征向量就有2^d种组合。很显然,穷举法是无法进行的,特别是当d的数目非常大的时候。特征向量选取大致可以分为两种:1.过滤法(filter method); 2. 封装法(wrapper method)[1]。 过滤法是与后续的分类方法相独立的,而封装法是依赖于后续的分类方法。总体让来说,过滤法高效与封装法。而封装法通常会有更好的效果。以下特征向量选取与特征向量提取以及sparse coding等相关问题的对比介绍。

 

1. 特征向量选取 VS. 特征向量提取


请注意特征向量的选取有别于特征向量提取。前者的英文是feature selection, 而后者是feature extraction. 特征向量提取是直接作用于原始数据上的。比如,给定一组文档,我们的任务是要做文档分类。直接将文档输入给分类器是无法工作的,因为每篇文档有不同的字不一样,字的数目也不一样。而绝大多数的分类器只是接受标准化的矩阵格式的输入,比如每一行是一篇文档,每一列是文档的属性(特征)。 将原始文档转化为标准的矩阵格式输入的过程就可看作是特征向量提取。特征向量提取之后,通常特征向量的个数非常多,并且包含有很多没有用的特征(或者说对后边的分类器没有用),也包含了许多冗余的特征向量。此时,从特征向量提取后所得的特征向量中,选择对分类器最有用的和最重要的特征向量的过程就叫做特征向量选取。

2. 非线性特征向量选取 VS Sparse coding

如今比较火的机器学习的算法(LASSO,Sparse SVM等)在实现预测的同时,也声称可以实现特性向量选取。其实质便是在特征向量的权重系数上加上了l0-norm或者更便于计算的l1-norm。 即所谓的sparse coding的技术。类似的方法还有dictionary learning 和factorization model。尽管dictionary learning 和factorization model当中的dictionary/basis已经不是原始的特征向量,但是他们在学dictionary/bais的系数时,也是采用了sparse coding的约束。 但是,值得一提的是这些方法在提取特征向量时,只能挖掘特征向量之间的线性关系。当特征向量具有非线性相关的时候,这一类方法便失去了功效。

最经典的特征向量非线性相关的例子便是XOR问题(如下图所示)。特征向量X1和X2单独来看的话,他们对于区分class1和class2都不起作用。因此他们对于sparse coding的方法,都将被视为是不相关的特征向量。然而,对于非线性特征向量选取的方法(文献【1】【2】),特征向量X1和X2将被联合起来一起分析其重要程度,因此他们都将被选作重要的特征向量。

 

 

后续及参考文献

 

关于特征向量选取的系统介绍,看参考Jianbo Yang的博士论文。此人 (http://people.duke.edu/~jy118/) 现在在杜克大学做博后 。对于过滤法和封装法他都提出过自己的方法。其中封装法与神经网络,支持向量机做结合。其研究成果发表于TNN和KDD等期刊与会议。



[1] Jian-Bo Yang, “Feature selection and model selection for supervised learning algorithms” PhD Thesis, 2011.
[2] Guyon and A. Elisseeff. "An introduction to variable and feature selection".Journal of Machine LearningResearch, 2003


原创粉丝点击