机器学习算法:随机森林

本文介绍了随机森林,一种基于Bagging的集成学习方法,通过随机选择特征构建决策树,从而提高模型的稳定性和预测能力。对比了随机森林与传统Bagging在分类任务上的表现,并展示了如何在sklearn中实现。
摘要由CSDN通过智能技术生成

  随机森林(Random Forest,简称RF)时Bagging集成的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体地说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有 d d d个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含 k k k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。 k k k控制了随机性的引入程度,一般情况下, k = l o g 2 d k=log_{2}d k=log2d
  Sklearn中提供了专门的类来实现随机森林分类(RandomForestClassifier)和随机森林回归(RandomForestRegressor),这两个类中的参数及其取值与决策树分类和决策树回归基本相同,不再赘述。
  下面以一组生成的分类数据来对比以决策树分类器为基学习器的Bagging模型和随机森林算法的效果:

from sklearn.ensemble import BaggingClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
import pydotplus
from IPython.display import Image

X,y=make_classification(n_samples=2000,n_features=15,
                        n_informative=2,n_redundant=0,
                        random_state=0,shuffle=False)

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)

#基于决策树的传统Bagging型
clf=BaggingClassifier(n_estimators=50,random_state=0,oob_score=True)
clf.fit(X_train,y_train)
y_train_pred_bag=clf.predict(X_train)
y_test_pred_bag=clf.predict(X_test)

##随机森林
rf=RandomForestClassifier(n_estimators=50,max_depth=5,oob_score=True,
                          max_features='log2')
rf.fit(X_train,y_train)
y_train_pred_rf=rf.predict(X_train)
y_test_pred_rf=rf.predict(X_test)

print("Bagging方法-训练集准确率:",accuracy_score(y_train, y_train_pred_bag))
print("Bagging方法-测试集准确率:",accuracy_score(y_test, y_test_pred_bag))
print("RF算法-训练集准确率:",accuracy_score(y_train, y_train_pred_rf))
print("RF算法-测试集准确率:",accuracy_score(y_test, y_test_pred_rf))

其结果如下:

Bagging方法-训练集准确率: 1.0
Bagging方法-测试集准确率: 0.9875
RF算法-训练集准确率: 0.9925
RF算法-测试集准确率: 0.99

TIP:RF中可以通过相应参数的设置控制每个基决策树的生长,而Bagging中对于基决策树的生长限制较少。

算法总结
  1. 随机森林简单、容易实现、计算开销小。
  2. 随机森林的训练可以并行进行,训练速度较快。
  3. 随机森林可以处理高维特征,且不用做特征选择。
  4. 随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动。随机森林的训练效率常优于Bagging。
参考资料
  1. 《机器学习》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值