Kaggle-intro-to-machine-learning(5)
Random-forests
教程
决策树使您难以做出决策。 一棵有很多叶子的深树会过拟合,因为每个预测都来自其叶子上只有少数房屋的历史数据。 但是,只有很少叶子的浅树会表现不佳,因为它无法捕获原始数据中尽可能多的差异。
即使是当今最复杂的建模技术,也面临着欠拟合和过度拟合之间的这种张力。 但是,许多模型都有巧妙的想法,可以带来更好的性能。 我们将以随机森林为例。
随机森林使用许多树,并且通过平均每个组成树的预测来进行预测。 与单个决策树相比,它通常具有更好的预测准确性,并且可以与默认参数一起很好地工作。 如果您继续进行建模,则可以学习更多具有更好性能的模型,但是其中许多模型对于获取正确的参数非常敏感。
Example
您已经看到了几次加载数据的代码。 在数据加载结束时,我们具有以下变量:
train_X
val_X
train_y
val_y
我们类似于在scikit-learn中构建决策树的方式构建随机森林模型-这次使用RandomForestRegressor类而不是DecisionTreeRegressor。
from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_absolute_error forest_model = RandomForestRegressor(random_state=1) forest_model.fit(train_X, train_y) melb_preds = forest_model.predict(val_X) print(mean_absolute_error(val_y, melb_preds))
Output:
可能还有进一步改进的余地,但这是对最佳决策树错误250,000的重大改进。 当我们更改单个决策树的最大深度时,可以使用一些参数来更改随机森林的性能。 但是,Random Forest模型的最佳功能之一是,即使不进行此调整,它们通常也可以正常工作。
您很快就会学到XGBoost模型,该模型在使用正确的参数进行很好的调整时可以提供更好的性能(但是需要一些技巧才能获得正确的模型参数)。
练习
数据科学并不总是那么容易。 但是用随机森林替换决策树将是一个轻松的胜利。
Step 1: Use a Random Forest
from sklearn.ensemble import RandomForestRegressor # Define the model. Set random_state to 1 rf_model = RandomForestRegressor(random_state=1) # fit your model rf_model.fit(train_X,train_y) # forest_model = RandomForestRegressor(random_state=1) # forest_model.fit(train_X, train_y) melb_preds = rf_model.predict(val_X) # Calculate the mean absolute error of your Random Forest model on the validation data rf_val_mae = mean_absolute_error(val_y, melb_preds) print("Validation MAE for Random Forest Model: {}".format(rf_val_mae)) # Check your answer step_1.check()
Output:
Validation MAE for Random Forest Model: 21857.15912981083
到目前为止,您已经在项目的每个步骤中遵循了特定的说明。 这有助于学习关键思想并建立您的第一个模型,但是现在您已经足够了解自己尝试一些东西了。
机器学习竞赛是尝试您自己的想法并在独立浏览机器学习项目时学习更多信息的好方法。