--- tags: 機器學習基石下:方法篇 --- Ch11 Linear Models for Binary Classification === ## Content [TOC] ## [Slides & Videos](https://www.csie.ntu.edu.tw/~htlin/mooc/) ## [Linear Models for Binary Classification](https://www.coursera.org/learn/ntumlone-algorithmicfoundations/lecture/W274w/linear-models-for-binary-classification) ### Linear Models Revisited ![](https://i.imgur.com/AxEDZr4.png) - 看起來 linear regression 跟 logistic regression 的 optimization 比較好解,那能不能用來幫助我們的 linear classification? ![](https://i.imgur.com/ylJMN9r.png) - 先定義一下 linear scoring function $s=w^Tx$ - 我們就可以重新寫下三種 linear model 的 error function - $\text{err}=1[\text{sign}(ys)\neq 1]$ for **linear classification** - 注意這裡的 $1[...]$ 表示如果中括號裡面是 true,就是1,否則0 - $\text{err}=(ys-1)^2$ for **linear regression** - 注意這裡只用在正負 1 的輸出上,所以才會導出這結果 (把 $y$ 乘進去就導出來了) - $\text{err}=\ln(1+\exp(-ys))$ for **logistic regression** - 注意這個本來就長這樣 - **$ys$ 的物理意義可以看成我們 classification 的 correctness score** - **也就是說我的 $ys$ 越大,代表我正確方向的分數越大** ### Visualizing Error Functions ![](https://i.imgur.com/wTu1r32.png) - 藍色那條是 0/1 error - 紅色那條是 squared error - 它在 $ys=+1$ 時,的確有 0 的 error - 但是在 $ys > +1$ 時,卻提高 error,這樣不好 - 灰色那條是 cross-entropy error - 0/1 error 小 $\leftrightarrow$ cross-entropy error 小 - 為了推導方便,我們常常把 cross-entropy error 的 log 換成以 2 為底 - 其實就是除以 $\ln 2$ - ![](https://i.imgur.com/uxr1lOZ.png) - 現在 scaled cross-entropy 成了 0/1 error 的 upper bound ### Theoretical Implication of Upper Bound ![](https://i.imgur.com/cBEaHRL.png) - $E_{in}$ 會成立剛剛說的 scaled cross-entropy 會是 0/1 error 的 upper bound - 同理,$E_{out}$ 也成立。 - 不管用左邊那種方式還是右邊那種方式計算,都會得到結論: - $E_{out}^{0/1}(w)\leq\frac 1{\ln 2}E_{in}^{CE}(w)$ - **也就是說,若我們努力把 cross-entropy error 做好,那某種角度來看 0/1 error 也可以做得不錯** - 其實同理,linear regression 也可以這樣,只不過 linear regression 是更寬鬆的 bound 而已。 ![](https://i.imgur.com/cAYZsUD.png) - 前面說的做法叫 regression for classification,就是我拿到 data 就直接做 regression,但是在回傳 $g$ 的時候我是回傳 $\text{sign}(w^Tx)$ - 好處壞處看圖 - 大多數的人會使用 logistic regression 來取代 pocket - 較容易 optimize - (又有 soft classification) ## [Stochastic Gradient Descent](https://www.coursera.org/learn/ntumlone-algorithmicfoundations/lecture/Ec6Qv/stochastic-gradient-descent) ### Two Iterative Optimization Schemes ![](https://i.imgur.com/mNXTqr2.png) - PLA 的一次 iteration 只需要花 $O(1)$ 的時間複雜度 - logistic regression 卻需要花 $O(N)$ 的時間複雜度,跟 pocket 差不多了 - 能不能不要花 $O(N)$? ### Logistic Regression Revisited ![](https://i.imgur.com/0VTmPm1.png) - 現在要計算 gradient 必須要對那個 term 取平均,要計算 $N$ 次那個 term - 隨機抽 $n$ 個點,然後平均,期望值上來說,會跟我把 $N$ 個點直接做平均很接近。 - 那我們現在做比較 extreme 的 case 就是 $n=1$。 ### Stochastic Gradient Descent (SGD) ![](https://i.imgur.com/DRnH6Mj.png) - 可以視為真正的 gradient 加上 zero-mean 的 noise - 只要走夠多步,那平均來說就跟真正的 GD 差不多 - pros: - simple & cheaper computation - useful for **big data** or **online learning** - cons: - less stable in nature - 現在把 logistic regression 的 GD 換成 SGD - $w_{t+1}\leftarrow w_t+\eta\theta(-y_nw_t^Tx_n)(y_nx_n)$ - 有沒有覺得很眼熟?~~(沒有)~~ ### PLA Revisited ![](https://i.imgur.com/St4lltG.png) - 觀察 SGD 的規則,我們發現可以把 SGD logistic regression 看成是 PLA 的 soft 版本 - PLA 是:有錯就更新,沒錯就不更新 - SGD logistic regression 是:看它錯多少就更新多少 ### Fun Time: SGD for Linear Regression ![](https://i.imgur.com/zEdPoNN.png) - 只要把之前 gradient 的 $X$ 換成單一資料點 $x_n$ 即可。 - **物理意義是:我們也是往 $x_n$ 的方向更新,錯越多,就更新越多。** ## [Multiclass via Logistic Regression](https://www.coursera.org/learn/ntumlone-algorithmicfoundations/lecture/cdEeC/multiclass-via-logistic-regression) ### Multiclass Classification ![](https://i.imgur.com/J01FNxs.png) - 我們想要利用之前已經學會的 binary classification 來解 multi-class classification 的問題。 ### One Class at a Time - 一次只分類一個 class,看是不是它,這樣我們就得到 4 個 classifier #### Multiclass Prediction: Combine Binary Classifiers ![](https://i.imgur.com/JznTrxe.png) - 然後再根據剛剛這 4 個分類器決定是誰 - 但這樣會有問題 - 可能有兩個分類器都說是它 - 或者所有分類器都說不是它 ### One Class at a Time Softly - 既然如此那我要求我的每個分類器都告訴我,到底多大機率是它 - 就用 logistic regression 吧! #### Multiclass Classification: Combine Soft Classifiers ![](https://i.imgur.com/dqhUJzb.png) - 然後選那個 estimated probability 最大的 - 其實不需要考慮 logistic function,所以把它漆成灰色的。 ### One-Versus-All (OVA) Decomposition ![](https://i.imgur.com/4KQPzxT.png) - pros - 有效率,我們有 $k$ 個 class 就做 $k$ 次 binary classification 就好 - 可以在不同機器上做平行運算。 - 只要演算法是可以輸出機率,或者輸出可以比大小數值的都適用 - cons - 當 $k$ 很大,那麼對這 $k$ 個 classifier 來說,資料集是 unbalanced 的,也就是說 classifier 會有 trivial solution 是全都猜叉叉,它們就覺得自己做得很好了。 - 我們之前並沒有說機率加起來要是 1,而統計上其實有人做了真正的多類別 logistic regression ## [Multiclass via Binary Classification](https://www.coursera.org/learn/ntumlone-algorithmicfoundations/lecture/boH6v/multiclass-via-binary-classification) ![](https://i.imgur.com/h0Br8FQ.png) - 之前說 OVA 會 unbalanced,那就用 One Versus One 吧 ### One versus One at a Time - 每次就只拿兩個 class 的 data 出來,這樣一共會訓練 $C_2^k$ 個 classifier ![](https://i.imgur.com/vKbykwE.png) - 可以把這些 classifier 看成是各個 class 之間的循環賽,最後有一個 class 會勝出 - $g(x)$ 就是 voting of classifiers ### One-versus-one (OVO) Decomposition ![](https://i.imgur.com/WIIQsBm.png) - pros: - efficient (每個 classifier 用的 dataset 比較小) - 任何 binary classification 都可以用 - cons: - 我要花 $C^k_2$ 或者說 $O(K^2)$ 的力氣去儲存這些 $w$ ### Fun Time: OVO ![](https://i.imgur.com/T5o88bw.png) - $C^{10}_2(\dfrac{2N}{10})^3=\frac{9}{25}N^3$ - 可以注意到 OVA 花的時間多超多 ### Summary ![](https://i.imgur.com/z32FzxW.png)