K-Means
算法流程(密度聚類)
1)隨機(jī)初始化k個組,求其中心點作為初始簇的中心點。
2)計算每個數(shù)據(jù)點到中心點的距離,數(shù)據(jù)點距離哪個中心點最近就劃分到哪一類中。
3)計算每一類中中心點作為新的中心點。
4)重復(fù),直到每一類中心在每次迭代后變化不大為止。(也可以多次隨機(jī)初始化中心點,然后選擇運行結(jié)果最好的一個。)
優(yōu)點:收斂速度快;計算簡便;可解釋性強。
缺點:如何設(shè)k值;對于非凸數(shù)據(jù)集難以準(zhǔn)確收斂;類別不平衡結(jié)果不佳;局部最優(yōu);噪聲敏感。
優(yōu)化:K-Medians,用中位數(shù)代替均值,減少異常值的影響;但是數(shù)據(jù)排序求中位數(shù)的過程使速度變慢。
DBSCAN
算法流程
1)確定密度閾值和鄰域半徑。從一個沒有被訪問過的任意數(shù)據(jù)點開始,以這個點為中心,r為半徑的圓內(nèi)包含的點的數(shù)量是否大于或等于minPoints,如果大于或等于minPoints則改點被標(biāo)記為中心點,反之標(biāo)記為噪聲點。?
2)重復(fù)1的步驟,如果一個噪聲點存在于某個中心點為半徑的圓內(nèi),則這個點被標(biāo)記為邊緣點,反之仍為噪聲點。
3)重復(fù)步驟1,直至所有的點都被訪問過。
優(yōu)點:不需要知道簇的數(shù)量;可檢測任意形狀簇;噪聲不敏感。
缺點:需要確定距離r和minPoints;收斂時間長;不平衡數(shù)據(jù)結(jié)果不好。
Mean-Shift
算法流程(基于滑動窗口)
1)在未被標(biāo)記的數(shù)據(jù)點中隨機(jī)選擇一個點作為起始中心點center;
2)找出以center為中心半徑為R的區(qū)域中出現(xiàn)的所有數(shù)據(jù)點,認(rèn)為這些點同屬于一個簇。同時在該聚類中記錄數(shù)據(jù)點出現(xiàn)的次數(shù)加1。
3)以center為中心點,落在窗口圓中的所有點和圓心都會對應(yīng)的一個向量,把所有這些向量相加,最終我們只得到一個向量,就是meanshift向量。
4)移動窗口(以meanshift向量的終點為新的圓心),計算窗口內(nèi)的中心點以及窗口內(nèi)的密度,直到?jīng)]有方向在窗口內(nèi)可以容納更多的點,即一直移動到圓內(nèi)密度不再增加為止。
5)重復(fù)4)直至shift的很小,此時的中心點就是該簇的中心,這個迭代過程中的所有窗口內(nèi)的點都屬于該簇。
6)如果收斂時當(dāng)前簇C的center與其它已經(jīng)存在的簇C2中心的距離小于閾值,那么把簇合并,數(shù)據(jù)點出現(xiàn)次數(shù)也對應(yīng)合并。
7)重復(fù),直到所有的點都被標(biāo)記為已訪問。
優(yōu)點:不需要提前知道簇的數(shù)量;相比K-Means來說受均值影響較小
缺點:需要確定R(R的選擇可能不重要)
GMM
算法流程
1)選擇簇的數(shù)量,隨機(jī)初始化每個簇的高斯分布參數(shù)(均值和方差)。(也可以先觀察數(shù)據(jù)給出一個相對精確的均值和方差。 )
2)給定每個簇的高斯分布,計算每個數(shù)據(jù)點屬于每個簇的概率。(一個點越靠近高斯分布的中心就越可能屬于該簇。)
3)基于概率,計算高斯分布參數(shù)使得數(shù)據(jù)點的概率最大化,可以使用數(shù)據(jù)點概率的加權(quán)來計算這些新的參數(shù),權(quán)重就是數(shù)據(jù)點屬于該簇的概率。
4)重復(fù)迭代2和3直到在迭代中的變化不大。
優(yōu)點:簇可以呈現(xiàn)出橢圓形而不是僅僅限制于圓形。(K-Means是GMMs的一個特殊情況,是方差在所有維度上都接近于0時簇就會呈現(xiàn)出圓形。);使用概率,所以一個數(shù)據(jù)點可以屬于多個簇,也就是說GMMs可以支持混合資格。
缺點:形狀不是任意的;需要提前確定簇數(shù)。
優(yōu)化:常先用K-Means初步計算,再輸入至GMM。
凝聚層次聚類
算法流程
1)將每個數(shù)據(jù)點視為一個單一的簇,選擇一個測量兩個簇之間距離的度量標(biāo)準(zhǔn)。
2)每次迭代,將兩個具有最小距離的簇合并成為一個簇。
3)重復(fù)2),直至所有數(shù)據(jù)點合并成一個簇,然后選擇需要的簇。
優(yōu)點:不需要知道有多少個簇 ;對距離度量標(biāo)準(zhǔn)的選擇不敏感。
缺點:效率低。