我可以防止 J48 分类器在同一字段上拆分 x 次以上吗?

Posted

技术标签:

【中文标题】我可以防止 J48 分类器在同一字段上拆分 x 次以上吗?【英文标题】:Can I prevent the J48 classifier from splitting on the same field more than x times? 【发布时间】:2018-01-12 09:12:23 【问题描述】:

使用数据集、Weka 和 J48 分类器,我得到以下树:

它在右侧的“NumTweets”上分裂了很多。我可以防止 J48 在一个字段上进行超过指定数量的拆分吗?因为这显然过度拟合了我在特定领域的数据。理想情况下,我希望它只在分支中重复使用相同的字段 3-4 次。有什么办法可以做到吗?

提前致谢!

【问题讨论】:

【参考方案1】:

回答您的第一个问题:不,WEKA 资源管理器不提供对特定属性的拆分限制。这只能在代码中手动完成。

话虽如此,您可以在此处尝试多种方法来限制树的大小/减少过度拟合。

    您可以尝试 REPTree 而不是 J48。它使用 与 J48 相同的拆分标准,但使用减少的错误修剪。它有一个 限制树深度的选项。

    降低 J48 修剪置信度(-C 参数)将导致更多的修剪,从而导致更小的树大小。

    您可以尝试使用 minNumObj(到达每个叶子的最小实例数)参数。

【讨论】:

【参考方案2】:

没有。但是您可以将 J48 minNumObj 配置参数设置得更高。 (默认值为 2。)这设置了每个叶节点必须包含的最小数据元素数量的约束。

通过这种方式(通过反复试验),您可以在一定程度上平衡和/或简化决策树。

也许您可以删除或忽略烦人的属性。也许将NumTweets 离散化到垃圾箱中(例如 10 条推文天)也有帮助?这可以通过预处理选项卡上的离散化过滤器来完成。

【讨论】:

我已经玩过minNumObj 配置,但几乎所有设置都会导致属性效果不佳。删除某些属性也是如此。我会尝试离散化特征,我打算手动进行,但知道有一个预处理过滤器很高兴,谢谢!

以上是关于我可以防止 J48 分类器在同一字段上拆分 x 次以上吗?的主要内容,如果未能解决你的问题,请参考以下文章

Weka J48 分类器:无法处理数字类?

使用 J48 构建分类器

如何解释 weka 分类结果 J48

J48树分类器的叶子节点是啥意思

更新word文档中的字段时防止重新打开同一文档

Weka J48 分类不跟随树