# 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. 隨便給定k個群的中心點 3. 物件跟每個群的中心點去算距離,依據這個物件與群的距離來做分類,分出新的群 4. 然後這個新的群、再去算中心點,就可以找出另一個新的中心點 5. 重複步驟3和4直到中心點不變。 ### Example ### Finding the Best Set of Clusters 你怎麼知道群是對的? 群跟你起始的三個點有關係 只要你給群數跟開始點,就在這個基礎上分群 > 用亂數產生20次起始點,來看哪一個分群比較好 > 然後給定不同的k > 就可以找出幾群比較好 ## 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 取平均 可以讓使用者很彈性