我可以防止 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 次以上吗?的主要内容,如果未能解决你的问题,请参考以下文章