瞎聊机器学习——随机森林(RF)

本文来讲述一下机器学习中常见的一种集成学习算法——随机森林。

随机森林(Random forest)

随机森林的定义

随机森林是一种集成学习算法,也可以说是一种特殊的Bagging算法,随机森林中将决策树作为基分类器放到Bagging中最后得到随机森林。

对于随机森林,顾名思义,就是用一个随机的方式去建立一个森林,而森林又是有无数个决策树构成的,并且随机的意义在于整个森林中的所有决策树是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

随机森林的构造过程

随机森林的构造过程中两个随机是最重要的地方(随机选取样本、随机选取属性)

  1. 假如有N个样本,则有放回的随机选择N个样本,用选好的N个样本来训练一个决策树,作为决策树根节点的样本。
  2. 当每个样本中有M个属性时,在决策树的每个节点需要分裂时,随机从M个属性中选取m个属性,满足m<<M。然后采用某种策略(信息增益等方法)来选择一个属性作为该节点的分类属性。
  3. 在决策树构成的过程中每个节点都要按照2中的方法来进行分裂(如果该节点选出的属性和其父节点选出的属性相同,也就证明没有信息增益,该节点也就达到了叶子节点无需继续分裂)。每一个决策树都要分裂到不能分裂为止,并且整个过程中无需剪枝。
  4. 按照1-3建立大量的决策树,这样就构成随机森林了。

随机森林的优点

随机森林不仅包含了决策树和集成学习的优点,同时也包含了如下的优点:

  1. 随机森林对于随机性的引入使得随机森林在数据集上的表现很好,有效的防止了过拟合的产生。
  2. 随机森林的抗噪声能力很强。
  3. 它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化。
  4. 在训练过程中,能够检测到feature间的互相影响。
  5. 容易做成并行化方法。
  6. 实现起来比较简单。

随机森林的应用

随机森林简单的Sklearn应用如下:

from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
import numpy as np
from sklearn.datasets import load_iris

iris = load_iris()
print(iris["target_names"])
print(iris["target"].shape)
rf = RandomForestRegressor()
rf.fit(iris.data[:150], iris.target[:150])  #选择部分数据进行模型的训练

instance = iris.data[[111,123]]
print(instance)
re0 = rf.predict(instance[[0]])
re1 = rf.predict(instance[[1]])
print("re0:",re0)
print("re1:",re1)
print(iris.target[111],iris.target[123])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哥不像程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值