Coursera機器學習基石筆記week11
Linear Models for Classification
嚴謹一點來說,PLA並不是一種“模型”,PLA (Perceptron Learning Algorithm) 是一種“演算法”,用來尋找在“線性可分”的情況下,能夠把兩個類別完全區分開來的一條直線,所以我們簡單的把PLA對應的那個模型就叫做Linear Classification。
- Linear Classification模型:取s的符號作為結果輸出,使用0/1 error作為誤差衡量方式,但它的cost function,也就是 是一個離散的方程,並且該方程的最優化是一個NP-hard問題。
- Linear Regression模型:可直接計算出結果,使用平方誤差作為誤差衡量方式,好處是其 是一個凸二次曲線,非常方便求最優解(可通過矩陣運算一次得到結果)。
- Logistic Regression模型:輸出的方程是經過sigmoid的結果,使用cross-entropy作為誤差衡量方式,其 是一個凸函式,可以使用gradient descent的方式求最佳解。
Linear Regression和Logistic Regression的輸出是一個實數,而不是一個Binary的值,他們能用來解分類問題嗎?可以,只要定一個閾值,高於閾值的輸出+1,低於閾值的輸出-1就好。既然Linear Regression和Logistic Regression都可以用來解分類問題,並且在最優化上,他們都比Linear Classification簡單許多,我們能否使用這兩個模型取代Linear Classification呢?
這裡y是一個binary的值,要麼是-1,要麼是+1。注意到三個模型的error function都有一個ys的部分,也叫做分類正確性分數 (classification correctness score)。其中s是模型對某個樣本給出的分數,y是該樣本的真實值。
不難看出,當y=+1時,我們希望s越大越好,當y=−1時,我們希望s越小越好,所以總的來說,我們希望ys儘可能大。因此這裡希望給較小的ys較大的cost,給較大的ys較小的cost即可。因此,不同模型的本質差異,就在於這個cost該怎麼給。
既然這三個error function都與ys有關,我們可以以ys為橫座標,err為縱座標,把這三個函式畫出來。
從上圖可以看出
呈階梯狀,ys>0,取0,小於0,取1.而
則呈拋物線狀,在ys=1左右小範圍與
相似。而
是單調遞減函式,但是我們發現
不總是大於
,為了方便起見,利用換底公式(
)將
縮放得到
,使之一直在
之上。
由上圖可得:
其實線性迴歸也可以是線性分類的一個上限,只不過隨著ys離1的距離越大,產生的差距越大。但是總的來說線性迴歸和邏輯迴歸都可以用來解決linear classification的問題。
下圖列舉了PLA、linear regression、logistic regression模型用來解linear classification問題的優點和缺點。通常,我們使用linear regression來獲得初始化的
,再用logistic regression模型進行最優化解。
Stochastic Gradient Descent
我們知道PLA與logistic regression都是通過迭代的方式來實現最優化的,即:
when stop,return last w as g
區別在於,PLA每次迭代只需要針對一個點進行錯誤修正,而logistic regression每一次迭代都需要計算每一個點對於梯度的貢獻,再把他們平均起來:
這樣一來,資料量大的時候,由於需要計算每一個點,那麼logistic regression就會很慢了。
那麼我們因此可以每次只看一個點,即不要公式中先求和再取平均數的那個部分。隨機選擇一個點n,它對梯度的貢獻為:
這個可以稱之為隨機梯度(stochastic gradient)。而真實的梯度,可以認為是隨機抽出一個點的梯度值的期望。
因此我們可以把隨機梯度當成是在真實梯度上增加一個均值為0的noise:
單次迭代看,好像會對每一步找到正確梯度方向有影響,但是整體期望值上看,與真實梯度的方向沒有差太多,同樣能找到最小值位置。隨機梯度下降的優點是減少計算量,提高運算速度,而且便於online學習;缺點是不夠穩定,每次迭代並不能保證按照正確的方向前進,而且達到最小值需要迭代的次數比梯度下降演算法一般要多。
除此之外,還有兩點需要說明:1、SGD的終止迭代條件。沒有統一的終止條件,一般讓迭代次數足夠多;2、學習速率η。η的取值是根據實際情況來定的,一般取值0.1就可以了。
Multiclass via Logistic Regression
我們現在已經有辦法使用線性分類器解決二元分類問題,但有的時候,我們需要對多個類別進行分類,即模型的輸出不再是0和1兩種,而會是多個不同的類別。那麼如何套用二元分類的方法來解決多類別分類的問題呢?
利用二元分類器來解決多類別分類問題主要有兩種策略,OVA(One vs. ALL)和OVO(One vs. One)。
先來看看OVA,假設原問題有四個類別,那麼每次我把其中一個類別當成圈圈,其他所有類別當成叉叉,建立二元分類器,迴圈下去,最終我們會得到4個分類器。
但是這樣分類可能會帶來一些問題,我們可能會遇到一些邊界都不屬於上述四類的情況,或者出現某些邊界出現都被判斷屬於多個類的情況,那麼這時候使用簡單的binary classification就不能很好的解決問題了。
因此我們考慮使用soft軟性分類,使用logistic regression來計算某類的概率,通過比較概率來分類。
對於OVA來說,優點就是簡單高效,可以使用任何logistic regression類的模型來進行解決。缺點就是如果資料類別太多了,比如100種類別,99種類別做叉叉,1種類別做圈圈,導致兩種類別不平衡,因此略微隨意的切也能切出較高的準確率,那麼就可能會影響分類的效果。
Multiclass via Binary Classfication
所以為了解決這種不平衡問題,我們可以使用OVO策略,即每次只拿兩個類別的資料出來建立分類器,如圖:
這種方法的優點是更加高效,因為雖然需要進行的分類次數增加了,但是每次只需要進行兩個類別的比較,也就是說單次分類的數量減少了。而且一般不會出現資料unbalanced的情況。缺點是需要分類的次數多,時間複雜度和空間複雜度可能都比較高。
總結
本節課主要介紹了分類問題的三種線性模型:linear classification、linear regression和logistic regression。首先介紹了這三種linear models都可以來做binary classification。然後介紹了比梯度下降演算法更加高效的SGD演算法來進行logistic regression分析。最後講解了兩種多分類方法,一種是OVA,另一種是OVO。這兩種方法各有優缺點,當類別數量k不多的時候,建議選擇OVA,以減少分類次數。