【问题标题】:Mallet Feature Selection similar to setting feature values to 0Mallet 特征选择类似于将特征值设置为 0
【发布时间】:2013-10-11 04:07:00
【问题描述】:

我正在查看 Mallet 源代码,尽管 InstanceList 类具有 setFeatureSelection 方法,但似乎大多数分类器实现(例如朴素贝叶斯)并没有真正考虑到特征选择.

现在我想对我的数据集进行一些涉及特征选择的快速实验。我在想,从技术捷径的角度来看,我可能会获得排名最低的特征,并将这些值在实例向量中设置为 0。这在机器学习中是否等同于分类器训练中的特征选择,根本不考虑它们(如果不涉及平滑,例如拉普拉斯估计)?

谢谢

【问题讨论】:

  • 你有没有使用信息增益进行特征选择????我需要一些帮助等待您的回复....

标签: java machine-learning feature-selection mallet


【解决方案1】:

是的,将特征值设置为零与将其从特征向量中移除具有相同的效果,因为 MALLET 没有“缺失特征”的概念,只有零和非零特征值。

不过,使用FeatureSelection 类并不太痛苦。 MALLET 带有几个内置类,它们在底层应用基于RankedFeatureVector sublcasses 的“掩码”。例如,要使用信息增益特征选择,您应该可以这样做:

FeatureSelection fs = FeatureSelection(new InfoGain(ilist), numFeatures);
ilist.setFeatureSelection(fs);

您还可以实现自己的 RankedFeatureVector 子类 (the API is here) 以获得更多自定义功能。要以其他方式手动选择功能,您仍然可以通过将功能掩码创建为 BitSet 来执行此操作,其中包含您要使用的所有功能 ID(来自字母表),例如:

java.util.BitSet featureMask = /* some code to pick your features */;
FeatureSelection fs = FeatureSelection(ilist.getAlphabet(), featureMask);
ilist.setFeatureSelection(fs);

一般来说,我建议使用FeatureSelection 对象,而不是破坏性地更改实例数据。

【讨论】:

  • 我很想使用 featureSelection。问题是,我查看了大多数分类器实现代码,似乎大多数都没有考虑特征选择。例如,使用特征选择集运行 NaiveBayes 分类器将产生与没有特征选择相同的结果。好吧,感谢您的帮助,但无论如何,我最终扩展了使用 FeatureSelection 的 NaiveBayesTrainer 类。
猜你喜欢
  • 2014-09-21
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2011-01-10
  • 2020-07-31
  • 2012-12-17
相关资源
最近更新 更多