# 林軒田機器學習基石筆記 - 第九講、第十講
###### tags: `林軒田` `Maching Learning` `機器學習基石`
---
>* **本文為一系列課程之筆記,建議從" [機器學習基石筆記-1](https://hackmd.io/s/ryxzB7LwN) "開始閱讀**
>>
>* **本文討論內容請參考:
機器學習基石第九講 : Linear Regression**
**機器學習基石第十講 : Logistic Regression**
>
>* **本篇所有圖片部分由筆者製作,其它均為機器學習基石課程內容講義**
>
---
在開始接下來的課程前,我想先緩一緩腳步。
從前面的課程一路到現在,我們學到了這麼多的想法、概念、工具,究竟這些東西的關聯性是什麼 ? 它們跟機器學習的關係又是什麼 ?
##
當我們手中有一堆資料 ( $\mathbb{D}$ ),我們會先問自己,我們想要從這些資料裡面知道什麼 ? 預測什麼 ? ( $Classification\ or\ Regression$ ) 在這樣的問題下,我們最終會希望有一個模型 ( $g$ ) 可以盡量準確地預測出我們想要知道的事情。( $g\approx f$ )
想要得到這樣的模型,我們就得從許多可能性中 ( $h$ ),找出跟我們手中資料真實狀況誤差最小的 ( $\min E_{in}(h)=\min err(y,\hat y)$ ) 來作為我們的模型。而這樣找出最小值的過程,就是我們所謂演算法 ( $algorithm$ )。
PS:
當我們決定了想要什麼樣子型態的模型 ( PLA , Pocket , Linear regression , Logistic regression...) ,那麼找出最小值的演算法也同時被確定下來。
##
當我們理清楚其中的關係後,很清楚地可以知道,<font color="#dd0000">所有演算法就是針對某一個error measure 尋找最小值的方法</font>,也就是說,當我們要決定模型的型態,也要先決定出來我們要用什麼樣子的 error measure 。( 回想一下,當我們決定了 error measure 後,機器學習的可行性便也可以確定[^1])
[^1]:可參閱 [機器學習基石筆記-4](https://hackmd.io/s/Sk6y3RMYE)
# Linear Regression
![](https://i.imgur.com/4RQIFTU.png)
( 紅線部分我們稱為 剩餘residuals )
Linear regression : 找出 line / hyperplane 有最小的 residuals
## Linear Regression Algorithm
在線性回歸中,最常用的 error measure 就是 square error
$err(y,\hat y)=(y-\hat y)^2$
$\Longrightarrow E_{in}(h)=\frac{1}{N}\sum\limits_{n=1}^{N}(h(\mathbb{X}_n)-y_n)^2\ and\ E_{out}(h)=\underset{(\mathbb{X},y)\sim\mathbb{P}}{\mathbb{E}}(\mathbb{W}^T\mathbb{X}-y)^2$
![](https://i.imgur.com/9Ff7ClN.png)
Step 1 : 先將資料整理成矩陣型態,找出以每一筆資料為列向量的 $\mathbb{X}$ 矩陣及 $\mathbb{Y}$ 矩陣
Step 2 : 計算出 pseudo-inverse[^2][^3] $\mathbb{X}^\dagger=\begin{cases}(\mathbb{X}^T\mathbb{X})^{-1}\mathbb{X}^T,& \mbox{if}\ \mathbb{X}^T\mathbb{X}\ \mbox{is invertible}\\defined\ by\ other\ way,&\mbox{if}\ \mathbb{X}^T\mathbb{X}\ \mbox{is'nt invertible}\end{cases}$
[^2]:擬反矩陣pseudo-inverse 又稱廣義反矩陣
$\forall A\in\mathbb{C}^{m\times n}\ ,\ \exists !A^\dagger$ s.t. :
$1.AA^{\dagger}A=A$
$2.A^{\dagger}AA{^\dagger}=A^{\dagger}$
$3.(A^\dagger A)^T=A^\dagger A$
$4.(AA^\dagger)^T=AA^\dagger$
[^3]:廣義反矩陣在數學上的應用之一便是用來求出最小平方法之解
$Assume\ \min\parallel AX-Y\parallel_2\ ,\ then\ X=A^\dagger Y+(I-A^\dagger A)w\ ,\ where\ w\ is\ arbitrary\ vector$
Step 3 : 最佳解 $\mathbb{W}_{lin}=\mathbb{X}^\dagger\mathbb{Y}$
---
$<Proof>$
(1) $Existence :$
$E_{in}(\mathbb{W})=\frac{1}{N}\sum\limits_{n=1}^{N}(\mathbb{W}^T\mathbb{X}_n-y_n)^2=\frac{1}{N}\sum\limits_{n=1}^{N}({\mathbb{X}_n}^T\mathbb{W}-y_n)^2$
$=\frac{1}{N}\begin{Vmatrix}
{\mathbb{X}_1}^T\mathbb{W}-y_1 \\
{\mathbb{X}_2}^T\mathbb{W}-y_2 \\
\vdots\\
{\mathbb{X}_N}^T\mathbb{W}-y_N \\ \end{Vmatrix}^2=\frac{1}{N}\begin{Vmatrix}\begin{bmatrix}{\mathbb{X}_1}^T \\{\mathbb{X}_2}^T\\ \vdots \\{\mathbb{X}_N}^T\end{bmatrix}\mathbb{W}-\begin{bmatrix}y_1\\y_2\\ \vdots \\y_N\end{bmatrix}
\end{Vmatrix}^2=\frac{1}{N}\begin{Vmatrix}\mathbb{X}\mathbb{W}-\mathbb{Y}\end{Vmatrix}^2$
$\because E_{in}(\mathbb{W})$ is a conti , diff ,convex function
$\therefore \exists \mathbb{W}_{lin}$ s.t. $\nabla E_{in}(\mathbb{W}_{lin})=\begin{bmatrix}\frac{\partial E_{in}}{\partial w_0}(\mathbb{W}_{lin})\\\frac{\partial E_{in}}{\partial w_1}(\mathbb{W}_{lin})\\ \vdots\\\frac{\partial E_{in}}{\partial w_d}(\mathbb{W}_{lin})\\\end{bmatrix}=\begin{bmatrix}0\\0\\\vdots\\0\end{bmatrix}$
(2)
$\because E_{in}(\mathbb{W})=\frac{1}{N}\begin{Vmatrix}\mathbb{X}\mathbb{W}-\mathbb{Y}\end{Vmatrix}^2=\frac{1}{N}(\mathbb{W}^T\mathbb{X}^T\mathbb{X}\mathbb{W}-2\mathbb{W}^T\mathbb{X}^T\mathbb{Y}+\mathbb{Y}^T\mathbb{Y})$
$\overset{let}{=}\frac{1}{N}(\mathbb{W}^T\mathbb{A}\mathbb{W}-2\mathbb{W}^T\mathbb{B}+\mathbb{C})$
$\Longrightarrow \nabla E_{in}(\mathbb{W})=\frac{1}{N}(2\mathbb{A}\mathbb{W}-2\mathbb{B})=\frac{2}{N}(\mathbb{X}^T\mathbb{X}\mathbb{W}-\mathbb{X}^T\mathbb{Y})\overset{let}{=}0$
$\Longrightarrow\mathbb{W}=\mathbb{W}_{lin}=\mathbb{X}^\dagger\mathbb{Y}\ where\ \mathbb{X}^\dagger=\begin{cases}(\mathbb{X}^T\mathbb{X})^{-1}\mathbb{X}^T,& \mbox{if}\ \mathbb{X}^T\mathbb{X}\ \mbox{is invertible}\\defined\ by\ other\ way,&\mbox{if}\ \mathbb{X}^T\mathbb{X}\ \mbox{is'nt invertible}\end{cases}$
## Linear Regression 的可行性
由上述我們可以找出有最小誤差的預測模型 $\hat{\mathbb{Y}}=\mathbb{X}\mathbb{W}_{lin}=\mathbb{X}(\mathbb{X}^T\mathbb{X})^{-1}\mathbb{X}^T\mathbb{Y}\overset{let}{=}\mathbb{H}\mathbb{Y}$
我們可以把這個 $\mathbb{H}$ 看作是一種線性變換,將 $\mathbb{Y}$ 轉換到 $\hat{\mathbb{Y}}$ ,再更白話一點說,$\mathbb{H}$ 就是 $\mathbb{Y}$ 與 $\hat{\mathbb{Y}}$ 的一個線性關係。而這樣的一個關係它有一些特別的特性 :
1. $\mathbb{H}$ is symmetric
2. $\mathbb{H}^k=\mathbb{H}$
3. $(\mathbb{I}-\mathbb{H})^k=\mathbb{I}-\mathbb{H}$
4. $tr(\mathbb{H})=d+1$
我們可以利用這些特性推導出
$\overline{E_{in}}=\underset{\mathbb{D}\overset{i.i.d}{\sim}\mathbb{P}}{\mathbb{E}}[E_{in}(\mathbb{W}_{lin}\ w.r.t\ \mathbb{D})]=noise\ level\cdot(1-\frac{d+1}{N})$[^4]
$\overline{E_{out}}=noise\ level\cdot(1+\frac{d+1}{N})$
( 此式在僅用於Linear Regression,因此證明僅放在註釋中 )
[^4]:此證明為簡易證明,雖不夠嚴謹,但仍可有不錯的解釋力
$<Proof>$
1. $E_{in}(\mathbb{W}_{lin})=\frac{1}{N}\begin{Vmatrix}\mathbb{Y}-\hat{\mathbb{Y}}\end{Vmatrix}^2=\frac{1}{N}\begin{Vmatrix}\mathbb{Y}-\mathbb{X}\mathbb{X}^\dagger\mathbb{Y}\end{Vmatrix}^2=\frac{1}{N}\begin{Vmatrix}(\mathbb{I}-\mathbb{X}\mathbb{X}^\dagger)\mathbb{Y}\end{Vmatrix}^2=\frac{1}{N}\begin{Vmatrix}(\mathbb{I}-\mathbb{H})\mathbb{Y}\end{Vmatrix}^2$
<br>
2. ![](https://i.imgur.com/30cDMOj.png =290x)![](https://i.imgur.com/J70UyQU.png =280x)
<br>
$\because\mathbb{H}\mathbb{Y}=\hat{\mathbb{Y}}\Longrightarrow\mathbb{H}$ transform $\mathbb{Y}$ to $\hat{\mathbb{Y}}$
$\because\mathbb{Y}-\hat{\mathbb{Y}}=(\mathbb{I}-\mathbb{H})\mathbb{Y}\Longrightarrow(\mathbb{I}-\mathbb{H})$ transform $\mathbb{Y}$ to $\mathbb{Y}-\hat{\mathbb{Y}}$
$Suppose\ that\ f(\mathbb{X})\in\hat{\mathbb{Y}}=\mathbb{X}\mathbb{W}_{lin}$
$\therefore(\mathbb{I}-\mathbb{H})$ transform $Noise$ to $\mathbb{Y}-\hat{\mathbb{Y}}$ ( $\because\mathbb{Y}=f(\mathbb{X})+Noise$ )
3. $E_{in}(\mathbb{W}_{lin})=\frac{1}{N}\begin{Vmatrix}\mathbb{Y}-\hat{\mathbb{Y}}\end{Vmatrix}^2=\frac{1}{N}\begin{Vmatrix}(\mathbb{I}-\mathbb{H})\cdot Noise\end{Vmatrix}^2=\frac{1}{N}(N-(d+1))\begin{Vmatrix}Noise\end{Vmatrix}^2$
( $\because\begin{Vmatrix}\mathbb{I}-\mathbb{H}\end{Vmatrix}^2=tr(\mathbb{I}-\mathbb{H})=tr(\mathbb{I})-tr(\mathbb{H})=N-(d+1)$ )
$\Longrightarrow\overline{E_{in}}=\underset{\mathbb{D}\overset{i.i.d}{\sim}\mathbb{P}}{\mathbb{E}}[E_{in}(\mathbb{W}_{lin}\ w.r.t\ \mathbb{D})]=noise\ level\cdot(1-\frac{d+1}{N})$
同理可證 : $\overline{E_{out}}=noise\ level\cdot(1+\frac{d+1}{N})$
這兩式指出,只要是從 $\mathbb{P}$ 這個分佈出來的,且尺寸為 $N$ ,那麼 $E_{in}$ 與 $E_{out}$ 的平均都會跟 $Noise$ 的平均有上述關係。
所以我們可以得出下圖 :
![](https://i.imgur.com/4nkAl7H.png)
當 $N\longrightarrow\infty$ ,$\overline{E_{in}}$ 與 $\overline{E_{out}}\longrightarrow\sigma^2$
$\Longrightarrow\overline{E_{out}}$ 會被限制住
$\Longrightarrow$ Linear Regression 是可行的 !
## Linear Regression for Binary Classification
![](https://i.imgur.com/PuLGZVT.png)
$\Longrightarrow err_{0/1}=([\![sign(\mathbb{W}^T\mathbb{X})\neq y_n]\!])\leq err_{sqr}=(\mathbb{W}^T\mathbb{X}-y_n)^2$
$\Longrightarrow\ classification\ E_{out}\leq\ classification\ E_{in}+\Omega(N,\mathbb{H},\delta)\leq\ regression\ E_{in}+\Omega(N,\mathbb{H},\delta)$
$\Longrightarrow$ Linear regression 的誤差上界的確比 classification 的誤差上界來的大,但是其為解析解,非常容易可以求出解,所以用一些準確度來換得效率也是一個可以接受的選項,誘惑者可先用regression求出解析解後,再拿這個解作為初始值放入PLA去求得更好的解,這樣也可以避免PLA花太多時間再做迭代。
# Logistic Regression
在現實生活中,我們有時候會想知道的事情不是單純的、絕對的、硬性的是非問題 ( 病人是否活著? ),或許我們會希望能夠有比較 soft 的分類 ( 病人活著的機率? ),或許,我們可以把這樣的 soft binary classification 視為是帶有 $Noise$ 的 classification ( [機器學習基石筆記-5](https://hackmd.io/s/rJaSpwpFV) 內談到的 "翻轉"機率 flipping noise level )。
$\mathbb{X}\overset{i.i.d}{\sim}\mathbb{P}$ , $\mathbb{Y}\overset{i.i.d}{\sim}\mathbb{P}(\mathbb{Y}\mid\mathbb{X})$
$\Longrightarrow\begin{cases}Binary\ classification\ f(\mathbb{X})=Sign(\mathbb{P}(+1\mid\mathbb{X})-\frac{1}{2})\in\left\{+1,-1\right\}\\Soft\ binary\ classification\ f(\mathbb{X})=\mathbb{P}(+1\mid\mathbb{X})\in\left[0,1\right]\end{cases}$
![](https://i.imgur.com/kr4qkyR.png)
上圖白話翻譯就是 : 對於每一個特徵,我們一樣可以給予不同的權重,計算出一個分數,再將這分數經由一個 連續(conti) , 可微(diff) , 單調(monotonic) $\theta$ 函數轉換成機率 ( $\theta:\mathbb{R}\rightarrow\left[0,1\right]$),這樣的 $\theta$ 函數最常用的是 $Sigmoid\ function=\theta(s)=\frac{1}{1+e^s}$
![](https://i.imgur.com/N4eRcKO.png)
## Logistic Regression Algorithm
這樣機率型態的 error measure 我們使用 cross-entropy ( 交叉熵 ) error
$E_{in}(\mathbb{W})=cross-entropy=\frac{1}{N}\sum\limits_{n=1}^{N}\ln(1+e^{-y_n\mathbb{W}^T\mathbb{X_n}})$[^5]
[^5]:Cross-Entropy
$f(\mathbb{X})=\mathbb{P}(+1\mid\mathbb{X})\iff\mathbb{P}(\mathbb{Y}\mid\mathbb{X})=\begin{cases}f(\mathbb{X})&y=+1\\1-f(\mathbb{X})&y=-1\end{cases}$
$\Longrightarrow\prod_{n=1}^{N}\mathbb{P}(\mathbb{X}_n)\mathbb{P}(y_n\mid\mathbb{X}_n)$<br>
$\Longrightarrow\prod_{y_n=+1}\mathbb{P}(\mathbb{X}_n)f(\mathbb{X}_n)\prod_{y_m=-1}\mathbb{P}(\mathbb{X}_m)(1-f(\mathbb{X}_m))$ ---(1)<br>
我們希望我們的預測 $h$ 可以有 $f$ 的表現
$\therefore\prod_{y_n=+1}\mathbb{P}(\mathbb{X}_n)h(\mathbb{X}_n)\prod_{y_m=-1}\mathbb{P}(\mathbb{X}_m)(1-h(\mathbb{X}_m))$ --- (2)
* 若 $h\approx f$,則上述(1)(2)兩式理應接近 且 (1)式應該會非常接近1
* 我們將(2)式定義成一個函數 稱為 $likelyhood(h)$,則我們想要的 $g=\arg\max\limits_{\forall h}(likelyhood(h))$<br>
$\therefore likelyhood(h)$
$=\prod_{y_n=+1}\mathbb{P}(\mathbb{X}_n)h(\mathbb{X}_n)\prod_{y_m=-1}\mathbb{P}(\mathbb{X}_m)(1-h(\mathbb{X}_m))$<br>
$=\prod_{y_n=+1}\mathbb{P}(\mathbb{X}_n)h(\mathbb{X}_n)\prod_{y_m=-1}\mathbb{P}(\mathbb{X}_m)$<font color="#dd0000">$(-h(\mathbb{X}_m))$</font>
$( \because h(\mathbb{X})=\theta(\mathbb{W}^T\mathbb{X})\ and\ 1-\theta(s)=-\theta(s) )$<br>
$\propto\prod_{n=1}^{N}h(y_n\mathbb{X}_n)=\prod_{n=1}^{N}\theta(y_n\mathbb{W}^T\mathbb{X})$
<br>
$g=\arg\max\limits_{\forall h}( likelyhood(h) )$
$\Leftrightarrow g=\arg\max\limits_{\forall\mathbb{W}}(\prod_{n=1}^{N}\theta(y_n\mathbb{W}^T\mathbb{X}))$
$\Leftrightarrow g=\arg\max\limits_{\forall\mathbb{W}}(\ln\prod_{n=1}^{N}\theta(y_n\mathbb{W}^T\mathbb{X}))$
$\Leftrightarrow g=\arg\min\limits_{\forall\mathbb{W}}(\frac{1}{N}\sum\limits_{n=1}^{N}-\ln\theta(y_n\mathbb{W}^T\mathbb{X}))$
$=\arg\min\limits_{\forall\mathbb{W}}(\frac{1}{N}\sum\limits_{n=1}^{N}-\ln(1+e^{(-y_n\mathbb{W}^T\mathbb{X})})^{-1})$
$\begin{matrix}=\arg\min\limits_{\forall\mathbb{W}}(\underbrace{\frac{1}{N}\sum\limits_{n=1}^{N}\ln(1+e^{(-y_n\mathbb{W}^T\mathbb{X})})})\\cross-entropy\ error\end{matrix}$
![](https://i.imgur.com/LqMNoeq.png)
挑選一個初始值 $\mathbb{W}_0$
Step 1 : 計算當下 $\mathbb{W}_t$ 的梯度 $\nabla E_{in}(\mathbb{W}_t)=\frac{1}{N}\sum\limits_{n=1}^{N}\theta(-y_n\mathbb{W}^T\mathbb{X})(-y_n\mathbb{X}_n)$
Step 2 : 進行權重迭代更新 $\mathbb{W}_{t+1}=\mathbb{W}_t-\eta\cdot\nabla E_{in}(\mathbb{W}_t)$
停止條件 :
(1) $\nabla E_{in}(\mathbb{W}_{t+1})=0$
(2) 迭代次數夠多
---
$<Proof>$
$\because$ 我們要找出 $\min ( cross-entropy\ error)=\min(\frac{1}{N}\sum\limits_{n=1}^{N}\ln(1+e^{(-y_n\mathbb{W}^T\mathbb{X})})$ 以求出 $g$
$\therefore \nabla E_{in}(\mathbb{W})\overset{let}{=}0$
$\frac{\partial E_{in}}{\partial w_i}(\mathbb{W})=\frac{1}{N}\sum\frac{\partial\ln(A)}{\partial A}\cdot\frac{\partial A}{\partial B}\cdot\frac{\partial B}{\partial w_i}$ , where A$=1+e^{(-y_n\mathbb{W}^T\mathbb{X})}$ , B$=-y_n\mathbb{W}^T\mathbb{X}$<br>
$=\frac{1}{N}\sum\frac{1}{A}\cdot e^B\cdot(-y_n\cdot x_{n_i})$<br>
$=\frac{1}{N}\sum\frac{e^B}{1+e^B}\cdot(-y_n\cdot x_{n_i})$<br>
$=\frac{1}{N}\sum\theta(B)\cdot(-y_n\cdot x_{n_i})$<br>
$\Longrightarrow\nabla E_{in}(\mathbb{W})=\frac{1}{N}\sum\theta(-y_n\mathbb{W}^T\mathbb{X})\cdot(-y_n\cdot x_{n_i})\overset{let}{=}0$
在這裡有兩種可能性 :
Case 1 :
$\theta(-y_n\mathbb{W}^T\mathbb{X})=0\ ,\ \forall\mathbb{W}\Longrightarrow y_n\mathbb{W}^T\mathbb{X}\longrightarrow +\infty\Longrightarrow\mathbb{D}$ is linear separable
( $\because\forall i$ , $y_i$ 與 $\mathbb{W}^T\mathbb{X}$ 同號 )
Case 2 :
$\frac{1}{N}\sum\theta(-y_n\mathbb{W}^T\mathbb{X})\cdot(-y_n\cdot x_{n_i})=0\Longrightarrow$ 非線性方程求解困難不可行
這邊我們可以發現想要找到類似 Linear Regression 的解析解會非常窒礙難行,所以我們要利用類似PLA的方式做迭代優化 :
$\mathbb{W}_{t+1}=\mathbb{W}_t+\eta'\cdot\nu$
## Gradient Descent 梯度下降[^6]
[^6]: 有關於梯度下降法的更詳細討論可以參閱 [Gradient descent 梯度下降](https://hackmd.io/s/ryQypiDK4) 一文
### How to choose $\eta$ & $\nu$ ?
Assume $\left\lVert\nu\right\rVert=1$ and $\eta'>0$ is small enough
$E_{in}(\mathbb{W}_{t+1})=E_{in}(\mathbb{W}_t+\eta'\cdot\nu)\approx E_{in}(\mathbb{W}_{t+1})+\eta'\cdot\nu^T\cdot\nabla E_{in}(\mathbb{W}_t)$
( $\eta'$ : 大小 , $\nu$ : 方向 , $\nabla E_{in}(\mathbb{W}_t) : 角度$)
#### 方向 $\nu$ :
最好的方向是 $-\nabla E_{in}(\mathbb{W}_t)$ 且 $\left\lVert\nu\right\rVert=1$
$\therefore\nu=-\frac{\nabla E_{in}(\mathbb{W}_t)}{\left\lVert\nabla E_{in}(\mathbb{W}_t)\right\rVert}$
#### 大小 $\eta$ :
若 $\eta'$ 太小,迭代次數會很多且容易落在相對極小值 ( 而非絕對最小值 )
若 $\eta'$ 太大,迭代結果震盪大,不夠穩定
因此最好的方式是 $\eta'$ 隨著每一次迭代做調整
![](https://i.imgur.com/2Ce4cew.png)
$\Rightarrow \eta'\varpropto\left\lVert\nabla E_{in}(\mathbb{W}_t)\right\rVert\Rightarrow\eta'=\eta\cdot\left\lVert\nabla E_{in}(\mathbb{W}_t)\right\rVert$
$PS: \eta'$ 隨著迭代不斷更動,但更動"固定"比例為 $\eta$
綜合上述 :
$\mathbb{W}_{t+1}\leftarrow\mathbb{W}_t+\eta'\cdot\nu\Longrightarrow\mathbb{W}_{t+1}\leftarrow\mathbb{W}_t+\eta'\cdot-\frac{\nabla E_{in}(\mathbb{W}_t)}{\left\lVert\nabla E_{in}(\mathbb{W}_t)\right\rVert}\Longrightarrow\mathbb{W}_{t+1}\leftarrow\mathbb{W}_t-\eta\cdot\nabla E_{in}(\mathbb{W}_t)$