---
# System prepended metadata

title: ' Linear Models for Classification'
tags: [機器學習基石]

---

# Scaled Cross-Entropy

$$
log_{2}\left(1+e^{-y_{n}\mathbf{w}^{T}\mathbf{x}_{n}}\right)
$$

只要將原本的 CE 除以 $ln2$ 就可以得到這個版本的 CE，這樣做的原因是，SCE 其實也是 0/1 error 的一個上限。

$$
err_{0/1}(s,y)\le err_{SCE}(s,y)=\frac{err_{CE}(s,y)}{ln2}\\
\Rightarrow E^{0/1}_{in}(\mathbf{w})\le E^{SCE}_{in}(\mathbf{w})=\frac{E^{CE}_{in}(\mathbf{w})}{ln2}\\
E^{0/1}_{out}(\mathbf{w})\le E^{SCE}_{out}(\mathbf{w})=\frac{E^{CE}_{out}(\mathbf{w})}{ln2}\\
$$

所以再次回顧之前的 VC bound 告訴我們的不等式：

$$
E^{0/1}_{out}(\mathbf{w})\le \frac{E^{CE}_{in}(\mathbf{w})}{ln2}+\Omega^{0/1}\\
E^{0/1}_{out}(\mathbf{w})\le \frac{E^{CE}_{out}(\mathbf{w})}{ln2}\le \frac{E^{CE}_{in}(\mathbf{w})}{ln2}+\frac{\Omega^{CE}}{ln2}
$$

也就是說我們可以用 Logistic Regression 的結果來對 binary classification 進行預測。

# Stochastic Gradient Descent (SGD)

由於標準的 GD 每次更新就需要對 N 筆資料做計算，為了降低這個計算量，改成隨便挑一筆資料的 GD 作為更新方向。

理由是相信平均走下來的方向跟原本梯度的走向是一樣的。

$$
\mathbf{w}_{t+1}=\mathbf{w}_{t}+\eta\underbrace{\frac{1}{N}\sum_{n=1}^{N}\theta(-y_{n}\mathbf{w}^{T}\mathbf{x}_{n})(y_{n}\mathbf{x}_{n})}_{-\nabla E_{in}(\mathbf{w}_{t})}
$$

這是原版的梯度，是對 N 筆資料的梯度取平均。

$$
\mathbf{w}_{t+1}=\mathbf{w}_{t}+\eta\ \underbrace{\theta(-y_{n}\mathbf{w}^{T}\mathbf{x}_{n})(y_{n}\mathbf{x}_{n})}_{-\nabla err(\mathbf{w}_{t},\mathbf{w}_{x_{n},y_{n}})}
$$

這是 SGD，指挑一筆資料的 GD 作為更新方向。

如果拿來跟 PLA 比較：

$$
\mathbf{w}_{t+1}=\mathbf{w}_{t}+ 1 \times [[y_{n}\ne sign(\mathbf{w}^{T}\mathbf{x}_{n})]] (y_{n}\mathbf{x}_{n})
$$

可以發現：

- $SGD$ logistic regression $\approx$ soft $PLA$
- $PLA\approx SGD$ logistic regression 當 $\eta=1$ 且 $\mathbf{w}^{T}\mathbf{x}_{n}$ 很大的時候。

:::warning
兩個實務上的要點：
- 何時要停？
    - t 足夠大的時候
- $\eta$ 應該要多少？
    - 如果 $\mathbf{x}$ 在正常的範圍內，通常來說 0.1 是個好選擇
    - 老師喜歡的數字是 $0.1126$
:::

---

# One-Versus-All (OVA) Decomposition

$for\ k\in\mathcal{Y}$

$$
\mathcal{D}_{[k]}=\left\{\left(\mathbf{x}_{n},y^{'}_{n}=2[[y_{n}=k]]-1\right)\right\}^{N}_{n=1}
$$

$$
g(\mathbf{x})=argmax_{k\in\mathcal{Y}}\ \color{gray}{\theta}\left(\mathbf{w}^{T}_{[k]}\mathbf{x}\right)
$$

將想要分的 K 組資料，分成「是第 K 組的」跟「不是第 K 組的」兩種資料來進行 Binary Classification，總共會得出 K 種 $\mathbf{w}_{[k]}$。

但如果是單純用 PLA，會出現重疊部分分不清的情況，所以可以採用 logistic regression 來做 Classification，遇到重疊部分就看哪個權重內積的值最大就好。

:::info
由於 logistic function 是 monotonic，所以其實不一定要把內積的值代進函數內，直接比較內積的值大小就好。
所以上面公式中的 $theta$ 是灰色的。
:::

## 優點

有效率，並可以和任何類似 logistic regression 進行搭配。

## 缺點

如果 K 太大，會導致第 K 組跟其他組別的資料量差異太大，會讓 g 偏向於猜 $\color{red}{\times}$

# Multinomial/multiclass logistic regression

multiclass 的延伸版本，專門給每個 Class 都近似一個 logistic function。

$$
\Large
h_{y}(\mathbf{x})=\frac{e^{\mathbf{w}^{T}_{y}\mathbf{x}}}{\sum_{k=1}^{K}e^{\mathbf{w}^{T}_{k}\mathbf{x}}}
$$

跟 logistic regression 一樣的推導過程，可以得出：

$$
\Large
E_{in}(h_{y}(\mathbf{X}))=\frac{1}{N}\sum_{n=1}^{N}\left(ln\left(\sum_{k=1}^{K}e^{\mathbf{w}^{T}_{k}\mathbf{x}_{n}}\right)-\mathbf{w}^{T}_{y_{n}}\mathbf{x}_{n}\right)
$$

和梯度：

$$
\Large \frac{\partial E_{in}(h_{y}(\mathbf{X}))}{\partial \mathbf{w}_{i}} 
=\frac{1}{N}\sum_{n=1}^{N}\left(\left(h_{i}(\mathbf{x}_{n})-[[y_{n}=i]]\right)\mathbf{x}_{n}\right)
$$

:::warning
在推導的時候要記住，不會有 $1 - h(\mathbf{x})$ 這種東西出現，他是第 K 種的機率就是 $h_{K}(\mathbf{x})$。
:::

---

# One-versus-one (OVO) Decomposition

兩組兩組出來訓練出 $\mathbf{w}$，也就是說總共有 $\binom{K}{2}$ 種 $\mathbf{w}_{k,l}$。

$for\ (k,l)\in\mathcal{Y}\times\mathcal{Y}$

$$
\mathcal{D}_{[k,l]}=\left\{\left(\mathbf{x}_{n},y^{'}_{n}=2[[y_{n}=k]]-1:y_{n}=k\ or\ y_{n}=l\right)\right\}
$$

$$
g(\mathbf{x})=tournament\ champion
\left\{\mathbf{w}^{T}_{[k,l]}\mathbf{x}\right\}
$$

tournament champion 就是看在 $\binom{K}{2}$ 種 $\mathbf{w}_{k,l}$ 中，看哪一組的被預測次數最多次。

## 好處

K 較小時很有效率，並且穩定，可以搭配任何 binary classification。

## 缺點

由於有 $\binom{K}{2}$ 種 $\mathbf{w}_{k,l}$，所以跟 OVA 相比，更花空間跟時間。

---

# Newton Direction

這是利用多維情況下的牛頓法，來找到下降的方向；通常來說比梯度下降更快。
> 畢竟是二階導數

$$
\mathbf{w}_{t+1}=\mathbf{w}_{t} + -\left(\nabla ^{2}E(\mathbf{w}_{t})\right)^{2}\nabla E(\mathbf{w}_{t})
$$

其中 $\nabla ^{2}E(\mathbf{w}_{t})$ 是海森矩陣，也就是由二階導數所構成的陣列。