找到变量和类变量之间的相关性

时间:2015-04-07 18:26:07

标签: weka data-mining

我有一个数据集,其中包含7个数字属性和一个名义上的类变量。我想知道如何能够用于预测类属性的最佳属性。是否可以找到每个属性获得的最大信息增益?

2 个答案:

答案 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和岭回归。