Question:什么是聚類算法
1、聚類算法是一種非監督學習算法
2、聚類是在沒有給定划分類別的情況下,根據數據相似度進行樣本分組的一種方法
3、理論上,相同的組的數據之間有相同的屬性或者是特征,不同組數據之間的屬性或者特征1相差就會比較大
聚類算法分類:
1、划分方法(k-means)
划分方法通過優化一個划分標准的方式將數據集D組織成k個簇
2、層次方法(sahn)
層次方法在不同粒度水平上為數據集D創造層次聚類,其中每層特定的聚類結果由相應粒度水平的閾值決定
3、基於密度的方法(Mean Shift)
基於密度的方法從密度的角度構造簇類
4、基於網格的方法(STING)
基於網格的方法是將數據集D量化進數量有限的網格單元中,量化過程通常是多分辨率的
5、基於模型的方法(GMM)
假設存在一個數學模型能夠對數據集D的性質進行描述,通過對數據和該模型的符合程度進行優化,可以得到優化的結果
K-Means算法
1、核心思想K-Means聚類算法也稱K均值聚類算法,它采用距離作為相似性的評價指標,即認為兩個對象的距離越近,其相似度也越大。
2、算法實現
1)首先確定一個K值,即我們希望將數據集經過聚類得到K個集合
2)將數據集中隨機選擇K個數據點作為質心
3)對數據集中每個點,計算其與每一個質心的距離(如歐式距離),離哪個質心近,就划到哪個質心所屬的集合
4)把所有數據歸好集合后,一共有k個集合,然后重新計算每個集合的質心(數據均值)
5)如果新計算出來的質心和原來的質心的距離小於某一個設置的閾值,我們可以認為聚類已經達到期望的結果,算法終止
6)如果新質心和原質心距離變化很大,需要迭代3-5步驟
2、Mean Shift算法