1

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

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

提前致谢!

4

2 回答 2

2

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

话虽如此,您可以在这里尝试几件事来限制树的大小/减少过度拟合。

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

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

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

于 2017-08-09T12:27:40.737 回答
2

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

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

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

于 2017-08-10T09:27:45.643 回答