目錄介紹
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學習方法,到處碰壁,不但損傷信心和興趣,而且也耽誤了不少高貴的時間和金錢,做了許多無用功,到頭來毫無收穫。因此我總結了一下我個人的一些學習方法與心得 當然有一些方法也是網上的朋友教我的 希望能給剛入門的朋友一些參考,使其少走彎路。如果您是乙隻...