查询决策树

时间:2011-04-15 02:33:17

标签: attributes artificial-intelligence decision-tree

我正在尝试理解我的AI教科书中的一个段落,并需要帮助。

基本上,我的问题是为什么n个属性上有2 ^(2 ^ n)个函数,如果它需要2 ^ n位来定义函数?

这是文中的段落(来源:AI:现代方法,Stuart Russell和Peter Norvig):

  

决策树适用于某些类型   功能对他人不利。是   有什么样的表现形式   适用于各种各样的   功能?很不幸的是,不行。我们可以   以非常一般的方式展示这一点。   考虑所有布尔值的集合   n个属性的函数。多少   这套不同的功能?   这只是不同的数量   我们可以记下的真值表,   因为函数是由它定义的   真相表。真值表有2 ^ n   行,因为每个输入案例都是   由n个属性描述。我们可以   考虑一下“答案”一栏   表格为 2 ^ n位数   定义函数。无论   我们用于函数的表示,   一些功能(几乎全部   事实上他们将需要在   至少要表示的那么多位。

     

如果需要2 ^ n位来定义   功能,然后有2 ^(2 ^ n)   n个属性的不同功能。

第二个问题是:为什么我们需要2 ^ n位数(见上面的粗体),我认为我们只需要n位数,例如,如果我们有3个属性,我们可以定义2 ^ 3 = 8函数,因此只需要3位来定义所有8个函数(000,001,010,011等)。

我一直在考虑这个问题,不知道是什么让我感到困惑,谢谢你有时间研究这个问题!

4 个答案:

答案 0 :(得分:2)

他说的是:你可以写出n个属性的所有可能值:

0 1 2 .. n

0 0 0 0 0 0 0 1

显然行数是2 ^ n

现在我们通过添加一个额外的列来定义一个函数。如果该位为1,则该值在该函数中为“true”,否则为false。由于行数是2 ^ n,我们通过0和&的所有组合来定义函数。 1是二进制字符串,显然有2 ^(2 ^ n)个这样的字符串,所以在n个属性上有2 ^(2 ^ n)个函数。

举一个简单的例子:n = 3.属性的值是:

000 001 010 011 100 101 110 111

现在,我们可以为行1和2定义一个“true”的函数f,并为每隔一行定义“false”。我们可以将其表示为row1 =“true”row2 =“true”row3 =“false”......等。现在,我们可以得到多少不同的字符串?我们可以写出来

000000000 000000001 000000010 .. 111111111

这些字符串中的每一个映射到不同的函数,其中有2 ^ 8 = 2 ^(2 ^ n)个,因此有2 ^(2 ^ n)个函数。

答案 1 :(得分:1)

我想我明白了,我觉得你的答案可能有误......

让我根据我对你的3个属性的例子的理解来解释。

n = 3

第1 000行

第2行

第3行

...

第8行111

功能0:每行都为假,因此0 0 0 0 0 0 0 0(8'为0,因为有8行)

功能1:第1行为真,其余为假:00000001

功能2:第2行为真,其余为假:00000010

...

因此有2 ^ 8个函数,即2 ^(2 ^ 3),即2 ^(2 ^ n)。

正确?

答案 2 :(得分:0)

顺便说一句,他之所以说你需要至少那么多位来表示函数的原因是每个函数必须包含足够的信息来指定输入的特定行是“true”还是“false”功能

从信息理论的角度来看,很难看出如何在少于2 ^(2 ^ n)个位中完成此操作 - 或者更简单地说,比m位更多,其中m是函数的数量。因为,假设我们实际上已经写出了所有这些功能。我们使用哪一个?我们必须指定它的id为m位。

答案 3 :(得分:0)

真值表中有2 ^ n行。因此,在“回答”列中,我们的函数输出有2 ^ n个槽。对于2 ^ n个插槽中的每一个,我们有2个选择。这是一个长度为2 ^ n的二进制字符串。可以形成该字符串的方式的数量是2 ^(k)其中k是可用的时隙数,在示例中k = 2 ^ n所以2 ^(2 ^ n)是我们可以形成的布尔函数的数量。 n个属性。