【问题标题】:hypothesis function space in decision tree决策树中的假设函数空间
【发布时间】:2023-03-20 21:51:01
【问题描述】:

我正在阅读 Stuart Russell 和 Peter Norvig 的《人工智能》一书(第 18 章)。以下段落来自决策树上下文。

对于各种各样的问题,决策树格式会产生一个 不错,简洁的结果。但有些功能无法表示 简明扼要。例如,majority 函数,如果 并且只有当超过一半的输入为真时,才需要 指数级大决策树。

换句话说,决策树适用于某些功能 对别人不好。有没有什么代表 对各种功能都有效吗?不幸的是,答案是否定的。

我们可以用一般的方式来展示这一点。考虑所有布尔值的集合 “n”个属性的函数。这里面有多少不同的功能 放?这只是我们可以使用的不同真值表的数量 写下来,因为函数是由它的真值表定义的。

一个包含“n”个属性的真值表有 2^n 行,每行一个 属性值的组合。

我们可以将表格的“答案”列视为一个 2^n 位的数字 定义函数。这意味着有 (2^(2^n)) 不同 函数(并且会有更多的树,因为 不止一棵树可以计算相同的函数)。这是一个可怕的 数字。例如,只有我们的十个布尔属性 餐厅问题有 2^1024 或大约 10^308 不同 功能可供选择。

  1. 作者所说的"answer" column of the table as a 2^n-bit number that defines the function是什么意思?

  2. 作者是如何导出(2^(2^n))个不同的函数的?

请详细说明上述问题,最好用简单的例子,例如n = 3。

【问题讨论】:

    标签: machine-learning artificial-intelligence decision-tree


    【解决方案1】:

    考虑一个 3 输入函数的通用真值表,其中每个三元组的结果也是一个布尔值(1 或 0),由变量 i 到 'p' 表示:

    A  B  C   f(a,b,c)
    0  0  0     i
    0  0  1     j
    0  1  0     k
    0  1  1     l
    1  0  0     m
    1  0  1     n
    1  1  0     o
    1  1  1     p
    

    我们现在可以将三个变量上的任何函数表示为一个 8 位数 ijklmnop。例如,and00000001or01111111one_hot(正好一个输入True)是01101000

    对于 3 个变量,“答案”中有 2^3 位,即完整的函数定义。由于“答案”中有 8 位,我们可以定义 2^8 个可能的函数。

    这是否概述了您的理解领域?

    有关示例函数的更多详细信息

    您只需(一旦看到模式)使八位对应于表中的整数。例如,one-hot 的表如下所示:

    A  B  C   f(a,b,c)
    0  0  0     0
    0  0  1     1
    0  1  0     1
    0  1  1     0
    1  0  0     1
    1  0  1     0
    1  1  0     0
    1  1  1     0
    

    阅读标记为f(a,b,c) 的“答案”列,您会得到8 位序列01101000。这个 8 位数足以完整定义函数:列出 a、b、c 的所有组合的行是固定(数字)序列。

    您可以以模板格式编写任何此类函数:

    def and(a, b, c):
        and_def = '00000001'
        index = 4*a + 2*b + 1*c
        return and_def[index]
    

    现在,如果我们将其推广到任何 3 输入二进制函数:

    def_bin_func(a, b, c, func_def)
        return func_def[4*a + 2*b + 1*c]
    

    如果您愿意,您可以进一步概括输入列表的模板:连接位并将该整数用作func_def 字符串的索引。

    这样就解决了吗?

    【讨论】:

    • 感谢您的澄清。我没有得到你的例子例如,并且是 00000001;或者是01111111; one_hot(确切地说是一个输入True)是01101000。你能解释一下吗?谢谢
    • 感谢您的详细解释。现在明白了。
    • 很高兴听到它!当您达成解决方案时,请记住对有用的事情进行投票并接受您最喜欢的答案(即使您必须自己编写),以便 Stack Overflow 可以正确存档问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2019-01-02
    • 2021-03-22
    • 2016-05-27
    • 2017-02-21
    • 2019-10-20
    相关资源
    最近更新 更多