北京網(wǎng)站設(shè)計(jì)培訓(xùn)機(jī)構(gòu)寧波正規(guī)優(yōu)化seo公司
一、什么是集成學(xué)習(xí)方法
1、定義
集成學(xué)習(xí)通過(guò)建立幾個(gè)模型組合的來(lái)解決單一預(yù)測(cè)問(wèn)題。它的工作原理是生成多個(gè)分類器/模型,各自獨(dú)立地學(xué)習(xí)和作出預(yù)測(cè)。這些預(yù)測(cè)最后結(jié)合成組合預(yù)測(cè),因此優(yōu)于任何一個(gè)單分類的做出預(yù)測(cè)
諺語(yǔ):三個(gè)臭皮匠頂個(gè)諸葛亮、眾人拾柴火焰高
二、什么是隨機(jī)森林
1、定義
在機(jī)器學(xué)習(xí)中,隨機(jī)森林是一個(gè)包含多個(gè)決策樹(shù)的分類器,并且其輸出的類別是由個(gè)別樹(shù)輸出的類別的眾數(shù)而定
森林:包含多個(gè)決策樹(shù)的分類器
2、什么是眾數(shù)
例如,如果你訓(xùn)練了5個(gè)樹(shù),其中有4個(gè)樹(shù)的結(jié)果是True,1個(gè)數(shù)的結(jié)果是False,那么最終投票結(jié)果就是True
三、隨機(jī)森林原理過(guò)程
1、如何隨機(jī)
我們都是根據(jù)特征值和目標(biāo)值進(jìn)行預(yù)測(cè)的
我們面臨的訓(xùn)練集是一致的,如何對(duì)同樣的訓(xùn)練集去產(chǎn)生多棵樹(shù)呢
兩個(gè)隨機(jī):
? 訓(xùn)練集隨機(jī)
? 特征隨機(jī)
訓(xùn)練集:有N個(gè)樣本,M個(gè)特征
??
2、訓(xùn)練集隨機(jī)
bootstrap:隨機(jī)有放回抽樣
例子:[1, 2, 3, 4, 5]
新的樹(shù)的訓(xùn)練集:
[2, 2, 3, 1, 5],先抽到2,把2放回去,可能又抽到2,把2放回去,抽到3,把2放回去。。。以此類推
從N個(gè)樣本中隨機(jī)有放回的抽樣N個(gè)
3、特征隨機(jī)
從M個(gè)特征中隨機(jī)抽取m個(gè)特征
M >> m
4、算法歸納
訓(xùn)練集:有N個(gè)樣本,M個(gè)特征
(1)從N個(gè)樣本中隨機(jī)有放回的抽樣N個(gè)
(2)從M個(gè)特征中隨機(jī)抽取m個(gè)特征,并且M 要遠(yuǎn)遠(yuǎn)大于 m
(3)M >> m,起到了降維的作用
5、為什么要這樣做
因?yàn)楸康臉?shù)都在亂蒙,聰明的樹(shù)結(jié)果總是相同,最終會(huì)實(shí)現(xiàn)投票的眾數(shù)結(jié)果是相對(duì)正確的
四、API
1、class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
隨機(jī)森林分類器
n_estimators:設(shè)定要選幾顆樹(shù),可選,默認(rèn)=10,森林里的樹(shù)木數(shù)量 120,200,300,500,800,1200
criterion:劃分決策樹(shù)的依據(jù),可選,默認(rèn)='gini'(基尼系數(shù))
max_depth:樹(shù)的深度,可選,默認(rèn)=None 5,8,15,25,30
bootstrap:可選,默認(rèn)=True,是否在構(gòu)建樹(shù)時(shí)使用放回抽樣
max_features;默認(rèn)=auto,每個(gè)決策樹(shù)的最大特征數(shù)量,從M個(gè)特征中選擇m個(gè)特征
? If "auto", then max_features=sqrt(n_features).
? If "sqrt", then max_features=sqrt(n_features) (same as "auto").
? If "log2", then max_features=log2(n_features).
? If None, then max_features=n_features.
min_samples_split:節(jié)點(diǎn)劃分最少樣本數(shù)
min_samples_leaf:葉子節(jié)點(diǎn)的最小樣本數(shù)
五、隨機(jī)森林預(yù)測(cè)案例
1、代碼
在前一篇決策樹(shù)的代碼后面加上:
# 隨機(jī)森林對(duì)泰坦尼克號(hào)乘客的生存進(jìn)行預(yù)測(cè)from sklearn.ensemble import RandomForestClassifier# 實(shí)例化,和決策樹(shù)用相同的參數(shù)
estimator = RandomForestClassifier(criterion='entropy',max_depth=8)
estimator.fit(x, y)
# 模型評(píng)估
# 方法1:直接比對(duì)真實(shí)值和預(yù)測(cè)值
y_predict = estimator.predict(m)
print("y_predict:\n", y_predict)
print("直接比對(duì)真實(shí)值和預(yù)測(cè)值:\n", n == y_predict)
# 方法2:計(jì)算準(zhǔn)確率
score = estimator.score(m, n)
print("準(zhǔn)確率為:\n", score)
2、運(yùn)行結(jié)果?
回顧下:
x是訓(xùn)練集的特征值,y是訓(xùn)練集的目標(biāo)值,m是測(cè)試集的特征值,n是測(cè)試集的目標(biāo)值
但是對(duì)比決策樹(shù)的94%準(zhǔn)確率,隨機(jī)森林反而降低了
六、總結(jié)
1、在當(dāng)前所有算法中,具有極好的準(zhǔn)確率
2、能夠有效地運(yùn)行在大數(shù)據(jù)集上,處理具有高維特征的輸入樣本,而且不需要降維
3、能夠評(píng)估各個(gè)特征在分類問(wèn)題上的重要性
?