Github 專案推薦 | 用於 C/C++、Java、Matlab/Octave 的特徵選擇工具箱
阿新 • • 發佈:2022-05-04
FEAST 是用於 C/C++、Java、Matlab/Octave 的特徵選擇工具集合,它提供了基於濾波器特徵選擇演算法的常用互資訊的實現以及 RELIEF 的實現。所有函式都需要離散輸入(RELIEF 除外,它不依賴於 MIToolbox),它們返回選定的特徵索引。
Github:https://github.com/Craigacp/FEAST
該專案是為了幫助研究這些演算法的相關性而開發的,其結果已經發布在下述的論文中:
Conditional Likelihood Maximisation: A Unifying Framework for Information Theoretic Feature Selection G. Brown, A. Pocock, M.-J. Zhao, M. Lujan Journal of Machine Learning Research, 13:27-66 (2012)
加權特徵選擇演算法描述如下:
Information Theoretic Feature Selection for Cost-Sensitive Problems
A. Pocock, N. Edakunni, M.-J. Zhao, M. Lujan, G. Brown.
ArXiv
如果有開發者或者學者需要 FEAST 中的實現做研究,請引用上述的論文。所有的 FEAST 程式碼都是根據 BSD 3-Clause 許可證授權的。
包含以下實現:mim,mrmr,mifs,cmim,jmi,disr,cife,icap,condred,cmi,relief,fcbf,betagamma
加權實現:mim,cmim,jmi,disr,cmi
FEAST 適用於離散輸入,所以在使用 FEAST 之前,所有連續值應該離散化。作者在實驗中發現,用 10 個寬度相同的二進位制檔案(bins)能夠適用很多問題,儘管這個跟資料集的大小有關。當 FEAST 使用連續的資料時,會生成不可靠的結果,執行速度也會變慢,記憶體使用量也會增加很多。
MATLAB 示例(使用「data」作為我們的特徵矩陣,「label」作為類標籤向量):
>> size(data) ans = (569,30) %% denoting 569 examples, and 30 features
>> selectedIndices = feast('jmi',5,data,labels) %% selecting the top 5 features using the jmi algorithm
selectedIndices =
28
21
8
27
23
>> selectedIndices = feast('mrmr',10,data,labels) %% selecting the top 10 features using the mrmr algorithm
selectedIndices =
28
24
22
8
27
21
29
4
7
25
>> selectedIndices = feast('mifs',5,data,labels,0.7) %% selecting the top 5 features using the mifs algorithm with beta = 0.7
selectedIndices =
28
24
22
20
29