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.多數投票機制來進行預測
優缺點:
隨機森林是一個比較優秀的模型,在我的項目的使用效果上來看,它對於多維特征的數據集分類有很高的效率,還可以做特征重要性的選擇。
運行效率和准確率較高,實現起來也比較簡單。但是在數據噪音比較大的情況下會過擬合,過擬合的缺點對於隨機森林來說還是較為致命的。