分类与聚类及聚类算法分类
一、聚類
(一)聚類概念
聚類就是按照某個特定標準(如距離準則)把一個數據集按照相似度分割成不同的類或簇,使得同一個簇內的數據對象的相似性盡可能大,同時不在同一個簇中的數據對象的差異性也盡可能地大。即聚類后同一類的數據盡可能聚集到一起,不同數據盡量分離。
(二)聚類的目標
使同一類對象的相似度盡可能地大;不同類對象之間的相似度盡可能地小。
(三)聚類和分類的區別
聚類技術通常又被稱為無監督學習,因為與監督學習不同,在聚類中那些表示數據類別的分類或者分組信息是沒有的(即分類前只給了分類標準并未給分類類別)。
Clustering (聚類),簡單地說就是把相似的東西分到一組,聚類的時候,我們并不關心某一類是什么,我們需要實現的目標只是把相似的東西聚到一起。因此,一個聚類算法通常只需要知道如何計算相似度就可以開始工作了,因此 clustering 通常并不需要使用訓練數據進行學習,這在Machine Learning中被稱作unsupervised learning (無監督學習)。 事先無標簽也不需要知道標簽只需按相似度分好類即可。
Classification (分類),對于一個classifier,通常需要你告訴它“這個東西被分為某某類”這樣一些例子,理想情況下,一個 classifier 會從它得到的訓練集中進行“學習”,從而具備對未知數據進行分類的能力,這種提供訓練數據的過程通常叫做supervised learning (監督學習)。需要事先貼好標簽歸好類,然后用訓練集對其訓練學習之后可以對新的目標進行歸類,圖像識別即是如此。
二、聚類算法的分類
(一)基于劃分
1.基本思想
基于劃分的方法:其原理簡單來說就是,想象你有一堆散點需要聚類,想要的聚類效果就是“類內的點都足夠近,類間的點都足夠遠”。首先你要確定這堆散點最后聚成幾類,然后挑選幾個點作為初始中心點,再然后給數據點做迭代重置(iterative relocation),直到最后到達“類內的點都足夠近,類間的點都足夠遠”的目標效果。也正是根據所謂的“啟發式算法”,形成了k-means算法及其變體包括k-medoids、k-modes、k-medians、kernel k-means等算法。
2.特點
計算量大,很適合發現中小規模的數據庫中小規模的數據庫中的球狀簇。
3.主要算法
k-means、k-medoids、k-modes、k-medians、kernel k-means等算法。
4.算法流程
經典K-means算法流程:
5.算法優缺點
優點:對于大型數據集也是簡單高效、時間復雜度、空間復雜度低。
缺點:最重要是數據集大時結果容易局部最優;需要預先設定K值,對最先的K個點選取很敏感;對噪聲和離群值非常敏感;只用于numerical類型數據;不能解決非凸(non-convex)數據。
6.常見的算法及改進
k-means對初始值的設置很敏感,所以有了k-means++、intelligent k-means、genetic k-means。
k-means對噪聲和離群值非常敏感,所以有了k-medoids和k-medians。
k-means只用于numerical類型數據,不適用于categorical類型數據,所以k-modes。
k-means不能解決非凸(non-convex)數據,所以有了kernel k-means。
另外,很多教程都告訴我們Partition-based methods聚類多適用于中等體量的數據集,但我們也不知道“中等”到底有多“中”,所以不妨理解成,數據集越大,越有可能陷入局部最小。
(二)基于層次
1.基本思想
層次聚類,是一種很直觀的算法。顧名思義就是要一層一層地進行聚類,可以從下而上地把小的cluster合并聚集,也可以從上而下地將大的cluster進行分割。似乎一般用得比較多的是從下而上地聚集。層次聚類主要有兩種類型:合并的層次聚類(凝聚層次聚類)和分裂的層次聚類。前者是一種自底向上的層次聚類算法,從最底層開始,每一次通過合并最相似的聚類來形成上一層次中的聚類,整個當全部數據點都合并到一個聚類的時候停止或者達到某個終止條件而結束,大部分層次聚類都是采用這種方法處理。后者是采用自頂向下的方法,從一個包含全部數據點的聚類開始,然后把根節點分裂為一些子聚類,每個子聚類再遞歸地繼續往下分裂,直到出現只包含一個數據點的單節點聚類出現,即每個聚類中僅包含一個數據點。
2.特點
處理速度很快,通常這是與目標數據庫中記錄的個數無關的,只與把數據空間分為多少個單元有關。
3.主要算法
BIRCH算法、CURE算法、CHAMELEON算法、GN算法
GN算法是一個經典的社區發現算法,它屬于分裂的層次聚類算法,最初,由Michelle Girvan和Mark Newman提出。其基本思想是不斷的刪除網絡中具有相對于所有源節點的最大的邊介數的邊,然后,再重新計算網絡中剩余的邊的相對于所有源節點的邊介數,重復這個過程,直到滿足某個條件(如所有邊都被刪除或具有相等的最大邊介數)
4.算法流程
以下流程以自下向上為例。
GN算法流程
計算網絡中所有邊的介數
找到介數最高的邊并將它從網絡中移除
n 重復,直到每個節點就是一個社團為止
5.算法優缺點
優點:可解釋性好(如當需要創建一種分類法時);還有些研究表明這些算法能產生高質量的聚類,也會應用在上面說的先取K比較大的K-means后的合并階段;還有對于K-means不能解決的非球形族就可以解決了。
缺點:時間復雜度高啊,o(m3),改進后的算法也有o(m2lgm),m為點的個數;貪心算法的缺點,一步錯步步錯;同K-means,difficulty handling different sized clusters and convex shapes。
**
6.常見的算法及改進
**
該聚類算法因為計算復雜度比較大適用于小數量級,如對中國省會城市聚類。改進的算法有BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)主要是在數據體量很大的時候使用,而且數據類型是numerical。
Chameleon(A Hierarchical Clustering Algorithm Using Dynamic Modeling)里用到的linkage是kNN(k-nearest-neighbor)算法,并以此構建一個graph,Chameleon的聚類效果被認為非常強大,比BIRCH好用,但運算復雜還是很高,O(n^2)。看個Chameleon的聚類效果圖,其中一個顏色代表一類,可以看出來是可以處理非常復雜的形狀的。
總結
以上是生活随笔為你收集整理的分类与聚类及聚类算法分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: r.java是什么_R.java文件介绍
- 下一篇: UITabBar Contoller