|
|
@ -74948,14 +74948,36 @@
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"source": [
|
|
|
|
"<img src=\"data/tree_small.png\" width=\"70%\">"
|
|
|
|
"<img src=\"data/tree_small.png\" width=\"100%\">"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"attachments": {},
|
|
|
|
"execution_count": null,
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"把决策树看作是一系列“是/否”问题的最佳方式,如流程图。我们从顶部开始,叫做根,沿着树向下移动,移动方向由每个方程的答案决定。\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"例如,这里我们问的第一个问题是:Site EUI是否小于或等于15.95?如果答案是肯定的,那么我们移到左边问一个问题:Weather Normalized Site是否小于或等于3.85?如果第一个问题的答案是否定的,我们移到右边问一个问题:Weather Normalized Site是否小于或等于26.85?\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"我们继续这个迭代过程,直到到达树的底部并最终成为叶子节点。这里,我们预测的值对应于节点中显示的值。\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"每个节点有四条不同的信息:\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"1. question:根据这个答案,我们将向右或向左移动到树的下一层的下一个节点\n",
|
|
|
|
|
|
|
|
"2. friedman_mse:给定节点中所有示例的错误度量\n",
|
|
|
|
|
|
|
|
"3. sample:节点中的示例数\n",
|
|
|
|
|
|
|
|
"3. value:节点中所有示例的目标预测\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"我们可以看到,随着树的深度增加,我们将能够更好地拟合数据。对于一棵小树,每个叶子节点中会有许多sample,并且由于模型为节点中的每个sample估计相同的value,因此可能会有较大的误差(除非所有示例都具有相同的目标值)。但是建造太大的树会导致过拟合。我们可以控制多个超参数,这些参数决定树的深度和每个叶子中的sample数。在第二部分中,当我们使用交叉验证进行优化时,我们看到了如何选择这些超参数中的一些。\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"虽然我们不能检查模型中的每一棵树,但只看一棵树确实能让我们了解我们的模型是如何做出预测的。事实上,这种基于流程图的方法看起来很像人类的决策方式,一次只回答一个关于单个值的问题。基于决策树的集成简单地采用单个决策树的思想,并结合多个个体的预测,以创建一个比单个估计器具有更小方差的模型。树木的组合往往是非常准确的,而且也是直观的解释!"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
|
|
|
|
"source": []
|
|
|
|
"source": []
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
],
|
|
|
|