当前位置: 首页 > news >正文

Scikit-Learn随机森林回归

Scikit-Learn随机森林回归

    • 1、随机森林
      • 1.1、集成学习
      • 1.2、Bagging方法
      • 1.3、随机森林算法
      • 1.4、随机森林的优缺点
    • 2、Scikit-Learn随机森林回归
      • 2.1、Scikit-Learn随机森林回归API
      • 2.2、随机森林回归实践(加州房价预测)




1、随机森林


随机森林是一种由决策树构成的集成算法,它在大多情况下都能有不错的表现。随机森林既可用于回归也可用于分类。随机森林回归在机器学习知识结构中的位置如下:

在这里插入图片描述

1.1、集成学习


随机森林是一种由决策树构成的(并行)集成算法,属于Bagging类型,随机森林通过组合多个弱分类器,最终结果通过投票或取均值,使得整体模型的结果具有较高的精确度和泛化性能,同时也有很好的稳定性,因此广泛应用在各种业务场景中

随机森林有如此优良的表现,主要归功于随机和森林。顾名思义,随机森林是一个比喻,它由若干决策树构成,每棵决策树都是其基本单元。至于随机,只是一个数学抽样概念。随机使它具有抗过拟合能力,森林使它更加精准

关于决策树的介绍详见文章:回归树 和 决策树

随机森林的基本思想在于集思广益,集中群众的智慧,广泛吸收有益的意见。这往往可以得到更好的解决方案。集思广益在机器学习中对应一个关键概念——集成学习

集成学习(Ensemble Learning)通过训练学习多个个体学习器,当预测时通过结合策略将多个个体学习器的结果组合作为最终强学习器的结果输出

对于训练数据集,我们训练一系列个体学习器,再通过结合策略将它们集成起来,形成一个更强的学习器,这就是集成学习所做的事情

在这里插入图片描述
其中,个体学习器是相对于集成学习来说的,其实我们在之前了解到的很多模型,例如决策树算法、朴素贝叶斯算法等,都是个体学习器

而集成可以分为同质集成和异质集成:

  • 同质集成:只包含同种类型的个体学习器,个体学习器称作基学习器。例如随机森林中全是决策树集成
  • 异质集成:包含不同类型的个体学习器,个体学习器称作组件学习器。例如同时包含决策树和神经网络进行集成

个体学习器代表的是单个学习器,集成学习代表的是多个学习器的结合

集成学习的核心问题有两个:

  • 使用什么样的个体学习器?
    • 准确性:个体学习器不能太弱,需要有一定的准确性
    • 多样性:个体学习器之间要存在差异性,即具有多样性
  • 如何选择合适的结合策略构建强学习器?
    • 并行组合方式:例如随机森林
    • 传统组合方式:例如Boosting树模型

1.2、Bagging方法


这里我们只讲随机森林的并行集成模型,而Bagging是并行式集成学习方法最著名的代表

Bagging方法全称为自助聚集(Bootstrap Aggregating),顾名思义,Bagging由Bootstrap与Aggregating两部分组成

要理解Bagging,首先要了解自助采样法(Bootstrap Sampling)

在这里插入图片描述
自助采样的过程为

  • 给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中
  • 重复上述过程m轮,得到包含m个样本的采样集,初始数据集中有的样本在采样集中多次出现,有的则从未出现
  • 假设约63.2%的样本出现在采样集中,而未出现的约36.8%的样本可用作验证集来对后续的泛化性能进行包外/袋外估计

Bagging方法是在自助采样基础上构建的,上述的采样过程我们可以重复T次,采样出T个包含m个样本的采样集,然后基于每个采样集训练出一个基学习器,然后将这些基学习器进行结合

在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法,这就是Bagging方法的基本流程

在这里插入图片描述
从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等易受到样本扰动的学习器上效用更明显

1.3、随机森林算法


随机森林(Random Forest,RF)是一种基于树模型的Bagging的优化版本。核心思想依旧是Bagging,但是做了一些独特的改进——RF使用了CART决策树作为基学习器。具体过程如下:

  • 输入样本集 D D D= { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } \{{ (x_1,y_1),(x_2,y_2),...,(x_m,y_m) \}} {(x1
http://www.lryc.cn/news/364197.html

相关文章:

  • Vue Router 教程
  • 【数据库】SQL--DQL(初阶)
  • 【docker】docker的安装
  • OC IOS 文件解压缩预览
  • python-web应用程序-Django-From组件
  • K8s(Kubernetes)常用命令
  • C#-for循环语句
  • css动画案例练习之会展开的魔方和交错的小块
  • 前端逆向之下载canvas引用的图片
  • 深度学习手撕代码题
  • vue3 + ts 动态添加路由,刷新页面白屏问题解决方案
  • 【Kubernetes】k8s的调度约束(亲和与反亲和)
  • Java数据结构- Map和Set
  • JVM参数配置
  • Vue 实现的精彩动画效果
  • JVM类加载机制详解(JDK源码级别)
  • 美国年轻人热衷床上“摆烂”,沃尔玛发掘床上用品新商机!
  • 3168. 候诊室中的最少椅子数
  • C# PaddleOCR 单字识别效果
  • pyopengl 立方体 正投影,透视投影
  • 人工智能任务5-高级算法工程师需要学习哪些课程与掌握哪些能力
  • 服务器上创建搭建gitlab
  • LangChain学习之prompt格式化与解析器使用
  • 基于EasyX的贪吃蛇小游戏 - C语言
  • 使用Docker辅助图像识别程序开发:在Docker中显示GUI、访问GPU、USB相机以及网络
  • Java中常见错误-泛型擦除及桥接方法问题及解决方案
  • Linux 程序守护脚本
  • 跨境电商|Facebook Marketplace怎么做?
  • .gitignore 文件
  • qt中实现多语言功能