机器学习算法基础学习 # 集成学习之随机森林

news/2024/10/18 3:26:57/
  • 随机森林(Random Forests) 是集成学习算法的一种。集成学习是通过组合多个学习器来完成学习任务。随机森林是结合多颗决策树来对样本进行训练和预测。随机森林通过随机扰动而令所有的树去相关。
  • 随机森林可以使用巨量的预测器,甚至预测器的数量比观察样本的数量还多。采用随机森林方法最显著的优势是它能获得更多的信息以减少拟合数值和估计分割的偏差。通常我们会有一些预测器能主导决策树的拟合过程,因为它们的平均性能始终要比其他一些竞争预测器更好。
  • 随机森林有三个主要的超参数调整:
    • 结点规模:随机森林不像决策树,每一棵树叶结点所包含的观察样本数量可能十分少。该超参数的目标是生成树的时候尽可能保持小偏差。
    • 树的数量:在实践中选择数百棵树一般是比较好的选择。
    • 预测器采样的数量:如果我们一共有 D 个预测器,那么我们可以在回归任务中使用 D/3 个预测器数作为采样数,在分类任务中使用 D^(1/2) 个预测器作为抽样。
      【我理解这句话的意思是说随机森林里的树训练好后再对树进行采样,减少应用时的计算量?】

代码:5-折交叉验证的网格搜索来对随机森林超参数寻优:

from sklearn.model_selection import GridSearchCVparameters = {'n_estimators':(100, 500, 1000),'max_depth':(None, 24, 16),'min_samples_split': (2, 4, 8),'min_samples_leaf': (16, 4, 12)}clf = GridSearchCV(RandomForestClassifier(), parameters, cv=5, n_jobs=8)
clf.fit(x_train, y_train)
clf.best_score_, clf.best_params_
best_rf_model = grid_search.best_estimator_0.86606676699118579
{'max_depth': 24,'min_samples_leaf': 4,'min_samples_split': 4,'n_estimators': 1000}
  • 随机森林有点:
    • 数据不需要归一化
  • 随机森林局限性:
    • 随机森林不擅长推断超出范围的独立变量或非独立变量,MARS 算法更合适;
    • 随机森林算法在训练和预测时都比较慢;
    • 分类数量太多时随机森林算法效果不好;
  • 下一步改进方向:一般来说随机森林可以解决的问题都可以用梯度提升树算法。随机森林精度、计算复杂度均差于梯度提升树算法。

相关代码示例(只保留了关键代码):

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import mean_squared_errorrf = RandomForestRegressor(n_estimators=100, random_state=42)
X, Y = create_dataset(cur_data, global_look_back)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=42)
rf.fit(X_train, Y_train)
trainPredict = rf.predict(X_train)
testPredict = rf.predict(X_test)
trainMSE = mean_squared_error(Y_train, trainPredict)    # 训练集误差
testMSE = mean_squared_error(Y_test, testPredict)       # 测试集误差                

模型保存与加载:

        with open(os.path.join(save_model_dir, sname), 'wb') as file:pickle.dump(rf, file)with open(fpath, 'rb') as file:model = pickle.load(file)

Reference

1.机器之心:从决策树到随机森林:树型算法的原理与实现
2.paddle社区 随机森林算法


http://www.ppmy.cn/news/794282.html

相关文章

Office2016的PPT放映幻灯片放映卡死解决方法

今天写一篇软文,非技术,而是技巧。 不知道大家有没有遇到过,PPT在非放映状态的时候,一切正常,但是只要点击放映,立马就卡死了。 此问题可能由于电脑的独立显卡硬件加速和office软件兼容性不好造成的。 解…

关于在Windows10 上PPT 2016不能插入Flash动画问题

亲测可行: 官网补丁: https://gallery.technet.microsoft.com/scriptcenter/Registry-keys-to-reenable-7cd9f723/view/Discussions#content 下载后直接执行一下Reg即可: 微软官方提供的补丁包,无需自己手动修改注册表。 简单…

一键解决PPT的动画播放和动画排序问题!

对于每一个想要做好PPT,但又不想浪费时间的小伙伴来说,能够一键解决PPT里面的某些问题,不用挨个手动设置,是最好,且最舒服的操作了。因为我们制作PPT又不是只作一张,而是制作很多张。格式要统一&#xff0c…

包含动画的PPT转为PDF

目的:带动画的PPT转化为PDF,PDF的每一页是动画的一个步骤 方法:使用 宏 参考链接:https://www.codercto.com/a/70548.html 具体方法(win、mac均可): 前提:需启用 宏 功能 步骤一 …

为什么ppt图形卡配置不正确_PPT:PowerPoint 检测到您的图形卡配置不正确,可能无法获得最佳幻灯片放映体验...

这些回答极其不负责任你这应该是升级显卡引起的问题,970估计是后面换的,或者中间换过驱动这个提示不用理睬,你也不会卡终极的解决办法只能说重新安装office了,因为ppt里面没有配置显卡这个菜单我和你遭遇一样的 如果你显卡驱动装的是最新的,那就是你的显卡太低级了,放ppt…

程序员到公务员:从入门到上岸

有句话叫做,“打不过就加入”。尽管当下我们国家的体制还存在种种的问题,不过,大家还都是挤破脑袋想进体制。毕竟,某种程度上来说,体制内还真是香~ 我记得读大学那会,教我们C语言的老师,就和我…

Django搭建图书管理系统04:View视图初探

数据库虽然已经有了,但是用户通常只需要这个庞大数据库中的很小一部分进行查看、修改等操作。为此还需要代码来恰当的取出并展示数据,这一部分代码就被称为视图。 Django 中视图的概念是**「一类具有相同功能和模板的网页的集合」**。 Hello World! 首…