它在右侧的“NumTweets”上分裂了很多。我可以防止 J48 在一个字段上进行超过指定数量的拆分吗?因为这显然过度拟合了我在特定领域的数据。理想情况下,我希望它只在分支中重复使用相同的字段 3-4 次。有什么办法可以做到这一点吗?
提前致谢!
它在右侧的“NumTweets”上分裂了很多。我可以防止 J48 在一个字段上进行超过指定数量的拆分吗?因为这显然过度拟合了我在特定领域的数据。理想情况下,我希望它只在分支中重复使用相同的字段 3-4 次。有什么办法可以做到这一点吗?
提前致谢!
回答您的第一个问题:不,WEKA 资源管理器不提供对特定属性的拆分限制。这只能在代码中手动完成。
话虽如此,您可以在这里尝试几件事来限制树的大小/减少过度拟合。
您可以尝试 REPTree 而不是 J48。它使用与 J48 相同的拆分标准,但使用减少的错误修剪。它有一个选项来限制树的深度。
降低 J48 修剪置信度(-C 参数)将导致更多的修剪,从而导致更小的树大小。
您可以尝试使用 minNumObj(到达每个叶子的最小实例数)参数。
不可以。但是您可以将 J48minNumObj
配置参数设置得更高。(默认值为 2。)这设置了每个叶节点必须包含的最小数据元素数量的约束。
通过这种方式(通过反复试验),您可以在一定程度上平衡和/或简化决策树。
也许您可以删除或忽略烦人的属性。也许离散化NumTweets
到垃圾箱(例如<1 条推文/天,<10 条推文/天,更多> 10 条推文天)也有帮助?这可以通过预处理选项卡上的离散化过滤器来完成。