---
# System prepended metadata

title: Unsupervised Learning - Clustering
tags: [MachineLearning, '20200718']

---

# Unsupervised Learning - Clustering
###### tags: `20200718` `MachineLearning`
李錫智 (Shie-Jue Lee)
中山大學電機系特聘教授

> 來閒聊的
> 30 yr 經驗
> 系統越來越複雜
> 用人工智慧來解複雜的問題
> 應付real time的需求
> 人工智慧 ->做中學 

加強式學習
監督式學習 
> 技術最多、理論也最多 
> label data & 有期望值

非監督式學習
> unlabel data 
> 希望從這些data中，去尋找一些關係出來
> 有兩種主要的方法
> * Cluster 分群，把資料分群，這些群的data特徵相似
> 目標函數定義的好，分群就會好
> * Associative Rule learning
> 買牛奶就會買香菸

## Introduction
Clustering
把相同的物件都弄在一堆


### For example
1. 經濟上面。把國家分群
2. 公司跟公司之間。把公司分群，資產類似，交易行為類似
3. 行銷上面。把客戶分群，購買能力，興趣
4. 醫院裡面。把病人分群，病徵
5. 資料搜尋。為了把搜尋速度變快，要把相似的先分堆。
6. 犯罪分析。把犯罪分群

...等

分堆，就是要找相似的地方
> 什麼叫做相似？
> 最簡單的就是兩兩間的距離

要分幾群，是個很主觀的事情
所以就有很多分群的測量方式被建立

最常見的分群方法k-means或聚類分群法(check)
## k-Means Clustering
一種用來找相似的演算法

### Centroid
一群用一個中心點，當作這群的特徵值
中心點，就是把每一個維度的資料，求平均值

目標函數 (objective function)
每一群到那個群的中心點的距離的平方的總和，越小越好

### Algorithm
1. 要告訴演算法，k value，要分成幾群
2. 隨便給定ｋ個群的中心點
3. 物件跟每個群的中心點去算距離，依據這個物件與群的距離來做分類，分出新的群
4. 然後這個新的群、再去算中心點，就可以找出另一個新的中心點
5. 重複步驟3和4直到中心點不變。

### Example

### Finding the Best Set of Clusters
你怎麼知道群是對的？
群跟你起始的三個點有關係
只要你給群數跟開始點，就在這個基礎上分群

> 用亂數產生20次起始點，來看哪一個分群比較好
> 然後給定不同的ｋ
> 就可以找出幾群比較好

## Agglomerative Hierarchical Clustering
階層式的作法
1. 一開始每一個數字是一群
2. 把兩個群之間找出最近的，合併成新的一群
3. 跑了n-1次以後，就可以把所有的數字全部歸納成一群
4. 此時，便可以繪製出Possible Dendrogram
5. 使用者可以依據每個階層去選擇
但這樣要算好多次

## Recording the Distance Between Clusters
計算合併以後群跟群之間的距離
### Single-Link Clustering
取最小（一般選這個）
### Complete-Link Clustering
取最大
### Average-Link Clustering
取平均

可以讓使用者很彈性

