【算法】一个简单的k均值(k-means)原理
基本思想
通過迭代尋找k個聚類的一種劃分方案,使用這k個聚類的均值來代表相應各類樣本時所得到的總體誤差最小。
一旦給定了類別數目k,k均值就按照平方誤差和最小的原則將所有樣本劃分到指定數目的類中。
k均值(k-means)有時也稱C均值(C-means),屬于非監督學習。
構建方法
- 給定初始的類別數k
- 隨機選取k個樣本點作為聚類中心
- 對剩余樣本計算與k個中心的距離,將其劃分到最近的聚類中心,形成初始的k類
- 選取樣本y,將其從原始聚類Y中取出,計算取出后Y中誤差平方和的減少量
- 將樣本y依次放入其他類別中,計算在該類別中的誤差平方和的增加量
- 如果最小的增加量<減少量,則將樣本y移到最小增加量對應的聚類中,否則y仍在原聚類中
- 重新計算聚類中心,選取下一個樣本進行迭代
參數 k 選取
k均值的前提是已知聚類數k,當類別數目未知的時候可以采用遍歷的方案:k=1,2,3…。
當然,誤差平方和隨k的增加是減小的,當k的減少幅度突然變慢時,說明這是將原本比較密集的樣本再分開,所以曲線的拐點就是接近最優的聚類數。
但是,實際中往往不會存在明顯的拐點,需要通過實際效果來反饋。
聚類中心選取
1)隨機選取
2)選擇批次距離盡可能遠的K個點(Kmeans++)
首先隨機選擇一個點作為第一個初始類簇中心點,然后選擇距離該點最遠的那個點作為第二個初始類簇中心點,然后再選擇距離前兩個點的最近距離最大的點作為第三個初始類簇的中心點,以此類推,直至選出K個初始類簇中心點。
3)選用層次聚類算法(BIRCH和ROCK)或者Canopy算法進行初始聚類,然后利用這些類簇的中心點作為KMeans算法初始類簇中心點。
參考資料:https://blog.csdn.net/u012197703/article/details/79434005
猜你喜歡:👇🏻
?【算法】一個簡單的ISODATA原理
?【算法】一個簡單的主成分分析(PCA)原理
?【算法】一個簡單的線性判別分析(LDA)原理
總結
以上是生活随笔為你收集整理的【算法】一个简单的k均值(k-means)原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 冗余外键 同步_由于外键约束
- 下一篇: 【算法】一个简单的ISODATA原理