本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/
随机森林模型是机器学习中常用的模型之一,它是决策树模型的一个延伸。
本文简单快速直接地介绍什么是随机森林模型以及如何实现一个随机森林模型。
一、什么是随机森林模型
1.1.随机森林模型介绍
随机森林模型顾名思义,就是有很多棵树的模式,这里的树,指的是决策树。
它训练了许多棵决策树,然后集合在一起,作为一个集成模型进行决策。
如图所示,随机森林的模型表达式如下:
y
=
1
k
[
t
1
.
prob
(
x
)
+
t
2
.
prob
(
x
)
+
.
.
.
+
t
k
.
prob
(
x
)
]
\text{y}= \dfrac{1}{k} \left [ \text{t}_1.\text{prob}(x)+\text{t}_2.\text{prob}(x)+...+\text{t}_k.\text{prob}(x) \right ]
y=k1[t1.prob(x)+t2.prob(x)+...+tk.prob(x)]
其中,y:随机森林给出的各类别的预测概率
ti : 决策树
ti*prob(x): 第i棵树对x的预测,输出为各个类别的预测概率(行向量)
k : 森林规模数
1.2.为什么随机森林要用多棵决策树
随机森林模型采用了多棵决策树进行集成,这主要是因为决策树是一个极易过拟合的模型,因此集成多棵决策树,让它们一起进行综合评估,使得预测结果更加稳定。
二、怎么训练一个随机森林模型
2.1.训练一个随机森林模型
在python中通过sklearn如下实现一个随机森林模型,代码示例如下:
# -*- coding: utf-8 -*-
"""
sklearn的随机森林Demo
"""
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import numpy as np
np.random.seed(888)
# ==================== 加载数据 =====================================================
iris = load_iris()
X = iris.data
y = iris.target
# ========================= 模型训练 ====================================================
clf = RandomForestClassifier(n_jobs=1,oob_score=True,max_features=2,n_estimators=100)
clf.fit(X, y)
# =============================== 模型预测 ===================================================
pred_prob = clf.predict_proba(X)
pred_c = clf.predict(X)
preds = iris.target_names[pred_c]
#=================打印结果==========================
print("\n----前5条预测结果:----")
print(pred_prob[0:5])
print("\n----袋外准确率oob_score:----")
print(clf.oob_score_)
print("\n----特征得分:----")
print(clf.feature_importances_)
代码运行结果如下:
----前5条预测结果:----
[[1. 0. 0. ]
[0.99 0.01 0. ]
[1. 0. 0. ]
[1. 0. 0. ]
[1. 0. 0. ]]
----袋外准确率oob_score:----
0.9533333333333334
----特征得分:----
[0.08186032 0.02758341 0.44209899 0.44845728]
其中,特征得分是指每个特征对随机森林贡献度的占比,它是决策树特征得分的拓展。
相关链接:
《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂
《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂
《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂