1. 程式人生 > >機器學習中的聚類

機器學習中的聚類

1、聚類

無監督通過對無標記訓練樣本的學習來找到這些資料的內在性質,使用最多的就是聚類。

聚類思想:將資料劃分為幾個不相交的子集(也就是簇,cluster),每個簇潛在的對應某一個概念。聚類僅僅是生成cluster,但是簇的語義要由使用者自己解釋。

聚類的作用:探索性方法,用來分析內在特點,尋找資料的分佈規律。

如圖樣本點分為四個簇


2、聚類的方法
(1)k-means

即xi裡那個簇均值向量最近,該樣本就標記為那個簇

工作流程:隨機選取k個初始點作為質心,然後將每一個點分配到離質心最近的那個簇中,完成後,每個簇的質心更改為該簇所有點的平均值

引數k:該演算法需要確定引數k,常用的方法有如下:

  • 經驗:使用公式k=sqrt(n/2),不過這種做法以及公式沒有數學的依據
  • 肘方法:離差平方和變化最快的地方對應的簇較為合理
  • PSF(偽F演算法)和PSTZ(偽T演算法)
  • 交叉驗證

缺點:結果的好壞決定於初始聚類中心的選擇,容易陷入區域性最優解,對k的選擇沒有準則

(2)高斯混合模型(GMM)

高斯混合模型是那些點的概率密度函式


其中u是密度中心點,常用樣本的均值,∑是協方差矩陣

缺點:當樣本在空間中的分佈不是橢球狀時,模型增多,需要確定的引數就增加

(3)密度聚類(DBSCAN)

目的就是為了過濾低密度的區域

演算法思想:若為核心物件,則密度可達到的所有樣本的集合記作x,可以證明x是滿足連線性與最大性的簇,於是DBSCAN就選取了一個核心物件作為種子seed,發出相應的聚類簇

(4)層次聚類(AGNES)

不同層次的進行劃分

演算法思想:將每個物件看成一個簇,根據某些準則,一步步合併知道預設的聚類簇的個數

2、聚類涉及的問題
(1)聚類的趨勢

用於聚類的資料不可均勻分佈,但是如果資料多且複雜,我們用人眼無法判別是否適合聚類的時候,可以用霍普金斯統計量來檢驗空間的隨機性。

霍普金斯步驟:

  • 從D空間中均勻獲點p1~pn,,點p可以不是樣本點
  • 從D中均勻獲取點q1~qn,,點q是樣本點
  •  如果不是均勻分佈的話,yi一般會比xi小,因為yi是取樣本中的點,距離一般會比樣本外的點距離小,當樣本是均勻分佈的時候,H是接近0.5,不適合用聚類,聚類的高度越傾斜,yi會遠小於xi,這時候H會接近於0

(2)評估聚類的質量
  • 外在方法:它是有基準的

Oi樣本,Oj基準,當L(Oi)=L(Oj) ∩ C(Oi)=C(Oj)的時候,c=1,也就是在基準和聚類中兩個分類都相等

  • 內在方法:輪廓係數,很多情況下我們是沒有基準的,這時候用輪廓係數來衡量聚類的質量

選擇一個類的平均數,a(0)為該類中任意一點到平均數的距離,b(0)表示其他類別到該平均數的距離

 當x(0)接近1的時候,說明該模型是緊湊的,當x(0)為負數的時候,該模型是不可取的

(3)GMM中的∑(協方差矩陣)


(4)EM演算法

EM演算法是聚類中常用的方法,K-means,GMM等都用到了EM演算法

EM演算法分為兩步,每次迭代由這兩部分組成:

  • E算期望值,就是求Q函式的期望,其中Q函式是收斂的
  • M極大化引數,用了極大似然估計法

演算法過程:

  • 對於似然函式,求它的對數似然函式(其中x資料集在公式中是已知的,但是他來自那個模型我們卻是未知的,用,1表示第i個觀測來自第k個分模型,
  • E確定Q,求期望
  • M用極大似然估計法得出θ