决策树给出了不可能的结果

MarkusWMarkusW 成员职位:22贡献我
2021年10月编辑 帮助



我刚刚用决策树训练了一台机器,它的f值达到了997%。
听起来不错,直到你听到,天真贝叶斯只有66,4%
在那个数据集中,我发现使用深度学习的得分是98.2%
我在这个数据集中发现的最高可信分数是78.5%

设计是基于这个视频:


我所做的只是将交叉验证中的朴素贝叶斯算子替换为决策树算子。
即使使用10次交叉验证,我的得票率也不会超过70%。

高分数的直接原因是,由于某种原因,标签和id之间有很强的相关性,但是我不知道如何限制算法使用哪些列。
问题是,我哪里做错了?我该怎么做才对?

最佳答案

  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3287年RM数据科学家
    解决方案接受
    通常这只是因为两个类的两个集合被附加了。所以数据集的前一半为真,后一半为假?

    否则:通常id与日期相关,日期与标签相关。

    您要做的是使用Select Attributes并删除id,或者设置role并将id的角色设置为id。

    最好的
    马丁
    - RapidMin乐鱼体育官方apper数据科学服务主管
    德国多特蒙德

答案

  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3287年RM数据科学家
    你看那棵树了吗?它在做什么?

    BR,
    马丁
    - RapidMin乐鱼体育官方apper数据科学服务主管
    德国多特蒙德
  • MarkusWMarkusW 成员职位:22贡献我
    在使用随机森林启动它之前,我可能应该这样做,看看问题是否仍然存在……
  • BalazsBaranyBalazsBarany 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家职位:842独角兽
    你好,

    看看决策树。可能您在数据中留下了一个与标签密切相关的属性,但在将来的数据中不可用。

    这棵树复杂吗?决策是否显而易见?

    您可以在流程的各个部分设置断点(我会尝试使用决策树和性能),以查看不同的验证步骤。

    问候,
    Balazs
  • MarkusWMarkusW 成员职位:22贡献我
    我可以肯定地说,唯一与正确标签紧密相关的是标签本身。
    我相信,如果我犯了错误,程序用标签列来预测标签列,它会导致朴素贝叶斯也有一个非常高的f值。
    决策树只有很少的设置是我可以改变的。我最好的猜测是,我应该使用一个“不同的”决策树操作符,如果有多个,或者10倍交叉验证不以相同的方式工作,这取决于学习算法,我应该改变那里的设置。
  • BalazsBaranyBalazsBarany 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家职位:842独角兽
    这就跟你问声好!

    如果再次发生这种情况,请查看逐步执行的结果。如果您得到一个非常简单的树,或者在不同的执行中获得难以置信的性能结果,那么断点可以帮助您识别问题。

    有时多个属性一起与结果相关,但不是单独的。决策树可能更善于捕捉这些情况。

    问候,
    Balazs
    MarkusW
  • MarkusWMarkusW 成员职位:22贡献我
    好吧,尽管相关性应该没有那么强,但它仍然是不需要的,树中的大部分因子都是数据集的id。
    我的猜测是,如果我禁止它这样做,我将得到更好的结果。
    我假设我用“Set Role”操作符做到了这一点,但我不知道怎么做。
  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3287年RM数据科学家
    我相信,如果我犯了错误,程序用标签列来预测标签列,它会导致朴素贝叶斯也有一个非常高的f值。


    这是不正确的。特别是NB算法会很快被其他“噪声”属性混淆。但对于决策树来说,情况并非如此。


    - RapidMin乐鱼体育官方apper数据科学服务主管
    德国多特蒙德
    BalazsBarany
  • MarkusWMarkusW 成员职位:22贡献我
    是的,显然“ID”(基本上只是行号)和标签之间有一种奇怪的强相关性。我只需要找出,如何将它从列中排除,算法是允许使用的。
    帮助是受欢迎的。
  • BalazsBaranyBalazsBarany 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家职位:842独角兽
    您可以使用set role将此列的角色设置为“id”。如果您已经有一个带有角色id的属性,那么只需输入第二个名称(例如ItemID)。所有标记了特殊角色的东西,自定义的或内置的,都被排除在建模之外。
登录注册置评。