人在江湖

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks

          聚類分析被稱之為unsupervised分析,一個跟它相似的概念是分類(classification)模型,不同的是,分類模型預先知道一共有幾個類別,每個類別的定義是什么,所以叫做supervised。聚類分析預先不知道目標分成哪幾類。往往在實際中,先用cluster分成一些類,然后有了這些類之后,可以再可以做classification分析,就是所謂的two steps analytisis.

          聚類分析的算法主要基于“距離”的計算。聚類之后的結果要盡量保證每個segment內部的對象之間距離要短, segment之間的距離要長。這篇博客的內容總結自Han Jiawei的書,這本書可以在這篇博客里找到: 分享讀書筆記Data Mining Concepts and Techniques 

          關于距離:

          如果有n個對象,每個對象有p個屬性,那么可以得到這樣一個矩陣:

          image

          距離通常是用另一個變形后的矩陣來做的:

          image

          其中d(2,1)表示第二個對象和第一個對象之間的距離。

          對于連續型變量(interval)的,通常要對數據預先做標準化“standardiz”,方式如下:

          1. 算mean absolute deviation.

          Image(9)

          2. 得出標準度量(不知道怎么翻譯,standardized measurement)

          Image(10)

          3.最后結果:

          Image(11)

           

          對于二值型(binary)的, 有兩種,一種是均衡型的(symmetric),另一種是非均衡型的(asymmetric),均衡指的是yes or no兩種狀態權重一樣。比如如果你沒有性別歧視的話,性別是均衡的二值變量。如果通過一系列癥狀診斷一個人是否生病了,yes比no的權重要大的多。

          兩種形式都通過下面這個2x2的表來算距離:

          image

          對于均衡型的,

          image

          對于非均衡型的

          image

           

          對于類別型(categorical)的變量,比較簡單

          image

          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的方式來算。直接上截圖,因為太多數學符號了

          image

          書上對每種計算基本都有例子。

           

           

           

           

           

           

           

           

           

          關于聚類方法:

          有partitioning, hierarchical, density-based, grid-based, model-based, clustering High-Dimensional, Constraint-Based.

          Partitioning方法:

          代表方法是K-means:

          它的大致算法是,選定K值(最后要分成多少組)后,任選K個object作為cluster的中心,然后對每個其他的對象計算離哪個中心最近,就歸到哪個cluster里,最后從每個cluster中找到新的中心,然后這樣重復計算,直到聚類沒有變化為止。

          image

           

          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比較好。沒細看理論,但是看圖能感覺個大概。

          image

           

           

          Constraint-Based:

          有的時候用戶清楚應用的需求,想要指引聚類的過程,比如每個cluster size的range, 不同對象不用的權重等等。這就用到constraint-based聚類分析。這個也沒細看,還有另外的clustering high-dimensional data, model based clustering都沒怎么看,也許以后再寫一篇“再訪聚類分析”。下一篇會關于決策樹。

          posted on 2011-09-16 12:55 人在江湖 閱讀(3027) 評論(1)  編輯  收藏 所屬分類: BI

          Feedback

          # re: cluster聚類分析 2011-09-17 08:59 tbw
          很不錯啊   回復  更多評論
            

          主站蜘蛛池模板: 泸水县| 白城市| 建水县| 昭觉县| 三江| 阳东县| 阿图什市| 新乐市| 特克斯县| 横山县| 古蔺县| 金寨县| 克什克腾旗| 肥乡县| 新野县| 额济纳旗| 开远市| 溧阳市| 齐河县| 晋城| 泉州市| 奉节县| 乐东| 永吉县| 名山县| 永平县| 香格里拉县| 安阳市| 兴安县| 东乡族自治县| 岑巩县| 清苑县| 浑源县| 沿河| 宝坻区| 剑川县| 奉新县| 阜新市| 阿拉善右旗| 定襄县| 武隆县|