# Day 54-56 ###### tags: `cupoy`, `ML100` :::info + + 2022-05-26 20:00 ::: [TOC] ## Day 54 非監督式機器學習簡介 https://lemon-dolomite-062.notion.site/Day-54-c00a1e459f2b45c3be26e49fe7b1013d ### 補充:關聯規則 ![](https://i.imgur.com/KdDn5ha.png) ![](https://i.imgur.com/K6Oa7kj.png) ## Day 55 K-means 聚類算法 https://lemon-dolomite-062.notion.site/Day-48-Kaggle-a1a7944ecf254c568a142051fc57339a ## 監督式學習 v.s 分群 ![](https://i.imgur.com/gRgzCC0.png) ### K-means 分群概念 ![](https://i.imgur.com/DXffZMe.png) + 把所有資料點分成 k 個 clusters,使得相同 cluster 中的所有資料點彼此儘量相似,而不同 cluster 的資料點儘量不同。 + 距離測量(e.g. 歐氏距離)用於計算資料點的相似度和相異度。每個 cluster 有一個中心點。中心點可理解為最能代表 cluster 的點。 ## K-means 分群算法流程 + 假設下圖是我們的 training set,我們目標是將資料分成 2 群 ![](https://i.imgur.com/6nXqDUb.png) + 隨機選取 2 個點,稱爲 cluster centroid.(群心、中心點) ![](https://i.imgur.com/TqQkLZ6.png) + 對每一個樣本點根據它距離哪一群的中心點較近,標記為落在該群之一的點 (*cluster assignment) ![](https://i.imgur.com/cDJofLv.png) + 然後把群心移到同一群樣本點的中心點 (*update centroid) 反覆進行上述的 *cluster assignment 及 *update centroid, 直到樣本點不再被 assign 到與上一次不同的群,便是算法成功收斂完畢。 ![](https://i.imgur.com/HJizs1E.png) + K-means 目標是使總體群內平方誤差最小 ![](https://i.imgur.com/Zreel5z.png) + 初始值設定 Random initialization:一開始隨機選擇的群中心不同將會得到不同的分群結果!可能導致 local optima(區域最佳解),而非 global optima(全域最佳解)。 ![](https://i.imgur.com/6UBpkhM.png) 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 + 輪廓係數解讀 ![](https://i.imgur.com/GjOSaD4.png) 依照不同類別將同類別的輪廓分數排序後顯示, 分數越大代表分群結果越好。黃綠兩組的輪廓值大多在平均以下, 且比例上接近零的點也比較多,顯示這兩組沒有分得那麼開 平均值(紅色虛線):計算分群的輪廓分數總平均,分的群數分數越多應該分數越小 + 輪廓分析套件 [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