我目前正在研究本书“编程集体智能”的第7章(“决策树”)。

我找到了功能的输出 mdclassify() p.157令人困惑。该功能处理丢失的数据。提供的解释是:

在基本决策树中,所有内容的隐含权重为1,这意味着观测值完全计算了项目适合某个类别的概率。如果您正在关注多个分支,则可以给每个分支的重量等于该侧所有其他行的分数。

据我了解,然后将一个实例分配在分支之间。

因此,我根本不明白我们如何获得:

{'None': 0.125, 'Premium': 2.25, 'Basic': 0.125}

作为 0.125+0.125+2.25 不总结到1,甚至是整数。新观察如何分裂?

代码在这里:

https://github.com/arthur-e/programpection-collaction-intelligence/blob/master/chapter7/treepredict.py

使用原始数据集,我在此处获取树:

screenshot

任何人都可以准确地向我解释数字的精确含义以及如何确切地获得?

PS:这本书的第一个示例是错误的,如其Errrata页面上所述,但仅解释第二个示例(如上所述)会很好。

有帮助吗?

解决方案

有四个功能:

  • 推荐人,
  • 地点,
  • 常问问题,
  • 页面。

就您而言,您正在尝试对一个实例进行分类 FAQpages 未知: mdclassify(['google','France',None,None], tree).

由于第一个已知属性是 google, ,在您的决策树中,您只对从中出现的优势感兴趣 google 节点在右侧。

有五个实例:三个标签 Premium, ,一个标记 Basic 一个标签 None.

带有标签的实例 BasicNone 分开 FAQ 属性。其中两个,所以他们两个的重量是 0.5.

现在,我们在 pages 属性。有3个实例 pages 大于20的价值,两个 pages 价值不超过20。

这是技巧:我们已经知道其中两个的权重从 10.5 每个。因此,现在我们有三个实例加权 1 每个,两个实例加权 0.5 每个。所以总价值是 4.

现在,我们可以计算 pages 属性:

  • pages_larger_than_20 = 3/4
  • pages_not_larger_than_20 = 1/4#1是:0.5 + 0.5

所有权重归因于。现在,我们可以将权重乘以实例的“频率”(请记住 BasicNone 现在的“频率” 0.5):

  • Premium: 3 * 3/4 = 2.25 #因为有三个 Premium 实例,每个权重 0.75;
  • Basic: 0.5 * 1/4 = 0.125 # 因为 Basic 就是现在 0.5, ,然后分开pages_not_larger_than_201/4
  • None: 0.5 * 1/4 = 0.125 #类似

至少这是数字来自的地方。我对此指标的最大价值以及是否应该汇总到1表示怀疑,但是现在您知道这些数字来自何处,您可以考虑如何使它们正常化。

许可以下: CC-BY-SA归因
scroll top