我试图了解如何正确使用R包FSelector,特别是它的information.gain函数。 According to the documentation:
information gain = H(class) + H(attribute) - H(class,attribute)
这些数量意味着什么?它们如何与信息增益的标准定义相关联。据我所知,信息增益归因于attribute = H(S) - sum p(S_i)H(S_i)
其中H(.)
是熵; S
是未分区的集合; S_i
是属性引发的S
子集;和p(S_i) = |S_i|/|S|
。
我还想知道是否有任何其他软件包使用信息增益的概念。
感谢您的帮助。
答案 0 :(得分:9)
FSelector及其功能背后的想法是选择数据集中找到的最佳属性组合。也许,某些属性是不必要的(可能),这取决于您正在处理的数据集。
information.gain是一个根据“信息增益”选择最佳属性组合的函数。这个函数基于熵(你可以阅读很多关于它的文档)。
以下是使用着名的IRIS数据集的示例(请参阅http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=FSelector/man/information.gain.Rd&d=R_CC处的完整示例):
library(FSelector)
data(iris)
weights <- information.gain(Species~., iris)
print(weights)
subset <- cutoff.k(weights, 2)
f <- as.simple.formula(subset, "Species")
print(f)
这意味着最重要的属性是Petal.Width和Petal.Length
有很多库使用类似的功能! (RWeka,CORElearn,FSelector ......)