forked from apachecn/Interview
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Leytton
authored and
Leytton
committed
Oct 16, 2019
1 parent
323d15c
commit 4c38dd1
Showing
5 changed files
with
21 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,7 +10,7 @@ PS:水平有限,欢迎交流指正([email protected]) | |
你已经建立了一个模型。但是它好不好呢? | ||
在本节课中,你将学习使用模型验证来度量模型的质量。度量模型质量是迭代改进模型的关键。 | ||
|
||
# 1、什么是模型验证 | ||
## 1、什么是模型验证 | ||
你将需要评估几乎所有构建的模型。在大多数应用程序中,模型质量的相关度量是预测精度。换言之,模型预测结果是否接近实际发生情况。 | ||
|
||
`许多人在测量预测精度时犯了一个巨大的错误。他们用训练数据进行预测,并将预测结果与训练数据中的目标值进行比较。`你很快就会发现这个弊端并且学习如何解决它,先让我们想一下该怎么做吧。 | ||
|
@@ -61,7 +61,7 @@ mean_absolute_error(y, predicted_home_prices) | |
``` | ||
434.71594577146544 | ||
``` | ||
# 2、“样本内”分数问题 | ||
## 2、“样本内”分数问题 | ||
刚刚计算的测量值可以称为“样本内”分数。我们使用了单个的房屋“样本”来构建模型并对其进行评估。这就是弊端产生原因。 | ||
|
||
想象一下,在大型房地产市场中,门的颜色与房价无关。 | ||
|
@@ -74,7 +74,7 @@ mean_absolute_error(y, predicted_home_prices) | |
由于模型的实用价值体现在对新数据的预测,所以我们需要使用没有参与模型构建的数据,来度量模型性能。 | ||
最直接的方法是从模型构建过程中`排除一些数据`,然后使用这些数据来测试模型的准确性。这些数据称为`验证数据`。 | ||
|
||
# 3、编程实现 | ||
## 3、编程实现 | ||
`scikit-learn`库有一个函数`train_test_split`,用于将数据分成两部分。我们将使用一部分数据作为训练数据来适应模型,并将使用另一部分数据作为验证数据来计算`mean_absolute_error`。 | ||
|
||
代码如下: | ||
|
@@ -99,15 +99,15 @@ print(mean_absolute_error(val_y, val_predictions)) | |
260585.51323434475 | ||
``` | ||
|
||
# 3、哇! | ||
## 3、哇! | ||
|
||
样本内数据的平均绝对误差是500美元。样本外价格超过25万美元。 | ||
|
||
这就是一个几乎完全正确的模型和一个不实用模型之间的区别。实际上,验证数据中的平均房屋价值为110万美元。因此,预测误差约为实际平均房价的四分之一。 | ||
|
||
有很多方法可以改进这个模型,比如尝试找到更好的特征或使用不同类型的模型。 | ||
|
||
# 4、去吧,皮卡丘 | ||
## 4、去吧,皮卡丘 | ||
在我们考虑改进这个模型之前,请自己尝试[模型验证](https://www.kaggle.com/kernels/fork/1259097)。 | ||
|
||
原文: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ PS:水平有限,欢迎交流指正([email protected]) | |
|
||
在这一步的最后,你将了解欠拟合和过拟合的概念,并将能够应用这些概念使你的模型更加准确。 | ||
|
||
# 1、尝试不同的模型 | ||
## 1、尝试不同的模型 | ||
|
||
现在你已经有了一种可靠的方法来度量模型的准确性,你可以使用其他模型进行试验,看看哪个模型的预测效果最好。那么有哪些模型可选择呢? | ||
|
||
|
@@ -31,7 +31,7 @@ PS:水平有限,欢迎交流指正([email protected]) | |
|
||
![在这里插入图片描述](/img/learn/intro-to-machine-learning/5.2.png) | ||
|
||
# 2、案例 | ||
## 2、案例 | ||
有几种方法可以控制树的深度,树的一些路径可以比其他路径有更大的深度。但是`max_leaf_nodes`参数提供了一种非常合适的方法来控制`过拟合`和`欠拟合`。我们允许模型生成的叶子越多,在上图中就越接近`过拟合区域`。 | ||
|
||
我们可以使用一个实用函数来比较不同`max_leaf_nodes`值模型的`MAE分数`: | ||
|
@@ -83,13 +83,13 @@ Max leaf nodes: 5000 Mean Absolute Error: 254983 | |
``` | ||
在列出的选项中,500个是最佳的叶子数。 | ||
|
||
# 3、结论 | ||
## 3、结论 | ||
|
||
结论是,构建模型可能遇到这两种情况: | ||
- `过拟合`: 捕捉那些在未来不会重现的虚假模式,导致预测不那么准确。 | ||
- `欠拟合`: 未能捕捉到相关的模式,导致预测不那么准确。 | ||
|
||
我们使用不参与模型训练的验证数据来度量候选模型的准确性。这让我们可以尝试多种候选模型后,保留最佳模型。 | ||
|
||
# 4、去吧,皮卡丘 | ||
## 4、去吧,皮卡丘 | ||
尝试[优化你之前构建的模型](https://www.kaggle.com/kernels/fork/1259126) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,14 +7,14 @@ | |
PS:水平有限,欢迎交流指正([email protected]) | ||
|
||
# 1、介绍 | ||
## 1、介绍 | ||
`决策树`给你留下一个难题。一颗较深、叶子多的树将会`过拟合`,因为每一个预测都来自叶子上仅有的几个历史训练数据。一颗较浅、叶子少的树将会`欠拟合`,因为它不能在原始数据中捕捉到那么多的差异。 | ||
|
||
即使是当今最精良的建模技术,也面临着拟合不足和拟合过度之间问题。但是,许多模型通过一些不错的点子来提升效果。我们将以`随机森林`为例。 | ||
|
||
`随机森林`使用了许多树,它通过对每棵成分树的预测进行平均来进行预测。它通常比单个决策树具有更好的预测精度,并且使用默认参数效果也不错。如果继续建模,你可以学习更多具有更好性能的模型,但是其中许多模型效果受调参影响特别大。 | ||
|
||
# 2、案例 | ||
## 2、案例 | ||
你已经多次看到加载数据的代码。数据加载后,我们将得到以下变量: | ||
- train_X | ||
- val_X | ||
|
@@ -60,11 +60,11 @@ print(mean_absolute_error(val_y, melb_preds)) | |
/opt/conda/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22. | ||
"10 in version 0.20 to 100 in 0.22.", FutureWarning) | ||
``` | ||
# 3、结论 | ||
## 3、结论 | ||
可能还有进一步改进的空间,但是这比最佳决策树250,000的误差有很大的改进。你可以修改一些参数来提升随机森林的性能,就像我们改变单个决策树的最大深度一样。但是,随机森林模型的最佳特性之一是,即使没有这种调优,它们通常也可以正常工作。 | ||
|
||
你很快就会了解`XGBoost`模型,它在使用正确的参数进行调优时提供了更好的性能(但是需要一些技巧才能获得正确的模型参数)。 | ||
|
||
# 4、去吧,皮卡丘 | ||
## 4、去吧,皮卡丘 | ||
尝试自己[使用一个随机森林模型](https://www.kaggle.com/kernels/fork/1259186),看看它对你的模型有多大的改进。 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,19 +9,19 @@ PS:水平有限,欢迎交流指正([email protected]) | |
|
||
《Kaggle教程 机器学习入门》系列课程翻译完毕,撒花 ✿✿ヽ(°▽°)ノ✿ | ||
|
||
# 1、机器学习竞赛 | ||
## 1、机器学习竞赛 | ||
进入机器学习竞赛的世界,不断提高,看看你的进步。 | ||
[https://www.kaggle.com/kernels/fork/1259198](https://www.kaggle.com/kernels/fork/1259198) | ||
|
||
# 2、继续你的征程 | ||
## 2、继续你的征程 | ||
|
||
有很多方法可以改进你的模型,此时,`尝试是一个很好的学习方法`。. | ||
|
||
改进模型的最佳方法是添加特征。看看这些数据列表,想想什么可能影响房价。缺失值或非数字数据类型将导致错误。 | ||
|
||
[《中级机器学习》](https://www.kaggle.com/learn/intermediate-machine-learning)微课程将教你如何处理这些类型的特征。你还将学习使用`xgboost`,这是一种比`Random Forest`更精确的技术。 | ||
|
||
# 3、其他微课程 | ||
## 3、其他微课程 | ||
|
||
[《Pandas》](https://kaggle.com/Learn/Pandas) 微课程将为你讲解数据操作技巧,使你能够快速地实现从概念到数据科学项目的实现。 | ||
|
||
|