1. 程式人生 > >機器學習總結(十):常用聚類演算法(Kmeans、密度聚類、層次聚類)及常見問題

機器學習總結(十):常用聚類演算法(Kmeans、密度聚類、層次聚類)及常見問題

任務:將資料集中的樣本劃分成若干個通常不相交的子集。

效能度量:類內相似度高,類間相似度低。兩大類:1.有參考標籤,外部指標;2.無參照,內部指標。

距離計算:非負性,同一性(與自身距離為0),對稱性,直遞性(三角不等式)。包括歐式距離,曼哈頓距離等等。

(1)    K均值聚類步驟:1.隨機選擇k個樣本作為初始均值向量;2.計算樣本到各均值向量的距離,把它劃到距離最小的簇;3.計算新的均值向量;4.迭代,直至均值向量未更新或到達最大次數。缺點:需要輸入k,演算法速度依賴於初始化的好壞,不能處理非球形簇。

(2)    密度聚類步驟:DBSCAN,找到幾個由密度可達關係匯出的最大的密度相連樣本集合。1.找到任意一個核心點,對該核心點進行擴充;2.擴充方法是尋找從該核心點出發的所有密度相連的資料點;3遍歷該核心的鄰域內所有核心點,尋找與這些資料點密度相連的點。優點:

抗噪聲,處理任意形狀和大小的簇。缺點:資料量大時記憶體消耗大,需要自定義引數多。優點:不需要確定要劃分的聚類個數。

(3)    層次聚類步驟:AGNES,1.先將資料集中的每個樣本看作一個初始聚類簇;2.找到距離最近的兩個聚類簇進行合併。優點:無需目標函式,沒有區域性極小問題或是選擇初始點的問題。缺點:代價大。

面試問題:

(1)Kmeans的k值如何確定?(1)列舉,由於kmeans一般作為資料預處理,所以k一般不會設定很大,可以通過列舉,令k從2到一個固定的值,計算當前k的所有樣本的平均輪廓係數,最後選擇輪廓係數最接近於1對應的k作為最終的叢集數目;(2)資料先驗知識,或者對資料進行簡單的分析或視覺化得到。

(2)初始點選擇方法?初始的聚類中心之間相互距離儘可能遠。(1)kmeans++,隨機選擇一個,對每一個樣本計算到他的距離,距離越大的被選中聚類中心的概率也就越大,重複。(2)選用層次聚類進行出初始聚類,然後從k個類別中分別隨機選取k個點。

(3)kmeans不能處理哪種資料?(1)非凸(non-convex)資料。可以用kernal k均值聚類解決。(2)非數值型資料。Kmeans只能處理數值型資料。可以用k-modes。初始化k個聚類中心,計算樣本之間相似性是根據兩個樣本之間所有屬性,如屬性不同則距離加1,相同則不加,所以距離越大,樣本的不相關性越大。更新聚類中心,使用一個類中每個屬性出現頻率最大的那個屬性值作為本類的聚類中心。(3)噪聲和離群值的資料。可以用kmedoids。(4)不規則形狀(有些部分密度很大,有些很小),可以用密度聚類DBSCAN解決。

(4)kmeans如何處理大資料,幾十億?平行計算。MapReduce,假設有H個Mapper,把資料集分為H個子集,分佈到H個Mapper上,初始化聚類中心,並同時廣播到H個Mapper上。