关于决策树的疑问

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

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

以下是来自课本的段落(来源:AI: A Modern Approach, Stuart Russell and Norvig):

决策树对于某些类型的函数是好的,而对于另一些类型的函数则不好。是否存在一种表示方式,对于所有类型的函数都有效?不幸的是,没有。我们可以用一种非常普遍的方式来证明这一点。考虑 n 个属性上的所有布尔函数的集合。这个集合中有多少个不同的函数?这只是我们可以写下的不同真值表的数量,因为函数是由它的真值表定义的。真值表有 2^n 行,因为每个输入案例都由 n 个属性描述。我们可以将表格的“答案”列视为一个2^n 位数,它定义了函数。无论我们使用什么函数表示法,某些函数(实际上几乎所有函数)都至少需要那么多位来表示。

如果定义一个函数需要 2^n 位,那么在 n 个属性上有 2^(2^n) 个不同的函数。

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

我已经考虑了一段时间了,不确定我忽略了什么,感谢您花时间研究这个问题!


回答:

我想我明白了,而且我认为你的答案可能有一个错误…

让我根据我对你的 3 个属性示例的理解来解释一下…

n = 3

第 1 行 000

第 2 行 001

第 3 行 010

第 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)。

对吗?

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关于决策树的疑问

在研究决策树一段时间后,我注意到有一种叫做提升(boosting)的小技巧。我发现通常情况下,它会提高决策树的准确性。

所以我就想知道,为什么我们不简单地将提升技术整合到我们构建的每一个决策树中呢?既然目前我们将提升技术作为一种独立的技术排除在外,那么我就在思考:与仅使用单个决策树相比,使用提升技术有哪些缺点?

感谢各位的帮助!


回答:

提升(Boosting)是一种可以应用于任何学习算法之上的技术。当您构建的原始分类器表现仅略高于随机水平时,它最有效。如果您的决策树已经相当不错,那么提升可能不会带来太大的改进,但会有性能上的损失 — 如果您运行提升 100 次迭代,您将需要训练和存储 100 棵决策树。

通常人们会使用决策树桩(只有一个节点的决策树)进行提升,并获得与使用完整决策树进行提升一样好的结果。

我做了一些实验,发现提升相当稳健,比单个树分类器更好,但也更慢(我使用了 10 次迭代),并且不如一些更简单的学习器(公平地说,这是一个极其嘈杂的数据集)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注