本文章翻译至Java ML技术文档featureselection.pdf,代码部分是参考该文档使用IDEA编写,同时加入了运行结果。
特征选择
本文简要介绍了功能选择的概念。在本章的其他小节中,我们讨论与特征选择有关的几个主题。
特征选择主要有三种类型:(i)特征评分,(ii)特征等级和(iii)特征子集选择。特征评分是最通用的方法,可以在后两种方法中进行转换,而特征排名只能转换为特征子集选择方法,这三种类型的特征选择中的任何一种都可以转换为整体特征选择方法。
当前,Java-ML仅提供了一组功能分级器,但是将来还将支持另外两个。
我们假设您已熟悉Java ML的基础知识,如入门教程中所述。
特征评分算法
所有功能评分算法均实现以下方法。分数越高越好。
该方法将返回所提供特征索引的分数。
特征评分算法的典型用法如下所示
特征排行算法
所有特征排名算法均提供以下确定特征等级的方法,等级越低越好。
该方法将使用提供的索引返回特征的等级。特征排名算法的典型用法与特征评分算法的用法非常相似。
子集选择算法
子集选择算法与评分和排名方法的不同之处在于,它们仅提供一组被选择的特征,而没有关于每个特征质量的进一步信息。
子集选择算法提供了返回算法已选择的一组特征索引。
下面的代码段描述了功能子集选择算法的基本用法
本示例创建了一个贪婪的前向选择算法,该算法将选择一个(“最佳”)功能。在此示例中,为了确定特征的质量,使用了Pearson相关。
集成特征排名算法
集成特征排名算法是特征排名的另一种形式,因此提供了以下确定特征排名的方法。等级越低越好。
该方法将使用提供的索引返回特征的等级。集成特征等级算法的典型用法与单一特征等级算法的用法非常相似。
Weka属性选择算法
本文简要介绍了通过Java-ML特征选择接口使用Weka属性选择的概念。
在Weka中,属性选择会搜索数据中所有可能的属性组合,以找到最适合预测的属性子集。它使用两个对象,包括属性评估器和搜索方法。这些属性评估器和搜索算法的任何组合都可用于确定数据集中的得分和等级属性。目前,仅Java-ML功能评分和功能排名可通过包装器使用,尚未实现子集选择。
下面的代码段显示了Weka功能选择包装器的典型用法。