實現機器學習的循序漸進指南VI AdaBoost

2021-09-23 13:35:23 字數 2815 閱讀 2846

目錄介紹

adaboost模型

弱分類器

權重更新 分類

結論與分析

可訪問 實現機器學習的循序漸進指南系列彙總,獲取本系列完成文章列表。

adaboost

boosting一種方法,它基於多分類器組合可以在複雜環境中獲得更準確結果的原則。

adaboost

模型由弱分類器,權重更新和分類組成。

adaboost

將弱分類器與某些策略相結合,以獲得強大的分類器,如下所示。在每次迭代中,錯誤分類的樣本的權重將增加以捕獲分類器「注意

」。例如,在圖(

a)中,虛線是分類器平面,並且存在兩個錯誤分類的藍色樣本和乙個紅色樣本。然後,在圖(

b)中,增加了兩個藍色樣本和乙個紅色樣本的權重。在每次迭代時調整權重後,我們可以組合所有弱分類器以獲得最終的強分類器。

在每次迭代時有兩種型別的權重要更新,即每個樣本

,m分別是樣本數和弱分類器數。

adaboost在每次迭代中訓練乙個弱分類器,表示

然後,通過更新弱分類器的權重

更新樣本的權重

形成上述等式,我們可以得出結論 1.

訓練誤差是錯誤分類樣本的權重之和 2.

當e m

小於0.5

,am 大於0

,這意味著較低的訓練誤差的弱分類具有

弱分類器在最終分類器中扮演的更重要的角色。 3.

權重更新可寫為

這意味著正確的分類樣本的權重減少,而錯誤的分類樣本的權重增加。

adaboost

的訓練流程**如下所示

def train(self, train_data, train_label):

if self.norm_type == "standardization":

train_data = preprocess.standardization(train_data)

else:

train_data = preprocess.normalization(train_data)

train_label = np.expand_dims(train_label, axis=1)

sample_num = len(train_data)

weak_classifier =

# initialize weights

w = np.ones([sample_num, 1])

w = w/sample_num

# predictions

agg_predicts = np.zeros([sample_num, 1]) # aggregate value of prediction

# start train

for i in range(self.iterations):

base_clf, error, base_prediction = self.baseclassifier(train_data, train_label, w)

alpha = self.updatealpha(error)

# update parameters in page of 139 eq.(8.4)

expon = np.multiply(-1 * alpha * train_label, base_prediction)

w = np.multiply(w, np.exp(expon))

w = w/w.sum()

# calculate the total error rate

agg_predicts += alpha*base_prediction

error_rate = np.multiply(np.sign(agg_predicts) != train_label, np.ones([sample_num, 1]))

error_rate = error_rate.sum()/sample_num

if error_rate == 0:

break

self.classifier_set = weak_classifier

return weak_classifier

結合所有弱分類器以獲得強分類器。分類規則是每個弱分類結果的加權和,由下式給出

可以作為使用前向步進演算法的指數損失函式的加法模型。在

adaboost

中,弱分類器的型別可以不同或相同。在本文中,我們使用5個

svm分類器作為弱分類器,檢測效能如下所示:

它可以是精度提高約

5%,執行時間約為單個

svm的5倍。

可以在machinelearning中。

循序漸進學習Django

利用這一星期的業餘時間學習django,學到了模板系統,感覺還是不錯,很簡單的東東,django是個python web框架,即然是框架,就提供了很多已經封裝好的能夠快速解決問題的方法.所以忽然覺得太先進的框架反而對自己的python基礎發展不太好.即使學會了django提供的模板使用方法,但是不知...

循序漸進學習oracle

1.需要了解資料庫原理基本知識,明白行 列概念,有關係型資料庫知識。2.有環境學習資料庫,如自己xp上安裝,或公司的小型機,或pc,linux,solaris,aix,或hp unix等等環境。3.開始學習sql基礎。dml,ddl,dcl,等等多加練習。先過sql這一關。4.安裝oracle,9i...

我的學習 需要 循序漸進

看到不少剛入門的菜鳥問我怎麼學習,找不到適合自己的hack學習方法,到處碰壁,不但損傷信心和興趣,而且也耽誤了不少高貴的時間和金錢,做了許多無用功,到頭來毫無收穫。因此我總結了一下我個人的一些學習方法與心得 當然有一些方法也是網上的朋友教我的 希望能給剛入門的朋友一些參考,使其少走彎路。如果您是乙隻...