《機器學習-Python實戰(zhàn)(微課版)》課件 第九章 AdaBoost_第1頁
《機器學習-Python實戰(zhàn)(微課版)》課件 第九章 AdaBoost_第2頁
《機器學習-Python實戰(zhàn)(微課版)》課件 第九章 AdaBoost_第3頁
《機器學習-Python實戰(zhàn)(微課版)》課件 第九章 AdaBoost_第4頁
《機器學習-Python實戰(zhàn)(微課版)》課件 第九章 AdaBoost_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第九章AdaBoost

學習目標通過本章學習可以:掌握Boosting算法的思想掌握AdaBoost算法的基本原理掌握AdaBoost的scikit-learn應用方法BoostingAdaBoost原理AdaBoost的scikit-learn實現(xiàn)應用案例集成學習通過將多個單個學習器集成/組合在一起,使它們共同完成學習任務,以達到提高預測準確率的目的。Bagging:核心思想是對訓練集進行有放回地抽取,從而為每一個基本分類器都構(gòu)造出一個同樣大小但各不相同的的訓練集,從而訓練出不同的基分類器。代表算法是隨機森林。Boosting:是一種可以用來減小監(jiān)督學習中偏差的機器學習算法。在分類問題中,它通過改變訓練樣本的權(quán)重,學習多個分類器,并將這些分類器進行線性組合,提升分類的性能。代表算法有Adaboost和GradientBoostingTree(GBDT)。回顧:集成學習Boosting的主要作用跟bagging類似也是一種把若干個基分類器整合為一個分類器的方法。Boosting是一個順序過程,每個后續(xù)模型都會嘗試糾正先前模型的錯誤,后續(xù)的模型依賴于之前的模型。Boosting的基本思想先從初始訓練集訓練出一個基學習器,再根據(jù)基學習器的表現(xiàn)對訓練樣本分布進行調(diào)整,使得先前基學習器做錯的訓練樣本在后續(xù)受到更多的關(guān)注,然后基于調(diào)整后的樣本分布來訓練下一個基學習器;如此重復進行,直至基學習器數(shù)目達到事先指定的值T,最終將這T個基學習器進行加權(quán)結(jié)合。Boosting的工作機制樣本權(quán)重分類器權(quán)重優(yōu)化學習器修正樣本權(quán)重Boosting是一個迭代的過程,通過改變訓練樣本的分布,使得基分類器聚焦在那些很難分的樣本上。不像bagging,Boosting給每一個訓練樣本賦予一個權(quán)值,而且可以在每一輪提升過程結(jié)束時自動地調(diào)整權(quán)值。Boosting結(jié)合了很多弱學習器來形成一個強學習器,單個模型表現(xiàn)不佳,但它們在數(shù)據(jù)集的某些部分表現(xiàn)很好。因此,每個模型實際上提升了集成的整體性能。訓練樣本的權(quán)值可以用于以下方面:可以用作抽樣分布,從原始數(shù)據(jù)集中提取出自主樣本集?;鶎W習器可以使用權(quán)值學習有利于高權(quán)值樣本的模型。Boosting提升的理解偏差-方差Boosting:降低偏差。Bagging:降低方差。樣本選擇:Boosting:每一輪的訓練集不變,只是訓練集中每個樣本的權(quán)重發(fā)生變化,權(quán)值根據(jù)上一輪的預測結(jié)果進行調(diào)整。Bagging:訓練集是在原始集中有放回抽取的,從原始集中選出的訓練集之間是獨立的。樣本權(quán)重:Boosting:根據(jù)錯誤率不斷調(diào)整樣本的權(quán)值,錯誤率越大則權(quán)值越大。Bagging:每個樣本的權(quán)重相等。Bagging與Boosting區(qū)別(1)基學習器權(quán)重:Boosting:每個弱學習器都有相應的權(quán)重,對于誤差小的學習器會有更大的權(quán)重。Bagging:弱學習器的權(quán)重可以相等也可以賦予權(quán)重。串、并行計算:Boosting:串行,各個及學習器順序生成,因為后一個模型參數(shù)依賴于前一輪模型的預測結(jié)果。Bagging:各個學習器可以并行生成。Bagging與Boosting區(qū)別(2)BoostingAdaBoost原理AdaBoost的scikit-learn實現(xiàn)應用案例Boosting族算法最著名的代表是AdaBoost[FreundandSchapire,1997]。AdaBoost:AdaptiveBoosting,自適應提升。Adaboost采用迭代的思想,繼承了Boosting算法,每次迭代只訓練一個弱學習器,訓練好的弱學習器將參與下一次迭代。也就是說,在第N次迭代中,一共有N個弱學習器,其中N-1個是以前訓練好的,其各種參數(shù)都不會改變,本次訓練第N個學習器。其中弱學習器的關(guān)系是第N個弱學習器更可能分對前N-1個弱學習器沒分對的數(shù)據(jù),最終分類輸出要看這N個分類器的綜合效果。AdaBoost1.如何改變訓練樣本分布?2.采用什么樣的結(jié)合策略來將基學習器結(jié)合成一個強學習器?針對第一個問題,AdaBoost提高那些被前一輪基學習器錯誤分類的樣本的權(quán)值,降低那些被正確分類的樣本的權(quán)值;針對第二個問題,AdaBoost對所有基學習器采用加權(quán)結(jié)合,增大分類誤差小的基學習器的權(quán)值,減少分類錯誤率大的基學習器的權(quán)值。AdaBoost的兩個關(guān)鍵問題

二分類算法原理(1)

二分類算法原理(2)

二分類算法原理(3)

直接將Adaboost算法應用于多類分類問題往往不能得到令人滿意的結(jié)果。針對這個問題,ZhuJi等人在2009年提出了SAMME及SAMME.R算法,這也是sklearn中用Adaboost做多類分類問題時采用的算法。兩者的主要區(qū)別是弱學習器權(quán)重的度量。SAMME是二分類Adaboost算法的擴展,即用對樣本集分類效果作為弱學習器權(quán)重,而SAMME.R使用了對樣本集分類的預測概率大小來作為弱學習器權(quán)重。由于SAMME.R使用了概率度量的連續(xù)值,迭代一般比SAMME快,因此AdaBoostClassifier的默認算法algorithm的值也是SAMME.R。多分類問題

SAMME算法原理

SAMME.R算法原理SAMME.R使用概率估計來更新增加模型,而SAMME只使用分類。SAMME.R算法通常比SAMME更快地收斂,通過更少的提升迭代實現(xiàn)較低的測試誤差。每一次提升迭代后,測試集上各算法的誤差顯示左側(cè)圖,每一棵樹的測試集上的分類誤差顯示在中間,每一棵樹的boost權(quán)重顯示為右側(cè)圖。在SAMME.R算法中,所有樹的權(quán)重都是1,因此沒有顯示。SAMME和SAMME.R對比

回歸算法原理(1)

回歸算法原理(2)

回歸算法原理(3)

回歸算法原理(4)

優(yōu)點:Adaboost是一種有很高精度的分類器可以使用各種方法構(gòu)建弱學習器分類器弱學習器構(gòu)造比較簡單不用做特征篩選泛化能力好,不用擔心overfitting(過擬合)缺點:容易受到噪聲干擾訓練時間長執(zhí)行效果依賴于弱學習器的選擇AdaBoost優(yōu)缺點BoostingAdaBoost原理AdaBoost的scikit-learn實現(xiàn)應用案例類庫介紹:AdaBoostClassifier用于分類,AdaBoostRegressor用于回歸。AdaBoostClassifier使用了兩種Adaboost分類算法的實現(xiàn),SAMME和SAMME.R。而AdaBoostRegressor則使用了Adaboost.R2(和前面原理一致)。Adaboost調(diào)參:主要從兩方面進行調(diào)參,一是對Adaboost的框架進行調(diào)參,二是對選擇的弱分類器進行調(diào)參,兩者相輔相成。AdaBoost的scikit-learn實現(xiàn)(1)base_estimator:弱分類學習器或者弱回歸學習器。AdaBoostClassifier默認使用CART分類樹DecisionTreeClassifier,而AdaBoostRegressor默認使用CART回歸樹DecisionTreeRegressor。(2)algorithm:這個參數(shù)只有AdaBoostClassifier有。scikit-learn實現(xiàn)了兩種Adaboost分類算法,SAMME和SAMME.R。兩者的主要區(qū)別是弱學習器權(quán)重的度量。AdaBoostClassifier的默認算法是SAMME.R。(3)loss:這個參數(shù)只有AdaBoostRegressor有,Adaboost.R2算法會用到。有線性‘linear’,平方‘square’和指數(shù)‘exponential’三種選擇,默認是線性。框架參數(shù)(1)(4)n_estimators:AdaBoostClassifier和AdaBoostRegressor都有,弱學習器的最大迭代次數(shù),或者說最大的弱學習器的個數(shù)。一般來說n_estimators太小,容易欠擬合,n_estimators太大,又容易過擬合,一般選擇一個適中的數(shù)值。默認是50。(5)learning_rate:AdaBoostClassifier和AdaBoostRegressor都有,即每個弱學習器的權(quán)重縮減系數(shù)ν,ν的取值范圍為0<ν≤1,默認是1。對于同樣的訓練集擬合效果,較小的ν意味著需要更多的弱學習器的迭代次數(shù)。通常我們用步長和迭代最大次數(shù)一起來決定算法的擬合效果??蚣軈?shù)(2)(1)max_features:劃分時考慮的最大特征數(shù)??梢允褂煤芏喾N類型的值,默認是“None”,意味著劃分時考慮所有的特征數(shù)。(2)max_depth:決策樹最大深度。默認可以不輸入,此時,決策樹在建立子樹的時候不會限制子樹的深度。(3)min_samples_split:內(nèi)部節(jié)點劃分所需最小樣本數(shù)。默認是2。這個值限制了子樹繼續(xù)劃分的條件,如果某節(jié)點的樣本數(shù)少于min_samples_split,則不會繼續(xù)再嘗試選擇最優(yōu)特征來進行劃分。弱學習器參數(shù)(1)(4)min_samples_leaf:葉子節(jié)點最少樣本數(shù),默認是1。這個值限制了葉子節(jié)點最少的樣本數(shù),如果某葉子節(jié)點數(shù)目小于樣本數(shù),則會和兄弟節(jié)點一起被剪枝。(5)min_weight_fraction_leaf:葉子節(jié)點最小的樣本權(quán)重和,默認是0,即不考慮權(quán)重問題。這個值限制了葉子節(jié)點所有樣本權(quán)重和的最小值,如果小于這個值,則會和兄弟節(jié)點一起被剪枝。(6)max_leaf_nodes:最大葉子節(jié)點數(shù),默認是“None”,即不限制最大的葉子節(jié)點數(shù)。通過限制最大葉子節(jié)點數(shù),可以防止過擬合。弱學習器參數(shù)(2)BoostingAdaBoost原理AdaBoost的scikit-learn實現(xiàn)應用案例本小節(jié)基于Boston波士頓房價數(shù)據(jù)集利用AdaBoost對房價進行預測。Boston房價預測是一個回歸問題。數(shù)據(jù)集一共包含506個觀察,13個輸入變量和1個輸出變量。每條數(shù)據(jù)包含房屋以及房屋周圍的詳細信息。其中包含城鎮(zhèn)犯罪率,一氧化氮濃度,住宅平均房間數(shù),到中心區(qū)域的加權(quán)距離以及自住房平均房價等等。應用案例導入庫準備數(shù)據(jù)集數(shù)據(jù)準備fromsklearn.datasetsimportload_bostonfromsklearn.ensembleimportAdaBoostRegressor#下載數(shù)據(jù)集boston=load_boston()#定義feature和labelx=boston.datay=boston.targetprint('Featurecolumnname')print(boston.feature_names)print("Sampledatavolume:%d,numberoffeatures:%d"%x.shape)print("Targetsampledatavolume:%d"%y.shape[0])sns.distplot(tuple(y),kde=False,fit=st.norm)定義模型AdaBoost和DecisionTree,在未調(diào)參的情況下對比兩者的性能。模型定義和訓練#定義模型名稱names=['DecisionTree','AdaBoost']#定義模型models=[DecisionTreeRegressor(),AdaBoostRegressor(n_estimators=30)]#模型訓練并返回R2值defR2(model,x_train,x_test,y_train,y_test):model_fitted=model.fit(x_train,y_train)y_pred=model_fitted.predict(x_test)score=r2_score(y_test,y_pred)returnscore#輸出模型測試結(jié)果forname,modelinzip(names,models):score=R2(model,x_train,x_test,y_train,y_test)print("{}:{:.6f}".format(name,score.mean()))返回結(jié)果:DecisionTree:0.461254AdaBoost:0.657742通過網(wǎng)格搜索的方法選擇較好的框架參數(shù)。網(wǎng)格搜索#網(wǎng)格搜索選擇較好的框架參數(shù)parameters={'n_estimators':[50,60,70,80],'learning_rate':[0.5,0.6,0.7,0.8,0.9],}model=GridSearchCV(AdaBoostRegressor(),param_grid=parameters,cv=3)model.fit(x_train,y_train)#輸出最合適的參數(shù)值print("Optimalparameterlist:",model.best_params_)print("Optimalmodel:",model.best_estimator_)print("OptimalR2value:",model.best_score_)返回結(jié)果:Optimalparameterlist:{'lea

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論