机器学习中训练模型的前提必备工作就是特征选择,起到降维和降低计算开销的目的,当然在获取尽可能小的特征子集的同时,应不显著降低分类精度、不影响类分布、保持特征子集的稳定适应性强等。
ML库提供了特征选择方法,具体有:
1、递归特征消除 Recursive feature elimination (RFE):
递归特征消除的主要思想是反复的构建模型(如SVM或者回归模型)然后选出最好的(或者最差的)的特征(可以根据系数来选),把选出来的特征排除,然后在剩余的特征上重复这个过程,直到所有特征都遍历了。这个过程中特征被消除的次序就是特征的排序。因此,这是一种寻找最优特征子集的贪心算法。参考代码如下:
package com.gddx;
import java.io.File;
import net.sf.javaml.core.Dataset;
import net.sf.javaml.featureselection.ranking.RecursiveFeatureEliminationSVM;
import net.sf.javaml.tools.data.FileHandler;
public class TutorialFeatureRanking {
/**
* Shows the basic steps to create use a feature ranking algorithm.
*
* @author Thomas Abeel
*
*/
public static void main(String[] args) throws Exception {
/* Load the iris data set */
Dataset data = FileHandler.loadDataset(new File("D:\\tmp\\iris.data"), 4, ",");
/* Create a feature ranking algorithm */
RecursiveFeatureEliminationSVM svmrfe = new RecursiveFeatureEliminationSVM(0.2);
/* Apply the algorithm to the data set */
svmrfe.build(data);
/* Print out the rank of each attribute */
for (int i = 0; i < svmrfe.noAttributes(); i++)
System.out.println(svmrfe.rank(i));
}
}
2、Pearson相关系数 Pearson Correlation
皮尔森相关系数是体现特征和响应变量之间关系的方法,该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关(这个变量下降,那个就会上升),+1表示完全的正相关,0表示没有线性相关。参考代码如下:
package com.