决策树中的假设函数空间

时间:2018-07-10 13:41:22

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

我正在阅读Stuart Russell和Peter Norvig撰写的“人工智能”这本书(第18章)。下一段来自决策树上下文。

  

对于各种各样的问题,决策树格式得出   简洁的结果。但是一些功能无法体现   简而言之。例如,多数函数,如果返回,则返回true   并且只有当一半以上的输入为真时,才需要   指数大的决策树。

     

换句话说,决策树对某些功能很有用   对别人不利。是否有任何形式的表示   各种功能高效?不幸的是,答案是否定的。

     

我们可以用一般的方式来说明这一点。考虑所有布尔值的集合   在“ 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。

1 个答案:

答案 0 :(得分:1)

考虑一个三输入函数的一般真值表,其中每个三元组的结果也是一个布尔值(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个可能的函数。

这为您概述了理解领域吗?

有关示例函数的更多信息

您只需(一旦看到该模式)就使八位与表中的整体相对应。例如,“一站式”表格如下所示:

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字符串的索引。

可以清除吗?