未验证 提交 461c6cc2 编写于 作者: Y y3534365 提交者: GitHub

Update 6.决策树.md

上级 091bc265
......@@ -55,7 +55,7 @@ from sklearn.tree import export_graphviz
我们的第一个决策树如图6-1.
![1528081141956](../images/chapter_6/102.jpg)
![1528081141956](../images/chapter_6/102)
## 开始预测
......@@ -89,7 +89,7 @@ $$
图6-2显示了决策树的决策边界。 粗的垂直线代表根节点(深度0)的决定边界:花瓣长度= 2.45厘米。由于左侧区域是纯的(只有Iris-Setosa),所以不能再进一步分裂。 然而,右边的区域是不纯的,所以深度1的右边节点在花瓣宽度= 1.75厘米处分裂(用虚线表示)。 又由于max_depth设置为2,决策树在那里停了下来。 但是,如果将max_depth设置为3,两个depth-2节点每个都将会添加另一个决策边界(用虚线表示)。
![1528084209205](pictures/103)
![1528084209205](../images/chapter_6/103)
> 模型小知识:白盒与黑盒
>
......@@ -119,7 +119,7 @@ Scikit-Learn 用分裂回归树( Classification And Regression Tree 简称CAR
算法会尝试最小化成本函数。方法如公式6-2
![1528086977613](pictures/104)
![1528086977613](../images/chapter_6/104)
当它成功的将训练集分成两部分之后, 它将会继续使用相同的递归式逻辑继续的分割子集, 然后是子集的子集。当达到预定的最大深度之后将会停止分裂(由 the max_depth hyperparameter最大深度参数决定), 或者是它找不到可以继续降低不纯度的分裂方法的时候。几个其他超参数(之后介绍)控制了其他的停止生长条件(min_samples_split , min_samples_leaf , min_weight_fraction_leaf , and max_leaf_nodes)。
......@@ -182,7 +182,7 @@ min_samples_split(节点在被分裂之前必须具有的最小样本数),
图6-3显示了对moons数据集(在第5章介绍过)进行训练生成的两个决策树模型, 左侧的图形对应的决策树使用默认超参数生成(没有限制生长条件), 右边的决策树模型设置为min_samples_leaf=4.很明显, 左边的模型过拟合了, 而右边的模型泛用性更好.
![1528200053568](pictures/105)
![1528200053568](../images/chapter_6/105)
## 回归
......@@ -196,7 +196,7 @@ tree_reg.fit(X, y)
结果如图6-4所示
![1528201231718](pictures/106)
![1528201231718](../images/chapter_6/106)
这棵树看起来非常类似于你之前建立的分类树, 它的主要区别在于,它不是预测每个节点中的样本所属的分类,而是预测一个具体的数值。 例如,假设您想对x~1~= 0.6的新实例进行预测。 从根开始遍历树, 最终到达预测值等于 0.1106的叶节点。该预测仅仅是与该叶节点相关的110个训练实例的平均目标值。 而这个预测结果在对应的110个实例上的均方误差(MSE)等于0.0151。
......@@ -204,17 +204,17 @@ tree_reg.fit(X, y)
(译者注释: 图里面的红线就是训练实例的平均目标值, 对应上图中的value)
![1528374511221](pictures/107)
![1528374511221](../images/chapter_6/107)
CART算法的工作方式与之前处理分类模型基本一样,不同之处在于,现在不再以最小化不纯度的方式分割训练集,而是试图以最小化MSE的方式分割训练集。
公式6-4显示了成本函数, 该算法试图最小化这个成本函数.
![1528375227547](pictures/108)
![1528375227547](../images/chapter_6/108)
和处理分类任务时一样, 决策树在处理回归问题的时候也容易过拟合.如果不添加任何正则化(默认的超参数), 你就会得到图6-6左侧的预测结果, 显然, 过度拟合的程度非常严重. 而当我们设置了min_samples_leaf = 10, 相对就会产生一个更加合适的模型了, 就如图6-6所示的那样.
![1528375360553](pictures/109)
![1528375360553](../images/chapter_6/109)
## 不稳定性
......@@ -224,11 +224,11 @@ CART算法的工作方式与之前处理分类模型基本一样,不同之处
解决这个难题的一种方式是使用PCA主成分分析(第八章), 这样通常能使训练结果变得更好一些.
![1528375963759](pictures/110)
![1528375963759](../images/chapter_6/110)
更加通俗的讲, 决策时的主要问题是它对训练数据的微小变化非常敏感, 举例来说, 我们仅仅从鸢尾花训练数据中将最宽的 Iris-Versicolor拿掉(花瓣长4.8厘米,宽1.8厘米), 然后重新训练决策树模型, 你可能就会得到图6-8中的模型.正如我们看到的那样, 决策树有了非常大的变化(原来的如图6-2),事实上, 由于Scikit-Learn的训练算法是非常随机的, 即使是相同的训练数据你也可能差别很打的模型(除非你设置了随机数种子).
![1528376468395](pictures/111)
![1528376468395](../images/chapter_6/111)
我们下一章中将会看到, 随机森林可以通过多棵树的平均预测值限制这种不稳定性.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册