随机森林的原理以及使用(集成算法)

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.多数投票机制来进行预测

优缺点:

随机森林是一个比较优秀的模型,在我的项目的使用效果上来看,它对于多维特征的数据集分类有很高的效率,还可以做特征重要性的选择。

运行效率和准确率较高,实现起来也比较简单。但是在数据噪音比较大的情况下会过拟合,过拟合的缺点对于随机森林来说还是较为致命的。

猜你喜欢

转载自www.cnblogs.com/xiuercui/p/11962676.html