一文搞懂 Adaboost及手推演算法案例

2022-05-02 06:54:09 字數 1617 閱讀 1033

boosting 演算法的特點在於:將表現一般的弱分類器通過組合變成更好的模型。代表自然就是我們的隨即森林了。

gbdt和adaboost是boost演算法中比較常見的兩種,這裡主要講解adaboost。

adaboost演算法的核心就是兩個權重。對於資料有乙個權重,權重大的資料計算的損失就大;然後對於每乙個弱分類器有乙個權重,這個權重就是每乙個弱分類器最終投票的比重。

【先給出adaboost關鍵的公式】

\(\alpha_1=\fracln(\frac)\) 分類器的投票權重

\(w_i=w_ie^(x_i)}\) 更新樣本的權重

【隨即森林中最終投票每乙個弱分類器的比重相同】

大概流程就是,現在有乙個資料集,然後每個資料的比重都相同,然後訓練了好幾個不同的弱分類器。

挑選錯誤率最低的弱分類器,然後通過【某種演算法】得到這個弱分類器最終投票的比重,然後通過【某種演算法】更新每乙個資料的比重;

因為每乙個資料的比重更新了,所以再選擇乙個錯誤率最低的弱分類器,然後通過【某種演算法】得到這個弱分類器最終投票的比重,然後通過【某種演算法】更新每乙個資料的比重;

重複這個過程。

演算法的流程:

這裡給乙個具體計算的例子:

假設這裡有10個資料:

加號和減號分別代表不同的類別。然後每個類別有5個樣本。

下面會給出3個弱分類器:

這三個分類器分別是\(h_1(x),h_2(x),h_3(x)\)

圖中畫圈的資料就是分類錯誤的資料。可以發現每個弱分類器都分錯了3個。下面開始adaboost的演算法。

先計算三個弱分類器的錯誤率,因為一開始每個樣本的權重都是0.1,每個分類器又都錯了3個樣本,所以錯誤率都是0.3。這裡就隨機選取第乙個分類器作為錯誤率最低的那個好了。

我們這裡通過第乙個【某種演算法】計算第乙個弱分類器在最終的投票權重:

\(\alpha_1=\fracln(\frac)=0.5*ln(\frac)=0.4236\)

然後通過這個\(\alpha_1=0.4236\)來更新每乙個樣本的權重。這也就是上面提到的第二個【某種演算法】:

\(w(i)=w(i)*e^(x_i)}\)

這啥意思的,現在假設第乙個樣本+1,這個樣本的權重是0.1(更新前),然後這個樣本在第乙個分類器中是非類正確的,所以\(y_i \hat(x_i)=1\),所以這個樣本更新後的權重就是\(0.1e^=0.0655\)

當然,對於+3這個樣本,第乙個分類器就分類錯誤,所以\(y_i \hat(x_i)=-1\),所以呢這個樣本更新後的權重就是:\(0.1e^=0.1527\)

下面經過第乙個分類器之後的樣本的權重:

然後再計算每乙個分類器的基於更新之後樣本權重的錯誤率:

這一次選的是第二個分類器,然後計算它的\(\alpha_2\),然後再更新每乙個樣本的權重值:

然後是再尋找錯誤率最低的分類器:

到這一步的時候,我們已經有了\(\alpha_1,\alpha_2,\alpha_3\),所以我們的adaboost已經得到了所有分類器的投票權重,所以最終的模型投票公式就是:

一文搞懂transform skew

目錄 如何理解斜切 skew,先看乙個 demo。在下面的 demo 中,有 4 個正方形,分別是 紅色 不做 skew 變換,綠色 x 方向變換,藍色 y 方向變換,黑色 兩個方向都變換,拖動下面的滑塊可以檢視改變 skew 角度後的效果。切換 selector 可以設定 transform or...

一文搞懂property函式

接下來我帶大家了解乙個函式的作用以及使用技巧,希望對大家都有幫助,話不多說,接下來就開始我的表演特性 首先property有兩種用法,一種是作為函式的用法,一種是作為裝飾器的用法,接下來我們就逐一分析 property函式 看一下作為函式它包含的引數都有哪些 property fget none,f...

一文搞懂記憶體屏障

gcc編譯選項中有個 o選項,表示編譯 的時候進行優化。這樣就會出現一種可能 優化後的 和優化前的 順序不一致。來看個例子 8 include9 10 int a,b 11 12 int main 13 很簡單,我們使用不加優化選項來將其編譯為組合語言 yuhao laplace workspace...