---
# System prepended metadata

title: 1.2 Examples of Machine Learning Applications
tags: [ML]

---

# 1.2 Examples of Machine Learning Applications
## 1.2.1 Learning Associations

<font color = "snake">basket analysis</font>: 找出消費者買不同商品之間的關聯性
> 如果買了 $X$ 商品的消費者通常也會買 $Y$ 商品，然後今天有個消費者買了 $X$ 但還沒買 $Y$，他就是一個潛在的會購買 $Y$ 的消費者。

為了要找到這個關聯性的規則，我們會用到條件機率 

==$P(Y|X)$==

其中，

$X$ 是某個顧客已經買的某個或某些商品
$Y$ 是要 condition on $X$ 的商品

例子：
> $P(chips|beer) = 0.7$
>
> 的意思是買啤酒的人又買洋芋片的機率是 $0.7$

因為我們可能想區別不同類型的消費者，再去估計各個類型的機率，我們多加一個 $D$

$\Rightarrow$ ==$P(Y|X,D)$==

這個 $D$ 代表的是一些++顧客的 attributes++ 所成的集合。
> 舉例來說，$D$ 可能是性別、年紀⋯⋯。

## 1.2.2 Classification

例子：

在銀行貸款給人之前，必須先預測這個人不把所有金額歸還的可能性。
透過一個人的一些 data，例如收入、存款、職業、年紀⋯⋯，銀行會去計算他的經濟能力，還有貸款給他的風險。

$\rightarrow$ 銀行藉由過去貸款給其他有類似 data 的人，以及他們有沒有還錢的紀錄，希望能找到某個 general 的 rule，來判斷++一個人的 attributes++ 以及++貸款給他的 risk++ 之間的關聯性。

也就是說，一個 machine learning 的 system 會用過去的 data 去 fit 一個 model，這個 model 就能在有人要借款時去計算風險，進而決定要不要貸款給這個人。

在這個例子裡面，會把顧客分成兩類：

1. low-risk
2. high-risk

顧客的資訊構成 input，而 classifier 會根據這個 input 去 assign 他是這兩類的哪一個。

在透過過去的 data training 之後，我們可能會得到這樣的一個判別式（discriminant）：

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

<font color = "snake">discriminant</font>: a function that separates the examples of different classes.

如果未來和過去的情況類似的話，透過這個 rule，只要我們有 income 和 savings 的資料，我們就能輕鬆判定一個人到底是 low-risk 還是 high-risk。

$\rightarrow$ 有時候，我們可能不是只要做 $0/1$ (low-risk / high-risk) 這樣的判斷，我們可能想去計算機率，也就是前面提到的 $P(Y|X)$，其中：

$X$ 是 customer attributes
$Y$ 是 $0/1$，代表 low-risk / high-risk

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

從這個觀點來看

:::success
我們可以把 classification 視為 learning 從 $X$ 到 $Y$ 的 association 
:::


假設 given 某個 $X =x$，我們得到

$P(Y=1|X=x) = 0.8$

代表的意義是當某個人具有 attributes $x$，他是 high-risk $(1)$ 的機率是 0.8


ML 在 pattern recognition 中有許多應用，其中一個是 optical character recognition，也就是從圖像中去辨認 characters。

$\rightarrow$ 這就是一個 ++multiple classes++ 的例子（有許多要辨認的 characters）

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


- <font color = "grey">課本還給了許多例子，因為我的課本缺頁，剩下一小部分 ML 在其他領域應用的例子省略，直接跳到下一小節。</font>.

## 1.2.4 Unsupervised Learning

在 ==supervised learning== 中，我們的目標是藉由 supervisor 提供的 correct values，去 ++learn 一個 input 和 output 之間的 mapping++。

然而在 ==unsupervised learning== 裡，沒有這樣的 supervisor 去提供 correct values，我們只有 input data，在這樣的情況下，目標變成去++找到 input 中的 refularities++。

在 input space 中，會有一個對應的 structure，使得某些特定的 patterns 會比其他的更容易發生；而我們想要知道哪些通常會發生、哪些通常不會，在統計學裡面這被稱作 <font color = "snake">density estimation</font>。

做 density estimation 的其中一個方法叫做 <font color = "snake">clustering</font>，目標就是從 input 裡面去找到 clusters / groupings。

舉例來說：
> 如果有一間公司有他過去顧客的資料，以及這些人和這間公司的交易紀錄，這間公司想知道哪種類型的顧客是常出現的。
> 在這樣的情況下，一個 clustering model 就會把有著類似 attributes 的顧客分到同一個 group，這件事叫做 customer segmentation。

或是 clustering 的另個應用：
> image compression
> input：用 RGB values 代表的 image pixels
> 一個 clutering program 會把有相同顏色的 pixels 歸類到同個 group，而這些 groups 對應到的是這個 image 中常出現的顏色。
> $\rightarrow$ 如果某個 image 的顏色數量很少，我們就能用一個顏色去 code 同個 group 中的 pixels，假設原本用 24 bits 去代表一千六百萬種顏色，但實際上這個 image 會用到的顏色主要只有 64 種，就能讓每個 pixel 改為只用 6 個 bits。

## 1.2.5 Reinforcement Learning

在很多應用裡面，一個 system 的 output 是一連串的 actions，在這種情況下，單一的 action 其實就沒有那麼重要，真正重要的是要達到目標需要做的那++一連串正確的 actions++（==policy==）

$\rightarrow$ 任何一個 intermediate state 都不存在 "best action"，如果一個 action 是一個 good policy 的一部分，那我們就會說它是個 good action。

$\Rightarrow$ 在這樣的情況下，一個 ML 的 program 應該要能夠去評估一個 policy 的好壞，然後從過去的 good action sequences 學習怎麼樣去產生一個 policy。

這樣的方法就稱作 reinforcement learning algorithms。

舉個例子：
> game playing：
> 
> 玩遊戲的時候，單一一個移動沒有那麼重要，重要的是你一連串的動作怎麼做。
> $\rightarrow$ game playing 在不管是 AI 或是 ML 都是一個重要的研究領域，因為雖然我們很容易就可以去描述一個遊戲，但是很難去把一個遊戲玩好。像是下棋的時候規則雖然少，但因為在每個 state 都有很多可能的 possible moves，所以整個就變得很複雜。

- 其中一個讓 reinforcement learning 更困難的理由是 system 可能是 unreliable 的，而且只有部分的 sensory info。舉例來說，一個配有攝影機的機器人，因為我們沒有完整的資訊（像是沒辦法知道這個機器人在房間裡確切的哪個位置，只能知道它左邊有一面牆），所以任何時間點我們都只能在一個 partially observable state。