最近在看《機器學習實戰》一書,今天看到了adaboost這塊,寫點自己的心得。
adaboost,組合分類器的一種,其分類的結果是由若干分類器(弱分類器)結果的加權求和得到的,弱分類器可以是logistic regression, svm, knn等等。
訓練訓練集x中有m個樣本,每個樣本是n維的,那麼訓練集可以用m x n的矩陣表示,樣本標籤y為 m x 1的向量,標籤取值為+1或-1。
adaboost除了每個弱分類器有權重,在訓練時,訓練樣本也有權重,設訓練樣本的權重為向量d,初始狀態下,d中的每個元素都為1/m。接著,對x中的每一維特徵進行遍歷,找到一種特徵**方法,使得分類加權誤差weightederror=innerproduct(d, error)最小,其中,當y』(**值)與y不相等時,error向量對應位置為1,否則為0。將此種特徵**法形成的樹作為第乙個弱分類器,它對應的加權誤差作為這棵樹的誤差e,在組合分類器中,它的貢獻(權重)alpha=0.5*ln[(1+e)/e]。同時更新樣本權重向量d,更新方法為,若樣本i被正確分類,則di=di*exp(-alpha)/sum(d),若樣本i被錯誤分類,則di=di*exp(alpha)/sum(d)。繼續尋找在新的樣本權重d下,使加權誤差最小的特徵**方法,然後不斷更新d,計算組合分類器的組合分類結果,儲存產生的弱分類器,直至誤差為0。此時,訓練完畢,而在每次迭代中形成的樹(也是樹樁stump,因為特徵只**了一次)就構成了我們這個adaboost的弱分類器的集合。
分類對於新來的樣本,依次按照訓練時形成的弱分類器對其進行分類,並將各弱分類器的分類結果與其權重alpha分別相乘後再相加,若結果大於0,則判為+1;反之,若結果小於0,則判為-1。
未完待續。。
後續將貼上python的實現**。
學習心得 python學習心得
自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...
學習心得 我的學習心得
我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...
Spring學習心得
不看不知道,一看便學到,會不會與您產生共鳴呢?喜歡再捧場拍磚 spring使用從一年前開始,邊學習邊開發。這裡講講我的學習心得。第一條 記住ioc就是spring的一切。而掌握ioc的唯一方法就是使用和思考。spring是ioc為核心的,所以第一步就是要深刻理解ioc,最好是能盡快把ioc作為教條式...