1. 程式人生 > >關於Adaboos選擇最優弱分類器過程的理解

關於Adaboos選擇最優弱分類器過程的理解

特徵的設計在此不做解釋,隨著研究的深入,很多學者豐富和改善了以前的那些特徵,最原始的矩形特徵為例:



所謂的弱分類器其實是由特徵f、閾值theta和一個決定不等號方向的p所決定的在此先不考慮p,簡單談談我理解中的選擇最優弱分類器的過程。

在上述的特徵中,第一中的特徵值就是兩個矩形的畫素值之差,那麼對於很多個訓練樣本,比如說現在有200幅正例影象,1000幅負例影象,那麼在這些影象的相同的某個位置,計算得到每一幅影象上的特徵值,並做好相應的標籤,那麼每一個特徵都會對應一個弱分類器,那麼這個弱分類器的閾值是怎麼確定的呢?

將這個特徵所計算出來的每一幅影象上的特徵值進行排序,比如

1        2              3                   4                   5                   6                        7                             8

正     負           正                   正                   正              負                       正                            負

現在需要學習一個閾值,那麼這個特徵值閾值theta,如果特徵值大於theta,我假定為正例,小於的我就判斷為負例。因為訓練樣本都是有標籤的,就是我事先知道那個是正例,那個是負例。如上面標示的,特徵值是2的是負例,但是如果我的theta取5.5,就會有一個負例(2)被當做了正例,也就是錯分了,同時7被當做了負例。

那麼這個theta怎麼確定呢,就是根據上面排好序的特徵值,通過遍歷的方法,一遍遍的計算如果theta取某個值得情況下的錯誤率error rate,直到找到一個theta0,使得用theta0作為閾值的情況下,錯分的樣本最少,錯誤率最小。那麼該特徵所對應的閾值也就確定了,另外這個閾值所能實現的錯誤率error0也被記下來。

上面說了那麼多,其實就是得到了第一個弱分類器,那麼大家都知道adaboost是從大量弱分類器中選優組合的過程。在影象的不同位置,我們可以計算得到不同的特徵,按照上面的過程也就得到了很多的弱分類器,那麼這些弱分類器都有用嗎,並不是的,adaboost索要做的就是在這些弱分類器中選擇出一個最優的弱分類器用於後續的分類器的組合。

選擇最優弱分類器:

上面我們得到了很多弱分類器

h1                h2                      h3                      h4                            h5                            h6                          h7...........................

theta1          theta2              theta3                 theta4                     theta5                     theta6                     theta7        ........................ 閾值

e1                  e2                     e3                      e4                            e5                            e6                            e7..................................錯誤率

那麼接下來就是比較那個錯誤率e最小,就把那個弱分類器留下來作為最優的弱分類器。

AdaBoost通過改變每一次訓練樣本的權重,將分類錯誤的樣本權重增大,並用調整過的樣本來學習得到下一個最優弱分類器,最後將所有的最優弱分類器按照一定的規則進行組合,得到最終的強分類器。在此就不在詳述。