聚類
在無監督學習中,目标是通過對無标記訓練樣本的學習來揭示資料的内在性質及規律。在這類任務中,常用的算法是聚類(cluster)算法。
聚類算法試圖将樣本劃分為若幹個通常是不相交的子集,每個子集表明一個簇,也叫類别,通過這樣的操作,可以将無規律的樣本劃分為一堆堆的樣本子集合。簇所對應的概念語義及個數需要由使用者把握和命名。
性能度量
聚類要求,簇内相似,簇間盡可能不同。直白一點的意思是,我們希望物以類聚,即簇内的樣本之間相似度要高,而簇間的樣本相似度要低。如何度量相似度?一般而言是使用距離來度量。最常用的是使用闵可夫斯基距離:

當
P=2
時候,闵可夫斯基距離變為歐氏距離:
p=1
時候,闵可夫斯基距離變為曼哈頓距離:
p=0
時候,闵可夫斯基距離變為切比雪夫距離:
- 樣本之間距離越大,說明樣本之間相似度越低
- 樣本之間距離越小,說明樣本之間相似度越高
聚類算法
k-means聚類
算法大緻流程如下:
- 第一步,設定
值,表明要劃分為k
簇,這也是算法唯一的一個超參數;k
- 第二步,從資料集中随機選擇
個樣本出來作為初始化的簇中心,這裡注意,初始化的好壞會對最終結果有影響!k
- 第三步,計算每個樣本與這些簇中心的距離,樣本離哪個簇中心最近,就将其劃分為哪一簇;
- 第四步,根據每一簇的樣本計算均值,并更新該簇的簇中心。
- 重複上述第三步和第四步,直到達到簇中心不再變化表明算法穩定。
學習向量量化(LVQ)
學習向量量化試圖找到一組原型向量來刻畫聚類結構,但是LVQ假設樣本帶有類别标記,學習過程中利用樣本的監督資訊來輔助聚類。
算法大緻流程:
- 第一步: 初始化一組原型向量,并且對每個原型向量都預設有類别标記;
- 第二步:從樣本中随機選擇樣本,計算樣本與原型向量之間的距離,找出與之最相近的原型向量;
- 第三步:如果上述步驟的原型向量的預設标簽與假設的标簽一緻的話,對原型向量進行更新,讓更新後的原型向量更接近樣本;如果上述步驟的原型向量的預設标簽與假設的标簽不一緻的話,對原型向量進行更新,讓更新後的原型向量更遠離樣本;
- 重複進行第二步和第三步,直到滿足停止條件。
高斯混合聚類
高斯混合聚類采用機率模型來表達聚類原型,簇劃分的原則是原型對應的後驗機率。
使用EM算法來求解最大後驗機率。
密度聚類
密度聚類,即基于密度的聚類。假設樣本的聚類結構可以通過樣本分布的緊密程度來表達。密度聚類算法考察樣本之間的可連接配接性,并基于可連接配接擴充聚類簇以獲得最終的聚類結果。
DBSCAN(density-based-spatial clustering of applications with noise)
這裡有些機率要了解:
- 鄰域:畫一個圈包含的樣本;
- 核心對象:樣本多大的圈能至少包含MinPts個樣本,這樣的樣本叫做核心對象;
- 密度直達:樣本A在樣本B的鄰域中,則B是核心對象,A由B密度直達;
-
密度可達:可以傳遞的那種;
算法思想是由密度可達關系導出最大的密度相連樣本集合作為一個簇。
- 第一步:先根據領域找到所有的核心對象;
- 第二步:以任一核心對象為出發點,找出與其密度可達的樣本生成聚類簇,直到所有核心對象都被通路過;
- 第三步:然後從資料集中将這些圈好的樣本去掉,開始下一輪;
- 重複進行第二步和第三步,直到所有的核心對象都被通路過。
層次聚類
層次聚類試圖在不同層次上對資料進行劃分,進而形成樹形的聚類結構,可以采取自上而下或者自下而上的分拆政策。
AGNES(Agglomerative Nesting)是采用自下而上的層次聚類算法。
算法思想是将資料集中每個樣本看作是一個初始聚類簇,然後在算法運作的每一步中找到距離最近的兩個聚類簇進行合并,不斷重複,直到達到設定的簇數。
最小距離:由兩個簇最近樣本決定
最大距離:由兩個簇最遠樣本決定
平均距離:由兩個簇的所有樣本決定
- 第一步:設定目前的簇數;
- 第二步:當簇數大于想要的簇數時候,找出距離最近的兩個簇數,合并兩個簇數為一個簇數,并對合并得到的聚類簇的距離進行更新
- 第三步:不斷重複上述過程,直到達到想要的簇數;