1.什么是随机森林?
随机森林其实就是多棵决策树.
通过对样本重新采样的方法得到不同的训练样本集,在这些新的训练样本集上分别训练学习器,最终合并每一个学习器的结果,作为最终的学习结果,其中,每个样本的权重是一样的.具体过程如下:
在该 方法中,b个学习器之间彼此是相互独立的,这样的特点使该方法更容易并行
2.随机森林的原理
1 #导包 2 import numpy as np 3 4 import matplotlib.pyplot as plt 5 %matplotlib inline 6 7 # RandomForestClassifier为随机森林 ExtraTreesClassifier为极限森林 8 from sklearn.ensemble import RandomForestClassifier,ExtraTreesClassifier 9 10 from sklearn import datasets 11 12 import pandas as pd 13 14 from sklearn.model_selection import train_test_split 15 16 from sklearn.tree import DecisionTreeClassifier
随机森林 :多颗决策树构建而成,每一颗决策树都是刚才讲到的决策树原理
多颗决策树一起运算------------>集成算法
1 # 加载数据,葡萄酒 2 wine = datasets.load_wine() 3 wine
1 # 取出数据和目标值 2 X = wine['data'] 3 y = wine['target'] 4 X.shape 5 6 #将数据分类,训练数据和测试数据 7 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2) 8 9 # 随机森林进行训练预测,计算准确率 10 clf = RandomForestClassifier() 11 clf.fit(X_train,y_train) 12 y_ = clf.predict(X_test) 13 from sklearn.metrics import accuracy_score 14 accuracy_score(y_test,y_)
# 决策树预测的准确率 dt_clf = DecisionTreeClassifier() dt_clf.fit(X_train,y_train) dt_clf.score(X_test,y_test)
1 # 决策树多次运行的准确率 2 score = 0 3 for i in range(100): 4 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2) 5 6 dt_clf = DecisionTreeClassifier() 7 8 dt_clf.fit(X_train,y_train) 9 10 score+=dt_clf.score(X_test,y_test)/100 11 12 print('决策树多次运行准确率:',score)
1 # 随机森林多次运行的准确率 2 score = 0 3 for i in range(100): 4 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2) 5 # n_estimators表示树的个数 6 clf = RandomForestClassifier(n_estimators=100) 7 8 clf.fit(X_train,y_train) 9 10 score+=clf.score(X_test,y_test)/100 11 12 print('随机森林多次运行准确率:',score)
3.极限森林
随机森林相对决策树来说,是样本随机了
极限森林相对决策树来说,不仅样本随机,而且分裂条件随机,尽管这并不是最好的分裂条件.(决策树的裂分条件是信息增益最大)
像在随机森林中一样,使用候选特征的随机子集,但不是寻找最有区别的阈值,
而是为每个候选特征随机绘制阈值,
并选择这些随机生成的阈值中的最佳阈值作为划分规则
3.总结
随机森林的生成方法:
1.从样本集中通过重采样的方式产生n个样本
2.假设样本特征数目为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分割点
3.重复m次,产生m棵决策树
4.多数投票机制来进行预测
优缺点:
随机森林是一个比较优秀的模型,在我的项目的使用效果上来看,它对于多维特征的数据集分类有很高的效率,还可以做特征重要性的选择。
运行效率和准确率较高,实现起来也比较简单。但是在数据噪音比较大的情况下会过拟合,过拟合的缺点对于随机森林来说还是较为致命的。