2014-03-18 54 views
3

我想了解如何正確使用R包FSelector,特別是它的information.gain函數。 According to the documentationFSelector information.gain衡量什麼?

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

簡歷上的這個答案可能是你的興趣所在:http://stats.stackexchange.com/questions/161429/why-would-perfectly-similar-data-have-0 -mutual-information/161443#161443 – Tim

回答

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 ...)

+0

謝謝。有沒有可能擁有信息收益低的好屬性? – user3434580

+0

當然,你可以使用你想要的所有屬性,但是對於某些過程你只需要使用最具代表性的屬性。例如,在人臉識別中,您只使用圖像屬性的一個子集;也用於壓縮數據。也許你可以查看所有這些背後的統計和數學。奇異值分解(SVD)或主成分分析是一個很好的起點。簡而言之,您傾向於使用信息增益率最高的屬性,並留下那些信息增益較低的屬性。 – andresram1

+2

@andresram1 PCA和SVD根據變量選擇變量,而不考慮其對結果的影響。信息獲得相反,根據它們減少結果中「不純」的能力對變量進行排名。所以,PCA和SVD在這裏是不相關的(至少在面值上)。 –