提交 95dd35b5 编写于 作者: W wizardforcel

train => 训练, performance => 表现

上级 2f5dc5ae
......@@ -9,7 +9,7 @@
阅读这篇文章后,你会知道:
* 关于早期停止作为减少训练数据过度拟合的方法。
* 如何在训练期间监控 XGBoost 模型的性能并绘制学习曲线。
* 如何在训练期间监控 XGBoost 模型的表现并绘制学习曲线。
* 如何使用早期停止来提前停止在最佳时期训练 XGBoost 模型。
让我们开始吧。
......@@ -26,15 +26,15 @@
[早期停止](https://en.wikipedia.org/wiki/Early_stopping)是一种训练复杂机器学习模型的方法,以避免过度拟合。
它通过监视在单独的测试数据集上训练的模型的性能并且一旦在固定数量的训练迭代之后测试数据集上的性能没有改善就停止训练过程。
它通过监视在单独的测试数据集上训练的模型的表现并且一旦在固定数量的训练迭代之后测试数据集上的表现没有改善就停止训练过程。
它通过尝试自动选择测试数据集上的性能开始降低的拐点来避免过度拟合,同时随着模型开始过度拟合,训练数据集上的性能继续提高。
它通过尝试自动选择测试数据集上的表现开始降低的拐点来避免过度拟合,同时随着模型开始过度拟合,训练数据集上的表现继续提高。
性能度量可以是针对训练模型而优化的损失函数(例如对数损失),或者一般对问题感兴趣的外部度量(例如分类准确度)。
表现度量可以是针对训练模型而优化的损失函数(例如对数损失),或者一般对问题感兴趣的外部度量(例如分类准确度)。
## 使用 XGBoost 监控培训性能
## 使用 XGBoost 监控训练表现
XGBoost 模型可以在训练期间评估和报告模型的测试集上的性能
XGBoost 模型可以在训练期间评估和报告模型的测试集上的表现
它通过在训练模型和指定详细输出时调用 **model.fit()**时指定测试数据集和评估指标来支持此功能。
......@@ -55,7 +55,7 @@ XGBoost 支持一套评估指标,不仅限于:
完整列表在 XGBoost 参数网页的“[学习任务参数](http://xgboost.readthedocs.io/en/latest//parameter.html)”部分中提供。
例如,我们可以演示如何跟踪 [Pima 印第安人糖尿病数据集](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)的 XGBoost 模型训练的性能,可从 UCI 机器学习库获取(更新:[从此处下载](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。
例如,我们可以演示如何跟踪 [Pima 印第安人糖尿病数据集](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)的 XGBoost 模型训练的表现,可从 UCI 机器学习库获取(更新:[从此处下载](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。
完整示例如下:
......@@ -106,13 +106,13 @@ print("Accuracy: %.2f%%" % (accuracy * 100.0))
Accuracy: 77.95%
```
回顾所有输出,我们可以看到测试集上的模型性能平稳,甚至在培训结束时变得更糟。
回顾所有输出,我们可以看到测试集上的模型表现平稳,甚至在训练结束时变得更糟。
## 使用学习曲线评估 XGBoost 模型
我们可以在评估数据集上检索模型的性能并绘制它以深入了解在培训时如何展开学习。
我们可以在评估数据集上检索模型的表现并绘制它以深入了解在训练时如何展开学习。
在拟合 XGBoost 模型时,我们为 **eval_metric** 参数提供了一对 X 和 y 对。除了测试集,我们还可以提供训练数据集。这将提供一份报告,说明模型在培训期间对培训和测试集的执行情况。
在拟合 XGBoost 模型时,我们为 **eval_metric** 参数提供了一对 X 和 y 对。除了测试集,我们还可以提供训练数据集。这将提供一份报告,说明模型在训练期间对训练和测试集的执行情况。
例如:
......@@ -121,7 +121,7 @@ eval_set = [(X_train, y_train), (X_test, y_test)]
model.fit(X_train, y_train, eval_metric="error", eval_set=eval_set, verbose=True)
```
此外,通过调用 **model.evals_result()**函数,模型在训练后存储并使模型在每个评估集上的性能可用。这将返回评估数据集和分数的字典,例如:
此外,通过调用 **model.evals_result()**函数,模型在训练后存储并使模型在每个评估集上的表现可用。这将返回评估数据集和分数的字典,例如:
```py
results = model.evals_result()
......@@ -147,7 +147,7 @@ results['validation_0']['error']
此外,我们可以通过为 **fit()**函数的 eval_metric 参数提供一系列度量来指定更多评估度量来评估和收集。
然后,我们可以使用这些收集的性能度量来创建线图,并进一步了解模型在训练时期的训练和测试数据集上的表现。
然后,我们可以使用这些收集的表现度量来创建线图,并进一步了解模型在训练时期的训练和测试数据集上的表现。
下面是完整的代码示例,显示了如何在线图上显示收集的结果。
......@@ -281,12 +281,12 @@ Stopping. Best iteration:
## 摘要
在这篇文章中,您发现了监控性能和提前停止。
在这篇文章中,您发现了监控表现和提前停止。
你了解到:
* 关于在模型过度训练数据之前停止模型训练的早期停止技术。
* 如何在训练期间监控 XGBoost 模型的性能并绘制学习曲线。
* 如何在训练期间监控 XGBoost 模型的表现并绘制学习曲线。
* 如何在训练 XGBoost 模型时配置早期停止。
您对过度拟合或有关此帖子有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -221,7 +221,7 @@ Parallel Thread XGBoost and CV: 313.382301
你了解到:
* 如何检查系统上是否启用了 XGBoost 中的多线程支持。
* 如何增加线程数会影响训练 XGBoost 模型的性能
* 如何增加线程数会影响训练 XGBoost 模型的表现
* 如何在 Python 中最佳地配置 XGBoost 和交叉验证,以最短的运行时间。
您对 XGBoost 或此帖子的多线程支持有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -39,7 +39,7 @@
他还研究了树木中终端节点数量的影响,发现像 3 和 6 这样的值比 11,21 和 41 等更大的值更好。
> 在两种情况下,平均超过 100 个目标的最佳树大小是 L = 6.通过使用较大的树来增加基础学习器的容量通过“过度拟合”降低性能
> 在两种情况下,平均超过 100 个目标的最佳树大小是 L = 6.通过使用较大的树来增加基础学习器的容量通过“过度拟合”降低表现
在 H2O 中题为“[梯度提升机器学习](https://www.youtube.com/watch?v=wPqtzj5VZus)”的演讲中,Trevor Hastie 评论说,一般梯度提升比随机森林表现更好,后者反过来比单个决策树表现更好。
......@@ -51,7 +51,7 @@
> 虽然在许多应用中 J = 2 是不够的,但是 J>不可能。将需要 10。到目前为止的经验表明 4< = J< = 8 在增强的情况下工作良好,结果对该范围内的特定选择相当不敏感。
他们建议监控验证数据集的性能,以便校准树的数量,并在验证数据集的性能开始降低后使用早期停止程序。
他们建议监控验证数据集的表现,以便校准树的数量,并在验证数据集的表现开始降低后使用早期停止程序。
正如在弗里德曼的第一个梯度提升论文中,他们评论了树木数量(M)和学习率(v)之间的权衡,并建议学习率的一个小值< 0.1。
......@@ -76,11 +76,11 @@
在 R 中使用 gbm 软件包的标题为“ [Generalized Boosted Models:gbm 软件包的指南](http://www.saedsayad.com/docs/gbm2.pdf)”中,Greg Ridgeway 提供了一些使用启发式方法。他建议第一次将学习率(lambda)设置为尽可能小,然后使用交叉验证调整树的数量(迭代或 T)。
> 在实践中,我将 lambda 设置为尽可能小,然后通过交叉验证选择 T.当 lambda 尽可能小的性能时,性能最佳,并且对于越来越小的 lambda,边际效用越来越小。
> 在实践中,我将 lambda 设置为尽可能小,然后通过交叉验证选择 T.当 lambda 尽可能小的表现时,表现最佳,并且对于越来越小的 lambda,边际效用越来越小。
他评论了他将默认收缩率设置为 0.001 而不是 0.1 的小值的基本原理。
> 重要的是要知道较小的收缩值(几乎)总能提高预测性能。也就是说,设置收缩率= 0.001 几乎肯定会导致模型具有比设置收缩率= 0.01 更好的样本外预测性能。 ...收缩率= 0.001 的模型可能需要十倍于具有收缩率= 0.01 的模型的迭代次数
> 重要的是要知道较小的收缩值(几乎)总能提高预测表现。也就是说,设置收缩率= 0.001 几乎肯定会导致模型具有比设置收缩率= 0.01 更好的样本外预测表现。 ...收缩率= 0.001 的模型可能需要十倍于具有收缩率= 0.01 的模型的迭代次数
Ridgeway 还使用了大量的树(这里称为迭代),数千而不是数百
......
......@@ -2,7 +2,7 @@
> 原文: [https://machinelearningmastery.com/data-preparation-gradient-boosting-xgboost-python/](https://machinelearningmastery.com/data-preparation-gradient-boosting-xgboost-python/)
XGBoost 因其速度和性能而成为 Gradient Boosting 的流行实现。
XGBoost 因其速度和表现而成为 Gradient Boosting 的流行实现。
在内部,XGBoost 模型将所有问题表示为回归预测建模问题,仅将数值作为输入。如果您的数据格式不同,则必须将其准备为预期格式。
......
......@@ -2,7 +2,7 @@
> 原文: [https://machinelearningmastery.com/develop-first-xgboost-model-python-scikit-learn/](https://machinelearningmastery.com/develop-first-xgboost-model-python-scikit-learn/)
XGBoost 是梯度提升决策树的一种实现,旨在提高竞争机器学习速度和性能
XGBoost 是梯度提升决策树的一种实现,旨在提高竞争机器学习速度和表现
在这篇文章中,您将了解如何在 Python 中安装和创建第一个 XGBoost 模型。
......@@ -81,7 +81,7 @@ sudo python setup.py install
## 3.加载和准备数据
在本节中,我们将从文件加载数据并准备用于培训和评估 XGBoost 模型。
在本节中,我们将从文件加载数据并准备用于训练和评估 XGBoost 模型。
我们将从导入我们打算在本教程中使用的类和函数开始。
......@@ -107,7 +107,7 @@ X = dataset[:,0:8]
Y = dataset[:,8]
```
最后,我们必须将 X 和 Y 数据拆分为训练和测试数据集。训练集将用于准备 XGBoost 模型,测试集将用于进行新的预测,我们可以从中评估模型的性能
最后,我们必须将 X 和 Y 数据拆分为训练和测试数据集。训练集将用于准备 XGBoost 模型,测试集将用于进行新的预测,我们可以从中评估模型的表现
为此,我们将使用 scikit-learn 库中的 **train_test_split()**函数。我们还为随机数生成器指定种子,以便每次执行此示例时始终获得相同的数据分割。
......@@ -162,7 +162,7 @@ y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
```
现在我们已经使用拟合模型对新数据进行预测,我们可以通过将预测值与预期值进行比较来评估预测的性能。为此,我们将在 scikit-learn 中使用内置的 **accuracy_score()**函数。
现在我们已经使用拟合模型对新数据进行预测,我们可以通过将预测值与预期值进行比较来评估预测的表现。为此,我们将在 scikit-learn 中使用内置的 **accuracy_score()**函数。
```py
# evaluate predictions
......@@ -216,6 +216,6 @@ Accuracy: 77.95%
* 如何在您的系统上安装 XGBoost 以备 Python 使用。
* 如何在标准机器学习数据集上准备数据并训练您的第一个 XGBoost 模型。
* 如何使用 scikit-learn 进行预测并评估训练有素的 XGBoost 模型的性能
* 如何使用 scikit-learn 进行预测并评估训练有素的 XGBoost 模型的表现
您对 XGBoost 或该帖子有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -4,14 +4,14 @@
开发预测模型的目标是开发一个对看不见的数据准确的模型。
这可以使用统计技术来实现,其中训练数据集被仔细地用于估计模型在新的和未看到的数据上的性能
这可以使用统计技术来实现,其中训练数据集被仔细地用于估计模型在新的和未看到的数据上的表现
在本教程中,您将了解如何使用 Python 中的 XGBoost 评估梯度提升模型的性能
在本教程中,您将了解如何使用 Python 中的 XGBoost 评估梯度提升模型的表现
完成本教程后,您将了解到。
* 如何使用训练和测试数据集评估 XGBoost 模型的性能
* 如何使用 k-fold 交叉验证评估 XGBoost 模型的性能
* 如何使用训练和测试数据集评估 XGBoost 模型的表现
* 如何使用 k-fold 交叉验证评估 XGBoost 模型的表现
让我们开始吧。
......@@ -25,11 +25,11 @@
## 使用训练和测试集评估 XGBoost 模型
我们可以用来评估机器学习算法性能的最简单方法是使用不同的训练和测试数据集。
我们可以用来评估机器学习算法表现的最简单方法是使用不同的训练和测试数据集。
我们可以将原始数据集分成两部分。在第一部分训练算法,然后对第二部分进行预测,并根据预期结果评估预测。
拆分的大小可能取决于数据集的大小和细节,尽管通常使用 67%的数据进行培训,剩余的 33%用于测试。
拆分的大小可能取决于数据集的大小和细节,尽管通常使用 67%的数据进行训练,剩余的 33%用于测试。
该算法评估技术很快。它非常适用于大型数据集(数百万条记录),其中有强有力的证据表明数据的两个分裂都代表了潜在的问题。由于速度的原因,当您正在调查的算法训练缓慢时,使用此方法很有用。
......@@ -68,7 +68,7 @@ accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
```
运行此示例总结了测试集上模型的性能
运行此示例总结了测试集上模型的表现
```py
Accuracy: 77.95%
......@@ -76,15 +76,15 @@ Accuracy: 77.95%
## 使用 k-fold 交叉验证评估 XGBoost 模型
交叉验证是一种可用于估计机器学习算法性能的方法,其方差小于单个列车测试集拆分。
交叉验证是一种可用于估计机器学习算法表现的方法,其方差小于单个列车测试集拆分。
它的工作原理是将数据集分成 k 部分(例如 k = 5 或 k = 10)。每次分割数据称为折叠。该算法在 k-1 折叠上进行训练,其中一个被扣住并在保持的背部折叠上进行测试。重复这一过程,以便数据集的每个折叠都有机会成为阻碍测试集。
运行交叉验证后,您最终得到 k 个不同的性能分数,您可以使用均值和标准差来总结。
运行交叉验证后,您最终得到 k 个不同的表现分数,您可以使用均值和标准差来总结。
结果是在给定测试数据的情况下,对新数据的算法性能进行更可靠的估计。它更准确,因为算法在不同数据上被多次训练和评估。
结果是在给定测试数据的情况下,对新数据的算法表现进行更可靠的估计。它更准确,因为算法在不同数据上被多次训练和评估。
k 的选择必须允许每个测试分区的大小足够大以成为问题的合理样本,同时允许对算法的训练测试评估的足够重复以提供对看不见的数据的算法性能的公平估计。 。对于数千或数万个观测值中的适度大小的数据集,k 值为 3,5 和 10 是常见的。
k 的选择必须允许每个测试分区的大小足够大以成为问题的合理样本,同时允许对算法的训练测试评估的足够重复以提供对看不见的数据的算法表现的公平估计。 。对于数千或数万个观测值中的适度大小的数据集,k 值为 3,5 和 10 是常见的。
我们可以使用 scikit-learn 中提供的 k-fold 交叉验证支持。首先,我们必须创建 [KFold](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.KFold.html) 对象,指定折叠的数量和数据集的大小。然后,我们可以将此方案与特定数据集一起使用。来自 scikit-learn 的 **cross_val_score()**函数允许我们使用交叉验证方案评估模型,并返回每个折叠上训练的每个模型的分数列表。
......@@ -113,7 +113,7 @@ results = cross_val_score(model, X, Y, cv=kfold)
print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))
```
运行此示例总结了数据集上默认模型配置的性能,包括平均值和标准差分类精度。
运行此示例总结了数据集上默认模型配置的表现,包括平均值和标准差分类精度。
```py
Accuracy: 76.69% (7.11%)
......@@ -151,11 +151,11 @@ Accuracy: 76.95% (5.88%)
## 什么技术使用时
* 通常,k 折交叉验证是用于评估机器学习算法在看不见的数据上的性能的金标准,其中 k 设置为 3,5 或 10。
* 通常,k 折交叉验证是用于评估机器学习算法在看不见的数据上的表现的金标准,其中 k 设置为 3,5 或 10。
* 当存在大量类或每个类的实例不平衡时,使用分层交叉验证来强制执行类分发。
* 使用慢速算法时,使用训练/测试分割有利于提高速度,并在使用大型数据集时产生具有较低偏差的性能估计。
* 使用慢速算法时,使用训练/测试分割有利于提高速度,并在使用大型数据集时产生具有较低偏差的表现估计。
最好的建议是试验并找到一种快速解决问题的技术,并产生可用于制定决策的合理性能估算。
最好的建议是试验并找到一种快速解决问题的技术,并产生可用于制定决策的合理表现估算。
如果有疑问,请对回归问题使用 10 倍交叉验证,并对分类问题进行 10 倍交叉验证。
......@@ -165,8 +165,8 @@ Accuracy: 76.95% (5.88%)
具体来说,你学到了:
* 如何将数据集拆分为训练和测试子集以进行训练和评估模型的性能
* 如何在数据集的不同子集上创建 k XGBoost 模型并平均得分以获得更稳健的模型性能估计。
* 如何将数据集拆分为训练和测试子集以进行训练和评估模型的表现
* 如何在数据集的不同子集上创建 k XGBoost 模型并平均得分以获得更稳健的模型表现估计。
* 启发式帮助您在问题中选择列车测试拆分和 k 折交叉验证。
您对如何评估 XGBoost 模型或该帖子的性能有任何疑问吗?在下面的评论中提出您的问题,我会尽力回答。
\ No newline at end of file
您对如何评估 XGBoost 模型或该帖子的表现有任何疑问吗?在下面的评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -30,7 +30,7 @@
对于数据集中的每个属性,明确计算此重要性,允许对属性进行排名并相互比较。
通过每个属性分割点改进性能度量的量来计算单个决策树的重要性,并由节点负责的观察数量加权。性能度量可以是用于选择分裂点的纯度(基尼指数)或另一个更具体的误差函数。
通过每个属性分割点改进表现度量的量来计算单个决策树的重要性,并由节点负责的观察数量加权。表现度量可以是用于选择分裂点的纯度(基尼指数)或另一个更具体的误差函数。
然后,在模型中的所有决策树中对要素重要性进行平均。
......@@ -221,7 +221,7 @@ Thresh=0.186, n=2, Accuracy: 71.65%
Thresh=0.208, n=1, Accuracy: 63.78%
```
我们可以看到模型的性能通常随着所选特征的数量而减少。
我们可以看到模型的表现通常随着所选特征的数量而减少。
在这个问题上,需要权衡测试集合精度的特征,我们可以决定采用较不复杂的模型(较少的属性,如 n = 4),并接受估计精度的适度降低,从 77.95%降至 76.38%。
......
......@@ -10,7 +10,7 @@
* 从学习理论和 AdaBoost 推动的起源。
* 梯度提升的工作原理包括损失函数,弱学习器和加法模型。
* 如何通过各种正则化方案提高基本算法的性能
* 如何通过各种正则化方案提高基本算法的表现
让我们开始吧。
......@@ -137,7 +137,7 @@ AdaBoost 和相关算法首先由 Breiman 称之为 ARCing 算法的统计框架
梯度提升是一种贪婪算法,可以快速过度训练数据集。
它可以受益于惩罚算法的各个部分的正则化方法,并且通常通过减少过度拟合来改善算法的性能
它可以受益于惩罚算法的各个部分的正则化方法,并且通常通过减少过度拟合来改善算法的表现
在本节中,我们将介绍基本梯度提升的 4 个增强功能:
......@@ -273,6 +273,6 @@ AdaBoost 和相关算法首先由 Breiman 称之为 ARCing 算法的统计框架
* 提升学习理论和 AdaBoost 的历史。
* 梯度提升算法如何与损失函数,弱学习器和附加模型一起工作。
* 如何通过正则化提高梯度提升的性能
* 如何通过正则化提高梯度提升的表现
您对梯度提升算法或此帖有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -4,7 +4,7 @@
XGBoost 是一种算法,最近一直主导应用机器学习和 Kaggle 竞争结构化或表格数据。
XGBoost 是为速度和性能而设计的梯度提升决策树的实现。
XGBoost 是为速度和表现而设计的梯度提升决策树的实现。
在这篇文章中,您将发现 XGBoost 并轻松了解它的来源,来自何处以及如何了解更多信息。
......@@ -44,7 +44,7 @@ XGBoost 是一个软件库,您可以在您的机器上下载和安装,然后
## XGBoost 功能
该库激光专注于计算速度和模型性能,因此几乎没有多余的装饰。尽管如此,它确实提供了许多高级功能。
该库激光专注于计算速度和模型表现,因此几乎没有多余的装饰。尽管如此,它确实提供了许多高级功能。
### 型号特点
......@@ -84,13 +84,13 @@ XGBoost 是免费的开源软件,可在许可的 Apache-2 许可下使用。
通常,XGBoost 很快。与梯度提升的其他实现相比,真的很快。
[Szilard Pafka](https://www.linkedin.com/in/szilard) 进行了一些客观的基准测试,比较了 XGBoost 与梯度提升和袋装决策树的其他实现的性能。他在 2015 年 5 月的博客文章“[基准随机森林实施基准](http://datascience.la/benchmarking-random-forest-implementations/)”中写下了他的结果。
[Szilard Pafka](https://www.linkedin.com/in/szilard) 进行了一些客观的基准测试,比较了 XGBoost 与梯度提升和袋装决策树的其他实现的表现。他在 2015 年 5 月的博客文章“[基准随机森林实施基准](http://datascience.la/benchmarking-random-forest-implementations/)”中写下了他的结果。
他还提供了 [GitHub](https://github.com/szilard/benchm-ml) 上的所有代码以及更为广泛的硬数字结果报告。
![Benchmark Performance of XGBoost](img/6198624aaad562ea913e9dd529a072e5.jpg)
XGBoost 的基准性能,取自[基准随机森林实施](http://datascience.la/benchmarking-random-forest-implementations/)
XGBoost 的基准表现,取自[基准随机森林实施](http://datascience.la/benchmarking-random-forest-implementations/)
他的结果显示 XGBoost 几乎总是比 R,Python Spark 和 H2O 的其他基准测试实现更快。
......@@ -100,7 +100,7 @@ XGBoost 的基准性能,取自[基准随机森林实施](http://datascience.la
- Szilard Pafka,[基准随机森林实施基准](http://datascience.la/benchmarking-random-forest-implementations/)
### 2\. XGBoost 模型性能
### 2\. XGBoost 模型表现
XGBoost 在分类和回归预测建模问题上支配结构化或表格数据集。
......@@ -233,8 +233,8 @@ sudo pip install xgboost
你了解到:
* XGBoost 是一个用于开发快速和高性能梯度提升树模型的库。
* XGBoost 在一系列困难的机器学习任务中实现了最佳性能
* XGBoost 是一个用于开发快速和高表现梯度提升树模型的库。
* XGBoost 在一系列困难的机器学习任务中实现了最佳表现
* 您可以从命令行,Python 和 R 使用此库以及如何开始使用。
你用过 XGBoost 吗?在下面的评论中分享您的经验。
......
......@@ -2,9 +2,9 @@
> 原文: [https://machinelearningmastery.com/save-gradient-boosting-models-xgboost-python/](https://machinelearningmastery.com/save-gradient-boosting-models-xgboost-python/)
XGBoost 可用于使用梯度提升算法为表格数据创建一些性能最佳的模型。
XGBoost 可用于使用梯度提升算法为表格数据创建一些表现最佳的模型。
经过培训,将模型保存到文件中以便以后用于预测新的测试和验证数据集以及全新数据通常是一种很好的做法。
经过训练,将模型保存到文件中以便以后用于预测新的测试和验证数据集以及全新数据通常是一种很好的做法。
在本文中,您将了解如何使用标准 Python pickle API 将 XGBoost 模型保存到文件中。
......
......@@ -14,7 +14,7 @@ _**你应该使用哪种机器学习算法?**_
* 该集合树算法在各种数据集中表现良好。
* 由于没有银弹​​算法,因此测试一套问题的算法至关重要。
* 测试给定算法的一组配置至关重要,因为它可以使某些问题的性能提高 50%。
* 测试给定算法的一组配置至关重要,因为它可以使某些问题的表现提高 50%。
让我们开始吧。
......@@ -111,13 +111,13 @@ scikit-learn 库用于实现这些算法。
> 整个实验设计总共包含超过 550 万 ML 算法和参数评估,从而从多个角度分析了丰富的数据集......
对每个数据集进行算法性能排序,然后计算每个算法的平均等级。
对每个数据集进行算法表现排序,然后计算每个算法的平均等级。
这提供了一个粗略且易于理解的概念,即平均哪些算法表现良好。
结果表明,梯度提升和随机森林的等级最低(表现最好),朴素贝叶斯方法的平均等级最高(表现最差)。
> 事后测试强调了 Gradient Tree Boosting 的令人印象深刻的性能,其显着优于除了随机森林之外的每个算法(p <0.05)。 0.01 级。
> 事后测试强调了 Gradient Tree Boosting 的令人印象深刻的表现,其显着优于除了随机森林之外的每个算法(p <0.05)。 0.01 级。
这是从一篇很好的图表中得到的证明,摘自论文。
......@@ -145,11 +145,11 @@ scikit-learn 库用于实现这些算法。
![Algorithm performance improvement via parameter tuning](img/8fb7384cd57a9976b52fda017579b31a.jpg)
通过参数调整提高算法性能
通过参数调整提高算法表现
并非所有算法都是必需的。
结果发现,在 165 个测试数据集中的 106 个中,五个算法和特定参数的性能达到了 1%。
结果发现,在 165 个测试数据集中的 106 个中,五个算法和特定参数的表现达到了 1%。
建议将这五种算法作为生物信息学中给定数据集上的点检查算法的起点,但我还建议更一般:
......@@ -159,7 +159,7 @@ scikit-learn 库用于实现这些算法。
* 额外的树木
* Logistic 回归
本文提供了这些算法的表格,包括推荐的参数设置和所涵盖的数据集的数量,例如:算法和配置达到最高 1%的性能
本文提供了这些算法的表格,包括推荐的参数设置和所涵盖的数据集的数量,例如:算法和配置达到最高 1%的表现
![Suggested Algorithms](img/ca386d1ff537228b0aaefe7972466f51.jpg)
......@@ -173,7 +173,7 @@ scikit-learn 库用于实现这些算法。
如果有疑问或时间压力,请在数据集上使用集合树算法,例如梯度提升和随机森林。
> 该分析展示了最先进的基于树的集成算法的强度,同时也显示了 ML 算法性能的依赖于问题的性质。
> 该分析展示了最先进的基于树的集成算法的强度,同时也显示了 ML 算法表现的依赖于问题的性质。
### 2.现场检查和调整
......@@ -205,7 +205,7 @@ scikit-learn 库用于实现这些算法。
* 该集合树算法在各种数据集中表现良好。
* 由于没有银弹​​算法,因此测试一套问题的算法至关重要。
* 测试给定算法的一组配置至关重要,因为它可以使某些问题的性能提高 50%。
* 测试给定算法的一组配置至关重要,因为它可以使某些问题的表现提高 50%。
你有任何问题吗?
在下面的评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -33,7 +33,7 @@
使用贪婪搜索过程创建每个决策树,以选择最佳地最小化目标函数的分割点。这可能导致树一次又一次地使用相同的属性甚至相同的分裂点。
[Bagging](http://machinelearningmastery.com/bagging-and-random-forest-ensemble-algorithms-for-machine-learning/) 是一种技术,其中创建决策树的集合,每个决策树来自训练数据的不同行的随机子集。结果是,从树集合中获得了更好的性能,因为样本中的随机性允许创建略微不同的树,从而增加了集合预测的方差。
[Bagging](http://machinelearningmastery.com/bagging-and-random-forest-ensemble-algorithms-for-machine-learning/) 是一种技术,其中创建决策树的集合,每个决策树来自训练数据的不同行的随机子集。结果是,从树集合中获得了更好的表现,因为样本中的随机性允许创建略微不同的树,从而增加了集合预测的方差。
通过允许在选择分割点时对特征(列)进行二次采样,随机森林更进一步,向树集合添加进一步的方差。
......@@ -136,7 +136,7 @@ Best: -0.000647 using {'subsample': 0.3}
-0.001239 (0.001730) with: {'subsample': 1.0}
```
我们可以绘制这些平均值和标准差对数损失值,以更好地理解性能如何随子采样值变化。
我们可以绘制这些平均值和标准差对数损失值,以更好地理解表现如何随子采样值变化。
![Plot of Tuning Row Sample Rate in XGBoost](img/8656295302bbaecbeb416213b9a54cde.jpg)
......@@ -144,7 +144,7 @@ XGBoost 中调整行采样率的图
我们可以看到确实有 30%的人具有最佳的平均表现,但我们也可以看到,随着比率的增加,表现的差异也会显着增加。
值得注意的是,所有**子样本**值的平均性能优于没有子采样的平均性能**子样本= 1.0** )。
值得注意的是,所有**子样本**值的平均表现优于没有子采样的平均表现**子样本= 1.0** )。
## 按树在 XGBoost 中调整列子采样
......@@ -202,7 +202,7 @@ pyplot.savefig('colsample_bytree.png')
Running this example prints the best configuration as well as the log loss for each tested configuration.
我们可以看到该模型的最佳性能**colsample_bytree = 1.0** 。这表明对此问题的子采样列不会增加价值。
我们可以看到该模型的最佳表现**colsample_bytree = 1.0** 。这表明对此问题的子采样列不会增加价值。
```py
Best: -0.001239 using {'colsample_bytree': 1.0}
......@@ -217,7 +217,7 @@ Best: -0.001239 using {'colsample_bytree': 1.0}
-0.001239 (0.001730) with: {'colsample_bytree': 1.0}
```
绘制结果,我们可以看到模型平台的性能(至少在这个尺度上),其值在 0.5 到 1.0 之间。
绘制结果,我们可以看到模型平台的表现(至少在这个尺度上),其值在 0.5 到 1.0 之间。
![Plot of Tuning Per-Tree Column Sampling in XGBoost](img/25700c450ba1f3aa55ec915c531c8140.jpg)
......@@ -292,7 +292,7 @@ Best: -0.001062 using {'colsample_bylevel': 0.7}
-0.001239 (0.001730) with: {'colsample_bylevel': 1.0}
```
我们可以绘制每个 **colsample_bylevel** 变体的性能。结果显示相对较低的方差,并且在此规模的值为 0.3 之后,表现似乎是性能的平台。
我们可以绘制每个 **colsample_bylevel** 变体的表现。结果显示相对较低的方差,并且在此规模的值为 0.3 之后,表现似乎是表现的平台。
![Plot of Tuning Per-Split Column Sampling in XGBoost](img/f8330b8c24fa2c6b765dafcc072cc850.jpg)
......
......@@ -2,7 +2,7 @@
> 原文: [https://machinelearningmastery.com/train-xgboost-models-cloud-amazon-web-services/](https://machinelearningmastery.com/train-xgboost-models-cloud-amazon-web-services/)
XGBoost 库提供了针对速度和性能而设计的梯度提升实现。
XGBoost 库提供了针对速度和表现而设计的梯度提升实现。
它的实现是为了充分利用您的计算资源,包括所有 CPU 内核和内存。
......@@ -410,4 +410,4 @@ exit
* 如何安装在 Python 中运行 XGBoost 库所需的所有必需软件。
* 如何将数据和代码传输到服务器并使用服务器上的所有核心训练大型模型。
您对在 Amazon Web Services 或此帖子上培训 XGBoost 模型有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
您对在 Amazon Web Services 或此帖子上训练 XGBoost 模型有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
......@@ -67,7 +67,7 @@ learning_rate = [0.0001, 0.001, 0.01, 0.1, 0.2, 0.3]
要测试的学习率有 6 种变化,每种变化将使用 10 倍交叉验证进行评估,这意味着总共需要训练和评估 6×10 或 60 个 XGBoost 模型。
将打印每个学习率的对数损失以及导致最佳性能的值。
将打印每个学习率的对数损失以及导致最佳表现的值。
```py
# XGBoost on Otto dataset, Tune learning_rate
......@@ -144,9 +144,9 @@ n_estimators = [100, 200, 300, 400, 500]
learning_rate = [0.0001, 0.001, 0.01, 0.1]
```
**n_estimators** 有 5 种变体, **learning_rate** 有 4 种变体。每个组合将使用 10 倍交叉验证进行评估,因此总共需要培训和评估 4x5x10 或 200 个 XGBoost 模型。
**n_estimators** 有 5 种变体, **learning_rate** 有 4 种变体。每个组合将使用 10 倍交叉验证进行评估,因此总共需要训练和评估 4x5x10 或 200 个 XGBoost 模型。
期望的是,对于给定的学习率,随着树木数量的增加,性能将提高然后稳定。完整的代码清单如下。
期望的是,对于给定的学习率,随着树木数量的增加,表现将提高然后稳定。完整的代码清单如下。
```py
# XGBoost on Otto dataset, Tune learning_rate and n_estimators
......@@ -220,17 +220,17 @@ Best: -0.001152 using {'n_estimators': 300, 'learning_rate': 0.1}
我们可以看到观察到的最佳结果是有 300 棵树的学习率为 0.1。
很难从原始数据和小的负日志损失结果中挑选出趋势。下面是每个学习率的图表,显示了树木数量变化时的对数损失性能
很难从原始数据和小的负日志损失结果中挑选出趋势。下面是每个学习率的图表,显示了树木数量变化时的对数损失表现
![Tuning Learning Rate and Number of Trees in XGBoost](img/512a1564756908ccd4ee7153325849f8.jpg)
调整 XGBoost 中的学习率和树数
我们可以看到预期的总趋势成立,其中性能(反向对数损失)随着树木数量的增加而提高。
我们可以看到预期的总趋势成立,其中表现(反向对数损失)随着树木数量的增加而提高。
对于较小的学习率,性能通常较差,这表明可能需要更多的树木。我们可能需要将树的数量增加到数千,这可能在计算上非常昂贵。
对于较小的学习率,表现通常较差,这表明可能需要更多的树木。我们可能需要将树的数量增加到数千,这可能在计算上非常昂贵。
由于图的大 y 轴比例, **learning_rate = 0.1** 的结果变得模糊。我们可以只为 **learning_rate = 0.1** 提取性能测量并直接绘制它们。
由于图的大 y 轴比例, **learning_rate = 0.1** 的结果变得模糊。我们可以只为 **learning_rate = 0.1** 提取表现测量并直接绘制它们。
```py
# Plot performance for learning_rate=0.1
......@@ -244,7 +244,7 @@ pyplot.title('XGBoost learning_rate=0.1 n_estimators vs Log Loss')
pyplot.show()
```
运行此代码会显示随着树木数量的增加而提高的性能,其次是 400 和 500 棵树的性能平稳。
运行此代码会显示随着树木数量的增加而提高的表现,其次是 400 和 500 棵树的表现平稳。
![Plot of Learning Rate=0.1 and varying the Number of Trees in XGBoost](img/4ae61c8193cfeb023b5aa42a8262e76e.jpg)
......
......@@ -39,7 +39,7 @@
大多数梯度提升的实现默认配置有相对较少数量的树,例如数百或数千。
一般原因是,在大多数问题上,添加超出限制的更多树不会改善模型的性能
一般原因是,在大多数问题上,添加超出限制的更多树不会改善模型的表现
原因在于构造了增强树模型的方式,顺序地每个新树尝试建模并校正由先前树序列产生的错误。很快,该模型达到了收益递减的程度。
......@@ -215,7 +215,7 @@ Best: -0.001236 using {'max_depth': 5}
我们可以通过评估 **n_estimators****max_depth** 配置值的网格来研究这种关系。为避免评估花费太长时间,我们将限制评估的配置值总数。选择参数来梳理关系而不是优化模型。
我们将创建一个包含 4 个不同 n_estimators 值(50,100,150,200)和 4 个不同 max_depth 值(2,4,6,8)的网格,并且将使用 10 倍交叉验证来评估每个组合。将培训和评估总共 4 * 4 * 10 或 160 个型号。
我们将创建一个包含 4 个不同 n_estimators 值(50,100,150,200)和 4 个不同 max_depth 值(2,4,6,8)的网格,并且将使用 10 倍交叉验证来评估每个组合。将训练和评估总共 4 * 4 * 10 或 160 个型号。
完整的代码清单如下。
......
......@@ -50,7 +50,7 @@ XGBoost 与 Python 迷你课程
* **第 01 课**:Gradient Boosting 简介。
* **第 02 课**:XGBoost 简介。
* **第 03 课**:开发你的第一个 XGBoost 模型。
* **第 04 课**:监控性能和提前停止。
* **第 04 课**:监控表现和提前停止。
* **第 05 课**:功能与 XGBoost 的重要性。
* **第 06 课**:如何配置梯度提升。
* **第 07 课**:XGBoost Hyperparameter Tuning。
......@@ -87,11 +87,11 @@ Gradient Boosting 算法涉及三个要素:
## 第 02 课:XGBoost 简介
XGBoost 是为速度和性能而设计的梯度提升决策树的实现。
XGBoost 是为速度和表现而设计的梯度提升决策树的实现。
XGBoost 代表 e **X** treme **G** radient **Boosti** ng。
它由陈天琪开发,激光专注于计算速度和模型性能,因此几乎没有多余的装饰。
它由陈天琪开发,激光专注于计算速度和模型表现,因此几乎没有多余的装饰。
除了支持该技术的所有关键变体之外,真正感兴趣的是通过精心设计实施所提供的速度,包括:
......@@ -102,7 +102,7 @@ XGBoost 代表 e **X** treme **G** radient **Boosti** ng。
传统上,梯度提升实现很慢,因为必须构造每个树并将其添加到模型中的顺序性质。
XGBoost 开发中的性能已经成为最好的预测建模算法之一,现在可以利用硬件平台的全部功能,或者您可能在云中租用的超大型计算机。
XGBoost 开发中的表现已经成为最好的预测建模算法之一,现在可以利用硬件平台的全部功能,或者您可能在云中租用的超大型计算机。
因此,XGBoost 一直是竞争机器学习的基石,是赢家赢得和推荐的技术。例如,以下是一些最近的 Kaggle 比赛获奖者所说的话:
......@@ -177,9 +177,9 @@ print("Accuracy: %.2f%%" % (accuracy * 100.0))
在下一课中,我们将研究如何使用早期停止来限制过度拟合。
## 第 04 课:监控性能和提前停止
## 第 04 课:监控表现和提前停止
XGBoost 模型可以在训练期间评估和报告模型的测试集上的性能
XGBoost 模型可以在训练期间评估和报告模型的测试集上的表现
它通过在训练模型和指定详细输出( **verbose = True** )时调用 **model.fit()**时指定测试数据集和评估指标来支持此功能。
......@@ -190,7 +190,7 @@ eval_set = [(X_test, y_test)]
model.fit(X_train, y_train, eval_metric="error", eval_set=eval_set, verbose=True)
```
使用此配置运行模型将在添加每个树后报告模型的性能。例如:
使用此配置运行模型将在添加每个树后报告模型的表现。例如:
```py
...
......@@ -198,7 +198,7 @@ model.fit(X_train, y_train, eval_metric="error", eval_set=eval_set, verbose=True
[90] validation_0-error:0.208661
```
一旦没有对模型进行进一步改进,我们就可以使用此评估来停止培训
一旦没有对模型进行进一步改进,我们就可以使用此评估来停止训练
我们可以通过在调用 **model.fit()**时将 **early_stopping_rounds** 参数设置为在停止训练之前验证数据集未见改进的迭代次数来完成此操作。
......@@ -295,7 +295,7 @@ pyplot.show()
一个好的通用配置策略如下:
1. 运行默认配置并查看培训和验证数据集上的学习曲线图。
1. 运行默认配置并查看训练和验证数据集上的学习曲线图。
2. 如果系统过度学习,则降低学习率和/或增加树木数量。
3. 如果系统学习不足,可以通过提高学习率和/或减少树木数量来加快学习速度。
......@@ -309,7 +309,7 @@ pyplot.show()
scikit-learn 框架提供了搜索参数组合的功能。
此功能在 **GridSearchCV** 类中提供,可用于发现配置模型以获得最佳性能的最佳方法。
此功能在 **GridSearchCV** 类中提供,可用于发现配置模型以获得最佳表现的最佳方法。
例如,我们可以定义一个树的数量( **n_estimators** )和树大小( **max_depth** )的网格,通过将网格定义为:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册