Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
hands-on-ml-zh
提交
461c6cc2
H
hands-on-ml-zh
项目概览
OpenDocCN
/
hands-on-ml-zh
通知
13
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hands-on-ml-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
461c6cc2
编写于
6月 07, 2018
作者:
Y
y3534365
提交者:
GitHub
6月 07, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 6.决策树.md
上级
091bc265
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
10 deletion
+10
-10
docs/6.决策树.md
docs/6.决策树.md
+10
-10
未找到文件。
docs/6.决策树.md
浏览文件 @
461c6cc2
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录