我在两种方法中得到的结果是矛盾的,在我看来应该产生相同的输出。有人可以指出差异是什么,因为我无法理解它:S
我正在研究Drexel_Stats.arff。我使用1-NN分类器和10倍交叉验证。 没有任何预处理,这就是我得到的混淆矩阵:
a b <-- classified as
14 3 | a = Win
5 1 | b = Loss
为了获得更好的结果,我使用了:
weka.attributeSelection.InfoGainAttributeEval
weka.attributeSelection.Ranker -T -1.0 -N 5
获取数据集的5个最具辨别力的特征。然后我手动摆脱所有其他功能并重新运行我的1-NN,我得到了这些结果:
a b <-- classified as
16 1 | a = Win
1 5 | b = Loss
现在,这让我感到困惑(至少对我而言)。我尝试使用元过滤分类器来节省手动丢弃功能的麻烦。这是我使用的(从GUI复制):
weka.classifiers.meta.FilteredClassifier
-F "weka.filters.supervised.attribute.AttributeSelection
-E \"weka.attributeSelection.InfoGainAttributeEval \"
-S \"weka.attributeSelection.Ranker -T -1.0 -N 5\""
-W weka.classifiers.lazy.IB1 -D
我理解这是前一次操作的自动化,但事实上我这次得到的结果是不同的:
a b <-- classified as
15 2 | a = Win
4 2 | b = Loss
我出错了什么?
由于
编辑:以下是WEKA输出的一部分:
=== Attribute Selection on all input data ===
Search Method:
Attribute ranking.
Attribute Evaluator (supervised, Class (nominal): 39 Outcome):
Information Gain Ranking Filter
Ranked attributes:
0.828 1 Opponent
0.469 38 Opp_Steals
0.42 24 Opp_Field_Goal_Pct
0.331 15 Def_Rebounds
0.306 28 Opp_Free_Throws_Made
Selected attributes: 1,38,24,15,28 : 5
Header of reduced data:
@relation 'Basketball_Statistics-weka.filters.unsupervised.attribute.Remove-V-R1,38,24,15,28,39'
@attribute Opponent {Florida_Gulf_Coast,Vermont,Penn,Rider,Toledo,Saint_Joseph,Fairleigh_Dickinson,Villanova,Syracuse,Temple,George_Mason,Georgia_State,UNC_Wilmington,James_Madison,Hofstra,Old_Dominion,Northeastern,Delaware,VCU,Towson}
@attribute Opp_Steals numeric
@attribute Opp_Field_Goal_Pct numeric
@attribute Def_Rebounds numeric
@attribute Opp_Free_Throws_Made numeric
@attribute Outcome {Win,Loss}
@data
这些是否在交叉验证的每个折叠处选择了相同的功能?可以根据实例拆分选择不同的功能吗?
答案 0 :(得分:2)
您的第一个(“全局”)功能选择是使用包括所有标签在内的所有数据点,即。它可以访问您在交叉验证期间无法访问的类信息。因此,您的第一种方法存在缺陷,导致误差估计过高。你的第二种方法是正确的。它表现更差,因为它很可能在交叉验证期间不会为十次运行中的每一次选择相同的五个特征。伯恩哈德先生