MATLAB中的特征选择方法?

时间:2010-06-15 18:25:17

标签: matlab machine-learning classification

我正在尝试用MATLAB中的SVM进行一些文本分类,并且真的想知道MATLAB是否有任何特征选择方法(Chi Sq。,MI,....),因为我想尝试各种方法和保持最好的方法,我没有时间实现所有这些。这就是为什么我在MATLAB中寻找这样的方法。任何人都知道吗?

4 个答案:

答案 0 :(得分:3)

svmtrain

MATLAB还有其他用于分类的工具,如cluster analysisrandom forests等。

如果您没有svmtrain所需的工具箱,我建议LIBSVM。它是免费的,我已经使用了很多,效果很好。

答案 1 :(得分:2)

统计工具箱有sequentialfs。另请参阅feature selection上的文档。

答案 2 :(得分:2)

类似的方法是dimensionality reduction。在MATLAB中,您可以轻松执行PCAFactor analysis

或者,您可以采用包装器方法进行功能选择。您可以通过每次获取一部分特征来搜索特征空间,并使用您决定的任何分类算法(LDA,决策树,SVM,...)来评估该子集。您可以详尽地执行此操作,也可以使用某种启发式方法来指导搜索(贪婪,GA,SA,...)

如果您可以访问 Bioinformatics Toolbox ,它有一个randfeatures功能可以执行类似的操作。甚至还有几个cool demos个实际用例。

答案 3 :(得分:0)

这可能会有所帮助:

有两种方法可以选择分类中的功能:

  1. 使用libsvm工具目录(http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#feature_selection_tool
  2. 中的fselect.py
  3. 使用统计工具箱中的sequentialfs。
  4. 我建议使用fselect.py,因为它提供了更多选项 - 比如自动网格搜索最佳参数(使用grid.py)。它还根据特征的辨别能力提供F分数(有关F分数的详细信息,请参阅http://www.csie.ntu.edu.tw/~cjlin/papers/features.pdf)。

    由于fselect.py是用python编写的,你可以使用python接口或者我喜欢的,使用matlab来执行对python的系统调用:

    system('python fselect.py <training file name>')
    

    安装python,编译libsvm很重要(你在libsvm的tools目录中有grid.py和其他文件)。

    必须以libsvm格式(稀疏格式)提供培训文件。您可以通过在matlab中使用稀疏函数然后使用libsvmwrite来实现。

    xtrain_sparse = sparse(xtrain)
    libsvmwrite('filename.txt',ytrain,xtrain_sparse)
    

    希望这有帮助。

    对于带有libsvm的sequentialfs,你可以看到这篇文章:

    Features selection with sequentialfs with libsvm