我有一个数据集,其中包含7个数字属性和一个名义上的类变量。我想知道如何能够用于预测类属性的最佳属性。是否可以找到每个属性获得的最大信息增益?
答案 0 :(得分:1)
您是否只想要该属性的名称,或者您是否还想要一个可量化的指标(如t值),以及#34; best"属性?
对于定性方法,您可以生成一个只有一个分割,两个叶子的分类树。
例如,weka" diabetes.arff" sample-dataset(n = 768),它具有与数据集相似的结构(所有attribs数字,但class属性只有两个不同的分类结果),我可以设置minNumObj参数,比方说200.这意味着:创建一个树,每个叶子至少有200个实例。
java -cp $WEKA_JAR/weka.jar weka.classifiers.trees.J48 -C 0.25 -M 200 -t data/diabetes.arff
输出:
J48 pruned tree
------------------
plas <= 127: tested_negative (485.0/94.0)
plas > 127: tested_positive (283.0/109.0)
Number of Leaves : 2
Size of the tree : 3
Time taken to build model: 0.11 seconds
Time taken to test model on training data: 0.04 seconds
=== Error on training data ===
Correctly Classified Instances 565 73.5677 %
这会在&#34; plas&#34;上创建一个树分割。属性。对于解释,这是有道理的,因为实际上,糖尿病患者的血浆中葡萄糖浓度升高。所以&#34; plas&#34;是最重要的属性,因为它是为第一次拆分选择的。但这并没有告诉你 的重要性。
对于更加量化的方法,也许您可以使用(多项式)Logistic回归。我对此并不熟悉,但无论如何:
在Exlorer GUI工具中,选择&#34;分类&#34; &GT;功能&gt;物流。
运行模型。优势比和系数可能以可量化的方式包含您所需的内容。较低的比值比(但> 0.5)更好/更重要,但我不确定。也许在这里阅读,this answer由其他人阅读。
java -cp $WEKA_JAR/weka.jar weka.classifiers.functions.Logistic -R 1.0E-8 -M -1 -t data/diabetes.arff
这是命令行输出
Options: -R 1.0E-8 -M -1
Logistic Regression with ridge parameter of 1.0E-8
Coefficients...
Class
Variable tested_negative
============================
preg -0.1232
plas -0.0352
pres 0.0133
skin -0.0006
insu 0.0012
mass -0.0897
pedi -0.9452
age -0.0149
Intercept 8.4047
Odds Ratios...
Class
Variable tested_negative
============================
preg 0.8841
plas 0.9654
pres 1.0134
skin 0.9994
insu 1.0012
mass 0.9142
pedi 0.3886
age 0.9852
=== Error on training data ===
Correctly Classified Instances 601 78.2552 %
Incorrectly Classified Instances 167 21.7448 %
答案 1 :(得分:1)
因此,您要问的问题属于功能选择范围,更广泛地说,是功能工程。关于这一点,网上有很多文献,在网上肯定有很多关于如何做到这一点的博客/教程/资源。
为了给您提供一个很好的链接,我只需阅读,blog with a tutorial on some ways to do feature selection in Weka,以及相同的博客general introduction on feature selection。当然,knb的答案指出了很多不同的方法。
为了给出一个简短的描述,有几种方法可以解决这个问题:你可以为每个功能分配一个分数(比如信息增益等),并过滤掉“坏”的功能。分数;您可以将查找最佳参数视为搜索问题,您可以使用不同的特征子集并依次评估准确度;并且您可以使用嵌入式方法,这种方法可以了解在构建模型时哪些功能对准确性的贡献最大。嵌入式方法的例子是正则化算法,如LASSO和岭回归。