# Day 54-56
###### tags: `cupoy`, `ML100`
:::info
+
+ 2022-05-26 20:00
:::
[TOC]
## Day 54 非監督式機器學習簡介
https://lemon-dolomite-062.notion.site/Day-54-c00a1e459f2b45c3be26e49fe7b1013d
### 補充:關聯規則


## Day 55 K-means 聚類算法
https://lemon-dolomite-062.notion.site/Day-48-Kaggle-a1a7944ecf254c568a142051fc57339a
## 監督式學習 v.s 分群

### K-means 分群概念

+ 把所有資料點分成 k 個 clusters,使得相同 cluster 中的所有資料點彼此儘量相似,而不同 cluster 的資料點儘量不同。
+ 距離測量(e.g. 歐氏距離)用於計算資料點的相似度和相異度。每個 cluster 有一個中心點。中心點可理解為最能代表 cluster 的點。
## K-means 分群算法流程
+ 假設下圖是我們的 training set,我們目標是將資料分成 2 群

+ 隨機選取 2 個點,稱爲 cluster centroid.(群心、中心點)

+ 對每一個樣本點根據它距離哪一群的中心點較近,標記為落在該群之一的點 (*cluster assignment)

+ 然後把群心移到同一群樣本點的中心點 (*update centroid)
反覆進行上述的 *cluster assignment 及 *update centroid, 直到樣本點不再被 assign 到與上一次不同的群,便是算法成功收斂完畢。

+ K-means 目標是使總體群內平方誤差最小

+ 初始值設定 Random initialization:一開始隨機選擇的群中心不同將會得到不同的分群結果!可能導致 local optima(區域最佳解),而非 global optima(全域最佳解)。

K 應該為多少?
https://youtu.be/4b5d3muPQmA
Example: https://colab.research.google.com/drive/1-EgotDjlbgXpPY0o1ywRcK46CBB8AP3m#scrollTo=sNUkhfd4DUTT
習題: https://colab.research.google.com/drive/1WPUNPQYnNjfuk3grS8x7BkT1AVTEwlPO#scrollTo=FqU5tKuXFf3C
## Day56 K-mean 觀察 : 使用輪廓分析
### 重點
+ 如何評估非監督式學習的分群結果好壞(or 如何決定k-means的K)?
因為非監督式學習沒有目標值,所以無法使用目標值的預估與實際差距來評估模型的優劣。但是可以使用輪廓分析來評估。
+ 輪廓分析(Silhouette analysis)
同一群的資料點應該很近,不同群的資料點應該很遠, 所以設計一種當"同群資料點越近/ 不同資料點越遠"時越大的分數,當資料在兩群交界附近, 希望分數接近0。
+ 輪廓分析公式
$$S=\frac{b-a}{max(a,b))}$$
+ 凝聚度(a)是指與相同群內的其他點的平均距離
+ 分離度(b)是指與不同群的其他點的平均距離
+ S 是指以一個點作為計算的值
+ 輪廓係數法是將所有的點都計算 S 後再取平均。平均值越大,表示效果越好,適合作為 K
+ 輪廓係數解讀

依照不同類別將同類別的輪廓分數排序後顯示, 分數越大代表分群結果越好。黃綠兩組的輪廓值大多在平均以下, 且比例上接近零的點也比較多,顯示這兩組沒有分得那麼開
平均值(紅色虛線):計算分群的輪廓分數總平均,分的群數分數越多應該分數越小
+ 輪廓分析套件 [sklearn.metrics.silhouette_score](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.silhouette_score.html)
+ 其他評估k-means分群的方法
手肘法(elbow method):基於 SSE(sum of the squared errors,誤差平方和)作為指標,去計算每一個群中的每一個點,到群中心的距離。
[Clustering performance evaluation](https://scikit-learn.org/stable/modules/clustering.html#clustering-performance-evaluation)
### 作業
https://colab.research.google.com/drive/1E43x-igu5thW_iyi_hdAT6eUaopDkY3v#scrollTo=XkKN2s8cFQeM
https://colab.research.google.com/drive/1LftejktvUkP40sMZyNpfvKBXrs56IJCy#scrollTo=fzXUNHpdFeKq