監(jiān)督學(xué)習(xí)(八)——決策樹集成:梯度提升回歸樹

梯度提升回歸樹是另一種決策樹集成方法髓梅,通過合并多個(gè)決策樹來構(gòu)建一個(gè)更為強(qiáng)大的模型褒脯。雖然名字中含有“回歸”追他,但這個(gè)模型既可以用于回歸也可以用于分類坟募。
與隨機(jī)森林方法不同,梯度提升采用連續(xù)的方式構(gòu)造樹邑狸,每棵樹都試圖糾正前一棵樹的錯(cuò)誤懈糯。默認(rèn)情況下,梯度提升回歸樹中沒有隨機(jī)化单雾,而是用到了強(qiáng)預(yù)剪枝赚哗。梯度提升樹通常使用深度很小(1到 5 之間)的樹她紫,這樣模型占用的內(nèi)存更少,預(yù)測(cè)速度也更快屿储。
梯度提升背后的主要思想是合并許多簡(jiǎn)單的模型犁苏,比如深度較小的樹。每棵樹只能對(duì)部分?jǐn)?shù)據(jù)做出好的預(yù)測(cè)扩所,因此,添加的樹越來越多朴乖,可以不斷迭代提高性能祖屏。
梯度提升樹通常對(duì)參數(shù)設(shè)置更為敏感,正確的設(shè)置參數(shù)买羞,可以將精度提高很多袁勺。除了預(yù)剪枝與集成中樹的數(shù)量之外,梯度提升的另一個(gè)重要參數(shù)是 learning_rate(學(xué)習(xí)率)畜普,它用于控制每棵樹糾正前一棵樹的錯(cuò)誤的強(qiáng)度期丰。較高的學(xué)習(xí)率意味著每棵樹都可以做出較強(qiáng)的修正,這樣模型更為復(fù)雜吃挑。通過增大 n_estimators 來向集成中添加更多樹钝荡,也可以增加模型復(fù)雜度,因?yàn)槟P陀懈鄼C(jī)會(huì)糾正訓(xùn)練集上的錯(cuò)誤舶衬。

例子

利用GradientBoostingClassifier埠通,數(shù)據(jù)用sklearn.datasets中的load_breast_cancer。
第一次逛犹,用默認(rèn)值: 100 棵樹端辱, 最大深度是 3,學(xué)習(xí)率為 0.1虽画。

cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
         cancer.data, cancer.target, random_state=0)
gbrt = GradientBoostingClassifier(random_state=0)
gbrt.fit(X_train, y_train)
print("Accuracy on training set: {:.3f}".format(gbrt.score(X_train, y_train)))
print("Accuracy on test set: {:.3f}".format(gbrt.score(X_test, y_test)))
結(jié)果:
Accuracy on training set: 1.000
Accuracy on test set: 0.958

訓(xùn)練集精度達(dá)到 100%舞蔽,很可能存在過擬合。為了降低過擬合码撰,我們可以限制最 大深度來加強(qiáng)預(yù)剪枝渗柿,也可以降低學(xué)習(xí)率:

第二次,將最大深度改為1灸拍。

gbrt = GradientBoostingClassifier(random_state=0, max_depth=1)
結(jié)果:
Accuracy on training set: 0.991
Accuracy on test set: 0.972

第三次做祝,降低學(xué)習(xí)率。

gbrt = GradientBoostingClassifier(random_state=0, learning_rate=0.01)
結(jié)果:
Accuracy on training set: 0.988
Accuracy on test set: 0.965

由于梯度提升和隨機(jī)森林兩種方法在類似的數(shù)據(jù)上表現(xiàn)得都很好鸡岗,因此一種常用的方法就是先嘗試隨機(jī)森林混槐,它的魯棒性很好。如果隨機(jī)森林效果很好轩性,但預(yù)測(cè)時(shí)間太長(zhǎng)声登,或者機(jī) 器學(xué)習(xí)模型精度小數(shù)點(diǎn)后第二位的提高也很重要,那么切換成梯度提升通常會(huì)有用。
如果你想要將梯度提升應(yīng)用在大規(guī)模問題上悯嗓,可以研究一下 xgboost 包及其 Python 接口件舵,這個(gè)庫(kù)在許多數(shù)據(jù)集上的速度都比 scikit-learn 對(duì)梯度提升的實(shí)現(xiàn)要快 。

優(yōu)點(diǎn)脯厨、缺點(diǎn)和參數(shù)

梯度提升決策樹是監(jiān)督學(xué)習(xí)中最強(qiáng)大也最常用的模型之一铅祸。
其主要缺點(diǎn)是需要仔細(xì)調(diào)參,而且訓(xùn)練時(shí)間可能會(huì)比較長(zhǎng)合武。與其他基于樹的模型類似临梗,這一算法不需要對(duì)數(shù)據(jù)進(jìn)行縮放就可以表現(xiàn)得很好,而且也適用于二元特征與連續(xù)特征同時(shí)存在的數(shù)據(jù)集稼跳。與其他基于樹的模型相同盟庞,它也通常不適用于高維稀疏數(shù)據(jù)。
梯度提升樹模型的主要參數(shù)包括樹的數(shù)量 n_estimators 和學(xué)習(xí)率 learning_rate汤善,后者用于控制每棵樹對(duì)前一棵樹的錯(cuò)誤的糾正強(qiáng)度什猖。這兩個(gè)參數(shù)高度相關(guān),因?yàn)?learning_ rate 越低红淡,就需要更多的樹來構(gòu)建具有相似復(fù)雜度的模型不狮。
隨機(jī)森林的 n_estimators 值總是越大越好,但梯度提升不同在旱,增大 n_estimators 會(huì)導(dǎo)致模型更加復(fù)雜荤傲,進(jìn)而可能導(dǎo)致過擬合。通常的做法是根據(jù)時(shí)間和內(nèi)存的預(yù)算選擇合適的 n_estimators颈渊,然后對(duì)不同的 learning_rate 進(jìn)行遍歷遂黍。
另一個(gè)重要參數(shù)是 max_depth(或 max_leaf_nodes),用于降低每棵樹的復(fù)雜度俊嗽。梯度提升模型的 max_depth 通常都設(shè)置得很小雾家,一般不超過 5。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绍豁,一起剝皮案震驚了整個(gè)濱河市芯咧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竹揍,老刑警劉巖敬飒,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芬位,居然都是意外死亡无拗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門昧碉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來英染,“玉大人揽惹,你說我怎么就攤上這事∷目担” “怎么了搪搏?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)闪金。 經(jīng)常有香客問我疯溺,道長(zhǎng),這世上最難降的妖魔是什么哎垦? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任喝检,我火速辦了婚禮,結(jié)果婚禮上撼泛,老公的妹妹穿的比我還像新娘。我一直安慰自己澡谭,他們只是感情好愿题,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛙奖,像睡著了一般潘酗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雁仲,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天仔夺,我揣著相機(jī)與錄音,去河邊找鬼攒砖。 笑死缸兔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吹艇。 我是一名探鬼主播惰蜜,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼受神!你這毒婦竟也來了抛猖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤鼻听,失蹤者是張志新(化名)和其女友劉穎财著,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撑碴,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撑教,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了醉拓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驮履。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鱼辙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玫镐,到底是詐尸還是另有隱情倒戏,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布恐似,位于F島的核電站杜跷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矫夷。R本人自食惡果不足惜葛闷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望双藕。 院中可真熱鬧淑趾,春花似錦、人聲如沸忧陪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嘶摊。三九已至延蟹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叶堆,已是汗流浹背阱飘。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虱颗,地道東北人沥匈。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像忘渔,于是被迫代替她去往敵國(guó)和親咐熙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 假設(shè)你去隨機(jī)問很多人一個(gè)很復(fù)雜的問題辨萍,然后把它們的答案合并起來棋恼。通常情況下你會(huì)發(fā)現(xiàn)這個(gè)合并的答案比一個(gè)專家的答案要...
    城市中迷途小書童閱讀 2,486評(píng)論 0 1
  • 集成學(xué)習(xí) 集成學(xué)習(xí) (ensemble learning) 是通過構(gòu)建并結(jié)合多個(gè)學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)。其一般結(jié)構(gòu)為...
    dreampai閱讀 1,010評(píng)論 0 0
  • 機(jī)器學(xué)習(xí)是做NLP和計(jì)算機(jī)視覺這類應(yīng)用算法的基礎(chǔ)锈玉,雖然現(xiàn)在深度學(xué)習(xí)模型大行其道爪飘,但是懂一些傳統(tǒng)算法的原理和它們之間...
    在河之簡(jiǎn)閱讀 20,482評(píng)論 4 65
  • 博客園:梯度提升樹(GBDT)原理小結(jié)博客園:一步一步理解GB、GBDT拉背、xgboost知乎:機(jī)器學(xué)習(xí)算法中GBD...
    閆阿佳閱讀 5,060評(píng)論 0 5
  • 今年5月25日(2018年)师崎,就是GDPR生效的時(shí)間。GDPR可能是人類歷史上最嚴(yán)苛椅棺、影響面最廣的個(gè)人隱私數(shù)據(jù)保護(hù)...
    bigANDY閱讀 770評(píng)論 0 2