【发布时间】:2015-06-12 11:05:00
【问题描述】:
我有一个数据集,其中包含 7 个数字属性和一个标称属性,即类变量。我想知道如何才能获得可用于预测类属性的最佳属性。找到每个属性的最大信息增益是解决方案吗?
【问题讨论】:
标签: weka data-mining
我有一个数据集,其中包含 7 个数字属性和一个标称属性,即类变量。我想知道如何才能获得可用于预测类属性的最佳属性。找到每个属性的最大信息增益是解决方案吗?
【问题讨论】:
标签: weka data-mining
因此,您所问的问题属于特征选择领域,更广泛地说,属于特征工程。网上有很多关于这方面的文献,网上肯定有很多关于如何做到这一点的博客/教程/资源。
为了给你一个很好的链接,我刚刚阅读了,这是一个blog with a tutorial on some ways to do feature selection in Weka,以及同一个博客的general introduction on feature selection。正如 knb 的回答所指出的那样,自然有很多不同的方法。
不过,为了给出简短的描述,有几种方法可以解决这个问题:您可以为每个特征(如信息增益等)分配一个分数,并过滤掉分数为“差”的特征;您可以将寻找最佳参数视为搜索问题,您可以在其中获取不同的特征子集并依次评估准确性;并且您可以使用嵌入式方法,在构建模型时了解哪些特征对准确性的贡献最大。嵌入式方法的示例是 LASSO 和岭回归等正则化算法。
【讨论】:
您只是想要该属性的名称,还是还想要该“最佳”属性的可量化指标(如 t 值)?
对于定性方法,您可以生成一个只有一个分裂、两个叶子的分类树。
例如 weka 的“diabetes.arff”样本数据集(n = 768),它的结构与您的数据集相似(所有属性都是数字,但类属性只有 两个 不同的分类结果),我可以将 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 %
这将创建一棵在“plas”属性上有一个拆分的树。为了解释,这是有道理的,因为实际上,糖尿病患者血浆中的葡萄糖浓度升高。所以“plas”是最重要的属性,因为它被选择用于第一次拆分。但这并不能告诉你有多重要。
对于更定量的方法,也许您可以使用(多项)逻辑回归。我对此不是很熟悉,但无论如何:
在 Exlorer GUI 工具中,选择“分类”>“功能”>“物流”。
运行模型。优势比和系数可能以可量化的方式包含您需要的内容。较低的优势比(但 > 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 %
【讨论】: