关于书籍编程集体智能中决策树的问题
-
16-10-2019 - |
题
我目前正在研究本书“编程集体智能”的第7章(“决策树”)。
我找到了功能的输出 mdclassify()
p.157令人困惑。该功能处理丢失的数据。提供的解释是:
在基本决策树中,所有内容的隐含权重为1,这意味着观测值完全计算了项目适合某个类别的概率。如果您正在关注多个分支,则可以给每个分支的重量等于该侧所有其他行的分数。
据我了解,然后将一个实例分配在分支之间。
因此,我根本不明白我们如何获得:
{'None': 0.125, 'Premium': 2.25, 'Basic': 0.125}
作为 0.125+0.125+2.25
不总结到1,甚至是整数。新观察如何分裂?
代码在这里:
使用原始数据集,我在此处获取树:
任何人都可以准确地向我解释数字的精确含义以及如何确切地获得?
PS:这本书的第一个示例是错误的,如其Errrata页面上所述,但仅解释第二个示例(如上所述)会很好。
解决方案
有四个功能:
- 推荐人,
- 地点,
- 常问问题,
- 页面。
就您而言,您正在尝试对一个实例进行分类 FAQ
和 pages
未知: mdclassify(['google','France',None,None], tree)
.
由于第一个已知属性是 google
, ,在您的决策树中,您只对从中出现的优势感兴趣 google
节点在右侧。
有五个实例:三个标签 Premium
, ,一个标记 Basic
一个标签 None
.
带有标签的实例 Basic
和 None
分开 FAQ
属性。其中两个,所以他们两个的重量是 0.5
.
现在,我们在 pages
属性。有3个实例 pages
大于20的价值,两个 pages
价值不超过20。
这是技巧:我们已经知道其中两个的权重从 1
至 0.5
每个。因此,现在我们有三个实例加权 1
每个,两个实例加权 0.5
每个。所以总价值是 4
.
现在,我们可以计算 pages
属性:
- pages_larger_than_20 = 3/4
- pages_not_larger_than_20 = 1/4#1是:0.5 + 0.5
所有权重归因于。现在,我们可以将权重乘以实例的“频率”(请记住 Basic
和 None
现在的“频率” 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_20
是1/4
None
:0.5 * 1/4 = 0.125
#类似
至少这是数字来自的地方。我对此指标的最大价值以及是否应该汇总到1表示怀疑,但是现在您知道这些数字来自何处,您可以考虑如何使它们正常化。