聚類分析被稱之為unsupervised分析,一個跟它相似的概念是分類(classification)模型,不同的是,分類模型預先知道一共有幾個類別,每個類別的定義是什么,所以叫做supervised。聚類分析預先不知道目標分成哪幾類。往往在實際中,先用cluster分成一些類,然后有了這些類之后,可以再可以做classification分析,就是所謂的two steps analytisis.
聚類分析的算法主要基于“距離”的計算。聚類之后的結果要盡量保證每個segment內部的對象之間距離要短, segment之間的距離要長。這篇博客的內容總結自Han Jiawei的書,這本書可以在這篇博客里找到: 分享讀書筆記Data Mining Concepts and Techniques
關于距離:
如果有n個對象,每個對象有p個屬性,那么可以得到這樣一個矩陣:
距離通常是用另一個變形后的矩陣來做的:
其中d(2,1)表示第二個對象和第一個對象之間的距離。
對于連續型變量(interval)的,通常要對數據預先做標準化“standardiz”,方式如下:
1. 算mean absolute deviation.
_thumb.png)
2. 得出標準度量(不知道怎么翻譯,standardized measurement)
_thumb.png)
3.最后結果:
_thumb.png)
對于二值型(binary)的, 有兩種,一種是均衡型的(symmetric),另一種是非均衡型的(asymmetric),均衡指的是yes or no兩種狀態權重一樣。比如如果你沒有性別歧視的話,性別是均衡的二值變量。如果通過一系列癥狀診斷一個人是否生病了,yes比no的權重要大的多。
兩種形式都通過下面這個2x2的表來算距離:
對于均衡型的,
對于非均衡型的
對于類別型(categorical)的變量,比較簡單
where m is the number of matches (i.e., the number of variables for which i and j are
in the same state), and p is the total number of variables.
對于順序型(ordinal)的變量,要先把順序map成[0.0,1.0]之間的數,然后按interval的方式來算。直接上截圖,因為太多數學符號了
書上對每種計算基本都有例子。
關于聚類方法:
有partitioning, hierarchical, density-based, grid-based, model-based, clustering High-Dimensional, Constraint-Based.
Partitioning方法:
代表方法是K-means:
它的大致算法是,選定K值(最后要分成多少組)后,任選K個object作為cluster的中心,然后對每個其他的對象計算離哪個中心最近,就歸到哪個cluster里,最后從每個cluster中找到新的中心,然后這樣重復計算,直到聚類沒有變化為止。
Hierarchical方法:
分agglomerative和Divisive兩種,前者是自底向上的,就是一個一個object merge出一個segment,后者相反,自頂向下的。 上面說的K-means方法有時候和hierarchical聯在一起用,因為K-means需要k作為參數,這個參數還挺重要的,極大影響了聚類的結果,可以先用hierarchical看看大致分幾類合理,然后再用K-means。
Density-based方法:
基于距離的算法segment都是類球形的,density-based克服了這個問題。他的理念基本上是,一個對象為中心畫個圓,看看圈近來的對象過沒過threshold.
Grid-Based:
它是從上往下分層,底層grid粒度更細。它的特點是是scalability比較好。沒細看理論,但是看圖能感覺個大概。
Constraint-Based:
有的時候用戶清楚應用的需求,想要指引聚類的過程,比如每個cluster size的range, 不同對象不用的權重等等。這就用到constraint-based聚類分析。這個也沒細看,還有另外的clustering high-dimensional data, model based clustering都沒怎么看,也許以后再寫一篇“再訪聚類分析”。下一篇會關于決策樹。