尽快 运行 随机森林模型的最佳实践
Best practices to run a random forest model as fast as possible
我想要运行一个随机森林分类器模型。我的数据集非常大,有 100 万行和 300 列。当然,宁愿不要运行 模型像3 天一样马不停蹄。所以我想知道是否有一些好的做法可以找到 运行宁时间和预测质量之间的最佳权衡。
以下是 a 的想法的一些示例:
我可以使用 x 行的随机子样本来调整参数,然后对包含所有数据的模型使用参数吗? (如果是,我如何找到 x 的最佳值?)
有没有办法知道在什么时候继续添加更多数据是无用的,因为预测将停止改进? (即,在 运行ning 时间内可以得到最佳结果的最少行数是多少)
如何估计模型的 运行ning 时间? 4000 行模型需要 4 分钟,8000 行需要 10 分钟。 运行ning 时间是指数的,或者它或多或少是线性的,我可以预期 1280 分钟的 运行ning 时间有 100 万行?
随机子采样然后调整完整数据很少起作用,因为小子样本可能不能代表完整数据。
关于数据量与模型质量:尝试使用 sklearn 的学习曲线:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.learning_curve.html
train_sizes, train_scores, test_scores, fit_times, _ = learning_curve(
estimator,
X,
y,
cv=cv,
n_jobs=n_jobs,
train_sizes=train_sizes,
return_times=True,
)
这样您就可以绘制数据量与模型性能的关系图。
以下是绘图的一些示例:
https://scikit-learn.org/stable/auto_examples/miscellaneous/plot_kernel_ridge_regression.html#sphx-glr-auto-examples-miscellaneous-plot-kernel-ridge-regression-py
- 估计总时间很困难,因为它不是线性的。
一些额外的实用建议:
- 将
n_jobs=-1
设置为运行模型在所有内核上并行;
- 使用任何特征选择方法来减少特征的数量。 300个特征真的很多,去掉一半左右应该是可以的,模型性能不会严重下降。
我想要运行一个随机森林分类器模型。我的数据集非常大,有 100 万行和 300 列。当然,宁愿不要运行 模型像3 天一样马不停蹄。所以我想知道是否有一些好的做法可以找到 运行宁时间和预测质量之间的最佳权衡。
以下是 a 的想法的一些示例:
我可以使用 x 行的随机子样本来调整参数,然后对包含所有数据的模型使用参数吗? (如果是,我如何找到 x 的最佳值?)
有没有办法知道在什么时候继续添加更多数据是无用的,因为预测将停止改进? (即,在 运行ning 时间内可以得到最佳结果的最少行数是多少)
如何估计模型的 运行ning 时间? 4000 行模型需要 4 分钟,8000 行需要 10 分钟。 运行ning 时间是指数的,或者它或多或少是线性的,我可以预期 1280 分钟的 运行ning 时间有 100 万行?
随机子采样然后调整完整数据很少起作用,因为小子样本可能不能代表完整数据。
关于数据量与模型质量:尝试使用 sklearn 的学习曲线:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.learning_curve.html
train_sizes, train_scores, test_scores, fit_times, _ = learning_curve(
estimator,
X,
y,
cv=cv,
n_jobs=n_jobs,
train_sizes=train_sizes,
return_times=True,
)
这样您就可以绘制数据量与模型性能的关系图。 以下是绘图的一些示例: https://scikit-learn.org/stable/auto_examples/miscellaneous/plot_kernel_ridge_regression.html#sphx-glr-auto-examples-miscellaneous-plot-kernel-ridge-regression-py
- 估计总时间很困难,因为它不是线性的。
一些额外的实用建议:
- 将
n_jobs=-1
设置为运行模型在所有内核上并行; - 使用任何特征选择方法来减少特征的数量。 300个特征真的很多,去掉一半左右应该是可以的,模型性能不会严重下降。