---
# System prepended metadata

title: 3.3 Losses and Risks
tags: [ML]

---

# 3.3 Losses and Risks

在我們做決定時，做出對的 decision 所帶來的好處可能不一樣多，做出錯誤的 decision 所產生的 cost 也可能有高有低。舉例來說，在銀行借錢給人的例子裡，「不小心借錢給高風險的顧客」和「不小心拒絕借錢給低風險顧客」，兩者帶來的 cost 可能就不同。

為了要去衡量做出這些決定（如「不小心借錢給高風險的顧客」）所帶來的損失，我們定義一些名詞：

- ==$\alpha_i$==：<font color = "snake">action</font>， assign 某個 input 到 class $C_i$ 這個決定。
- ==$\lambda_{ik}$==：<font color = "snake">loss</font>，決定要做 action $\alpha_i$（分類到 class $C_i$），但實際上 input 是屬於 $C_k$ 所產生的 loss。
- ==$R(\alpha_i|x)$==：(做出 action $\alpha_i$ 所產生的) <font color = "snake">expected risk</font>，定義如下：

![image](https://hackmd.io/_uploads/S1nIMzNNA.png)

透過 expected risk 的計算，我們就能藉由選擇 risk 最小的，來決定要選擇做出哪個 action（也就是把某個 input 分到哪個 class。）

![image](https://hackmd.io/_uploads/S1nRfGE4R.png)

現在假設我們有 $k$ 個 actions $\alpha_i \quad i=1,...k$，也就是說我們有 $k$ 個 class，把 input 分到各個 class 對應到各個 action。

## loss function

### 0/1 loss 

在 $0/1$ loss 這個特例中，我們的 loss function 可以定義如下：
> 也就是分類到正確的 class 不會產生 loss，分類到錯誤的 class 是 equally costly，產生的 loss 都相同。

![image](https://hackmd.io/_uploads/rJ5wuj6NC.png)

代入到我們對 expected risk 的公式裡，因為猜錯的 loss 是 $1$，所以我們等同去算分類錯誤的次數即可。
> 原本當 loss 不一定等於 $1$ 時，我們的算法應該要是分錯的次數去乘上分到那個錯誤的 class 所產生的 loss，但現在乘 $1$ 等同不用乘。
> 
$\rightarrow$ 至於分類錯誤的次數，就是分到各個錯誤的 class 的機率加總，我們也可以想成全部的機率 $1$ 去扣掉猜對的機率。

\begin{equation}
\begin{split}
R(\alpha_i|x) &= \sum_{k=1}^K\lambda_{ik}P(C_k|x)  \\
&= \sum_{k\ne i}P(C_k|x) \\
&= 1 - P(C_i|x)
\end{split}
\end{equation}

從上面的式子可以知道，為了讓 risk 最小，我們要讓 $P(C_i|x)$ 越大，去選擇 posterior 最高的 class。
> 這也很符合直覺，因為意思就是當我們選擇最有可能的 class 時，產生的 expected risk 就會最小。

不過，要記得這只是一個 special case，很少會有 appliation 會是這麼簡單的 $0/1$ loss；在 general case 裡面，我們在獲得 posterior 以後，要先做一些 postprocessing 來計算 risks，然後才能去做出 action 來使 risk 最小化。

### loss function with reject / doubt

在一些 applicaion 裡面，如果我們分類錯誤產生的 cost 可能特別高，所以當我們的分類系統在做判斷時，如果發現某個 input 的分類不確定性太高，我們就會選用更複雜的方式去對這個 input 進行分類（例如請人手動分類。）

舉例來說，如果我們用一個辨識器去辨認信封上的郵遞區號，一旦分錯，信件就會被送去完全不一樣的地方，造成很大的麻煩。

考慮到這樣的情況，我們新定義一個 action 叫做 <font color = "snake">reject / doubt</font> ==$\alpha_{k+1}$==，也就是我們新增一種 action，當不太確定時就把這個模糊的 input 分類到某個專門放不確定 input 的 class 去。

如果在 $0/1$ loss 的基礎之上我們再把這個 action $\alpha_{k+1}$ 的 loss 加進去，那麼新的 loss function 如下：

![image](https://hackmd.io/_uploads/rywkJn640.png)

其中， $\lambda$ 是某個++介於零跟一之間++的值，當我們把一個 input 分類到 reject，但實際上這個 input 應該要被歸類在某個 class $C_k$ 時，就會產生 $\lambda$ 這麼多的 loss。

所以當我們去選擇分類到 reject 時，會產生的 expected risk 也是 $\lambda$，因為這個 input 必然屬於 $k$ 個 class 的其中一個：

![image](https://hackmd.io/_uploads/r1Cakn6N0.png)

因此，我們去做出最佳判斷的原則就變成了：

![image](https://hackmd.io/_uploads/H1cqlhpVA.png)
> 如果分類到 class $C_i$ 會產生的 expected risk 最小（比分到所有其他 class 都小，也比分到不確定的 class $C_{k+1}$ 小），那麼就代表比起分到其他 class 或是不確定，分到 $C_i$ 是最適合的。
> 
> 但是如果分到 $C_{k+1}$ 的 expected risk 比分到所有的 class 都小，代表我們不太確定，因此就應該 reject。

至於爲什麼要把 $\lambda$ 的值訂為 <font color = "snake">$0<\lambda<1$</font>？

我們可以考慮訂為 $0$ 和 $1$（或大於 $1$） 的兩種情況：

- 如果 $\lambda = 0$：我們永遠都會選擇 reject。
> 因為 $\alpha_{k+1}$ 所產生的 expected risk 也等同於 $\lambda$，也就是說選 doubt 的 expected risk 永遠都會比選其他 class 小。
- 如果 $\lambda \ge 1$：我們永遠都不會選擇 reject。
> 因為在 $0/1$ loss 這個 case 裡，如果我們選錯產生的 loss 也只有 $1$，所以與其選擇 doubt，不如隨便猜一個，即時猜錯 loss 也必定 $\le$ reject 產生的 loss。 

所以在考慮 reject 時，我們其實就是在「讓電腦產生比較不確定的分類」和「讓人去做確定性較高（但這個行為本身較為 costly）的分類」這兩者之間去權衡。

> $\rightarrow$ 第十七章我們會討論如果去創造一個好幾層的做決定的機器，當我們不確定時我們可以進到下一層再進行更細緻的分類， cost 會比較高，但也會有更高的機率是正確的。
