关于Weka J48决策树分支数值及测试结果矛盾的技术问询
Weka J48决策树叶节点数值与测试错分的矛盾解析
核心矛盾点
使用Weka的J48算法处理weather.nominal数据集时:
- 无论选择
Use training set、Cross-validation还是Percentage split测试选项,输出的树结构完全一致,叶节点标注的实例数无错分标记:
J48 pruned tree ------------------ outlook = sunny | humidity = high: no (3.0) | humidity = normal: yes (2.0) outlook = overcast: yes (4.0) outlook = rainy | windy = TRUE: no (2.0) | windy = FALSE: yes (3.0)
- 但选择
Percentage split(如60%拆分)时,评估结果显示存在错分:
=== Evaluation on test split === === Summary === Correctly Classified Instances 2 40 % Incorrectly Classified Instances 3 60 %
原因解释
这是Weka默认行为导致的,核心逻辑如下:
- 模型构建基于完整数据集:Weka默认先使用全部数据集训练J48决策树,输出展示的是这个全量数据训练出的树结构,以及它在训练集上的表现(叶节点实例数、无错分标记)。
- 测试模式仅用于评估泛化能力:你选择的
Percentage split等测试选项,只是用已经训练好的全量数据模型去预测拆分出的测试集实例,而非用拆分后的训练子集重新训练新的决策树。 - 错分来自泛化误差:叶节点的无错分标记是针对全量训练数据的(模型对训练数据完全拟合),而测试集是未参与模型训练的数据,模型对这些数据的预测错误属于正常的泛化误差,和训练集上的表现不冲突。
验证你的猜测
你猜的没错——初始显示的树确实不是拆分后构建的。Weka的这个设计容易造成误解,它没有在输出中明确说明:展示的模型是基于完整数据集训练的,测试选项仅用于评估该模型的泛化性能,而非重新训练适配子集的模型。
内容的提问来源于stack exchange,提问作者onyourmark
相关产品推荐
相关产品推荐

