欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

随机森林学习笔记(未完待续)

程序员文章站 2022-05-06 19:10:04
以下内容参考资料有:周志华《西瓜书》李航《统计学习方法》哔哩哔哩白板推导@shuhuai008哔哩哔哩菜菜的sciki-learn课堂《机器学习实战》吴喜之《多元统计分析——R与python的实现》sciki-learn中random forest的常用接口接口作用apply输入测试集,返回测试样本所在的叶子节点索引predictscorefitpredict_proba返回样本被分到每一类的概率,有几类就返回几个概率。如果是二分类问题,...

以下内容参考资料有:
周志华《西瓜书》
李航《统计学习方法》
哔哩哔哩白板推导@shuhuai008
哔哩哔哩菜菜的sciki-learn课堂
《机器学习实战》
吴喜之《多元统计分析——R与python的实现》

为什么随机森林的效果好于单个分类器

随机森林的本质是一种装袋集成算法(bagging),这是对基评估器的预测结果进行平均,或者用少数服从多数原则来决定集成评估器的结果。
例如,一片森林里建立了25棵树,对任何一个样本,根据平均或少数服从多数原则下,当且仅当有13棵以上的树判断错误的时候,随机森林才会判断错误。
25棵树中,假设一棵树判断错误的可能性为0.2(ε),有ii棵树判错的概率是:
ei=C25iεi(1ε)25ie_{\text {i}}= C_{25}^{i} \varepsilon^{i}(1-\varepsilon)^{25-i}
那13棵树以上都判断错误(也就是整片随机森林会判错)的可能性是:
erandomforest=i=1325C25iεi(1ε)25i=0.000369e_{\text {randomforest}}=\sum_{i=13}^{25} C_{25}^{i} \varepsilon^{i}(1-\varepsilon)^{25-i}=0.000369
对比一下0.000369和0.2两个预测误差,随机森林的预测误差远远小于单棵决策树。

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import comb ##组合数

x=np.linspace(0,1,20)
y=[]
for epsilon in x:
    E=np.array([comb(25,i)*(epsilon)**i*(1-epsilon)**(25-i)for i in range(13,26)]).sum()##comb(25,i)组合数
    y.append(E)
plt.plot(x,y,"o-",label="when estimators are different")
plt.plot(x,x,"--",color="red",label="if all estimators are same")
plt.xlabel("individual estimator's error")
plt.ylabel("RandomForest's error")
plt.legend()
plt.show()

随机森林学习笔记(未完待续)

随机森林与决策树的选择

上图展示了一片森林中,基评估器相同与不同时,单个基评估器的预测误差对随机森林整体预测误差的影响程度。其实,当一片森林中所有基评估器都一样时,效果跟单颗决策树是一样的。由上图中红蓝两条线(红色虚线:森林中所有基评估器都一样,蓝色曲线:森林中基评估器不同)可以看出,当森林中每棵树的预测误差小于0.5时,随机森林的预测误差小于决策树的误差,这时随机森林的预测精度要高于决策树。但如果森林中的基评估器的预测误差本身比较大时(误差超过0.5),随机森林会把这种误差扩大,此时要避免用随机森林(其实这时候用决策树也不应该,误差率都高于一个随机分类器了orz)。

sciki-learn中random forest的常用接口

接口 作用
apply 输入测试集,返回测试样本所在的叶子节点索引
predict
score
fit
predict_proba 返回样本被分到每一类的概率,有几类就返回几个概率。如果是二分类问题,则predict_proba返回的数值大于0.5的,被分为1,小于0.5的,被分为0。

注:传统的随机森林是bagging思想,可以平均所有样本的取值作为最终的结果,或者少数服从多数来决定集成的结果。sklearn中的随机森林先平均每个样本对应的predict_proba返回的概率,得到一个平均概率,再用传统bagging方法决定测试样本的分类

本文地址:https://blog.csdn.net/fengjiandaxia/article/details/107555767