Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
ml-mastery-zh
提交
16634e88
M
ml-mastery-zh
项目概览
OpenDocCN
/
ml-mastery-zh
10 个月 前同步成功
通知
2
Star
556
Fork
158
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
ml-mastery-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
16634e88
编写于
9月 11, 2019
作者:
T
tabeworks
提交者:
GitHub
9月 11, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
done v1
上级
df3aa539
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
13 deletion
+13
-13
docs/xgboost/avoid-overfitting-by-early-stopping-with-xgboost-in-python.md
...d-overfitting-by-early-stopping-with-xgboost-in-python.md
+13
-13
未找到文件。
docs/xgboost/avoid-overfitting-by-early-stopping-with-xgboost-in-python.md
浏览文件 @
16634e88
...
...
@@ -28,7 +28,7 @@
[
提前停止(early stopping)
](
https://en.wikipedia.org/wiki/Early_stopping
)
是一种训练复杂机器学习模型时避免过拟合的方法。
它通过监测在单独的测试数据集上训练模型的表现,并且
注意到一旦在固定数量的训练迭代之后测试数据集上的表现没有得到改善就
停止训练过程。
它通过监测在单独的测试数据集上训练模型的表现,并且
观察到一旦在固定数量的训练迭代之后测试数据集上的表现没有得到改善,就会
停止训练过程。
通过尝试自动选出测试数据集上的表现开始降低而训练数据集上的表现继续提高这样的过拟合发生迹象拐点来避免过拟合。
...
...
@@ -38,7 +38,7 @@
XGBoost模型可以在训练期间评估和报告模型在测试集上的表现。
它通过在训练模型和获取verbose
输出
中调用
**model.fit()**
的同时指定测试数据集以及评估度量(evaluation metric)来支持此功能。
它通过在训练模型和获取verbose
output
中调用
**model.fit()**
的同时指定测试数据集以及评估度量(evaluation metric)来支持此功能。
例如,我们可以在训练XGBoost模型时,在独立测试集(
**eval_set**
)上报告二值分类误差("error"),如下所示:
...
...
@@ -112,7 +112,7 @@ Accuracy: 77.95%
## 通过学习曲线评估XGBoost模型
我们可以在评估数据集上检视模型的表现,并通过绘制图
表
以更深入地展开了解训练中是如何学习的。
我们可以在评估数据集上检视模型的表现,并通过绘制图
像
以更深入地展开了解训练中是如何学习的。
在训练XGBoost模型时,我们为
**eval_metric**
参数提供了一对X和y数组。除了测试集,我们也可以一并提供训练数据集。它将说明模型在训练期间在训练集和测试集上分别表现的情况。
...
...
@@ -201,25 +201,25 @@ pyplot.show()
运行这段代码会显示每个epoch中训练数据集和测试数据集的分类误差。我们可以通过在
**fit()**
函数的调用中设置
**verbose = False**
(默认值)来关闭这个功能。
我们看到结果创建了两张图。第一张图显示了训练数据集和测试数据集
中
每个epoch中XGBoost模型的对数损失(logarithmic loss)。
我们看到结果创建了两张图。第一张图显示了训练数据集和测试数据集每个epoch中XGBoost模型的对数损失(logarithmic loss)。
![
XGBoost Learning Curve Log Loss
](
img/3dd164f486ba1862fa97f82eb6693360.jpg
)
XGBoost学习曲线(对数损失(log loss))
第二张图显示了训练数据集和测试数据集
中
每个epoch中XGBoost模型的分类误差(classification error)。
第二张图显示了训练数据集和测试数据集每个epoch中XGBoost模型的分类误差(classification error)。
![
XGBoost Learning Curve Classification Error
](
img/cdfec3000bac01a37daacb6f874ff978.jpg
)
XGBoost学习曲线(分类误差(classification error))
通过回顾logloss的图像,我们
像
是有提前停止学习过程的机会,也许在epoch 20到epoch 40之间的某个阶段。
通过回顾logloss的图像,我们
看起来
是有提前停止学习过程的机会,也许在epoch 20到epoch 40之间的某个阶段。
在分类误差的图像中,我们也观察到了类似的情况,误差似乎在epoch 40左右出现上升。
## 在XGBoost中使用提前停止(early stopping)
XGBoost支持在固定次数的迭代后提前停止(early stopping)。
XGBoost
可以
支持在固定次数的迭代后提前停止(early stopping)。
除了为每个epoch指定用于评估的度量和测试数据集之外,还必须指定一个epoch窗长,它代表没有观察到任何改善的epoch数目。它可以在
**early_stopping_rounds**
参数中实现。
...
...
@@ -277,18 +277,18 @@ Stopping. Best iteration:
[
32
]
validation_0
-
logloss
:
0.487297
```
我们可以看到模型在epoch 42停止训练(接近我们对学习曲线
手动
判断的预期),并且在epoch 32观察到具有最佳损失结果的模型。
我们可以看到模型在epoch 42停止训练(接近我们对学习曲线
人为
判断的预期),并且在epoch 32观察到具有最佳损失结果的模型。
通常情况下,选择
**early_stopping_rounds**
作为训练epoch总数(在这种情况下为 10%)是个不错的主意,或者尝试找到
对应的
可能观察到的学习曲线拐点时期。
通常情况下,选择
**early_stopping_rounds**
作为训练epoch总数(在这种情况下为 10%)是个不错的主意,或者尝试找到可能观察到的学习曲线拐点时期。
## 总结
在这篇文章中,您
实际了解了
监测性能表现和提前停止(early stopping)。
在这篇文章中,您
了解到了如何
监测性能表现和提前停止(early stopping)。
所学到的是:
所学到的
要点
是:
*
提前停止(early stopping)技术能够在训练数据集
上
发生过拟合之前就停止模型训练。
*
提前停止(early stopping)技术能够在训练数据集发生过拟合之前就停止模型训练。
*
如何在训练期间监测XGBoost模型的表现并绘制学习曲线。
*
如何在训练XGBoost模型中配置提前停止(early stopping)。
您对过拟合或这篇文章有任何疑问吗?请在评论中提出您的问题,我会尽力回答。
您对过拟合或这篇文章有任何疑问吗?请在评论中提出您的问题,我
将
会尽力回答。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录