【问题标题】:Query on decision trees查询决策树
【发布时间】:2011-08-06 00:30:44
【问题描述】:

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

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

这是文本中的段落(来源:AI:A Modern Approach,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 等)。

我一直在考虑这个问题,不知道是什么让我难以理解,感谢您花时间研究这个问题!

【问题讨论】:

    标签: attributes artificial-intelligence decision-tree


    【解决方案1】:

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

    0 1 2 ..n

    0 0 0 0 0 0 0 1

    显然行数是2^n

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

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

    000 001 010 011 100 101 110 111

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

    000000000 000000001 000000010 .. 111111111

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

    【讨论】:

      【解决方案2】:

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

      从信息论的角度来看,很难看出这是如何在少于 2^(2^n) 位或更简单的情况下完成的,而不是 m 位,其中 m 是函数的数量。因为,假设我们实际上已经写出了所有这些函数。我们使用的是哪一个?我们必须指定它的 id,它需要 m 位。

      【讨论】:

        【解决方案3】:

        我想我明白了,我认为你的答案可能有错误......

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

        n = 3

        第 1 000 行

        第 2 001 行

        第 3 010 行

        ...

        第 8 111 行

        函数 0 : 每一行都为假,因此 0 0 0 0 0 0 0 0 (8 '0's 因为有 8 行)

        函数1:第1行为真,其余为假:00000001

        函数 2:第 2 行为真,其余为假:00000010

        ...

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

        正确吗?

        【讨论】:

        • 正确,我将 2^3 计算为 9 :) 但它仍然是 2^(2^n)。啊,我明白了.. 3^2 = 9 ... 它的 ym aixelsyd
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2021-12-28
          • 1970-01-01
          • 2012-08-20
          • 2015-02-06
          • 2013-08-29
          • 2018-05-04
          • 2017-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多