k-means是非常常見的聚類演算法,思想簡單,易於實現,現在已經被廣泛應用到各種聚類任務當中。k-means的基本思想是先初始化聚類中心,然後計算所有點到不同聚類中心的距離,重新計算聚類中心,反覆迭代,直到聚類中心沒有變化或者到達最大的迭代次數停止。
因為思想簡單,所以易於使用,但是這個方法存在著很多問題。1. 計算量非常大;2. 聚類中心的數量k需要提前設定,並且聚類中心的數量也會影響到聚類結果;3. 聚類中心的初始化也要人為初始化,初始化的不同會影響到聚類結果;4. 異常點的存在會影響聚類結果;5. 容易收斂到區域性最優。
每乙個問題都有了相應的解決方案:
1. 計算量非常大: 可以應用kd樹加速k-means
2. 聚類數量提前設定:運用多種方法估計k值
a. 可以根據資料的先驗知識來估計需要分多少類
b. 基於變化的演算法:定義乙個函式,隨著k的改變,認為在正確的k值時會產生極值
c. 基於結構的演算法:最常用的方法,比較類內距離和類間距離來確定k。如平均輪廓係數,越趨近於1聚類效果越好;或計算類內距離/類間距離,值越小越好。
其中a(i)表示樣本i的簇內不相似度,b(i)表示簇間不相似度,s(i)為樣本i的輪廓係數,它越接近1,說明樣本i聚類合理,接近-1,說明i應該分類到另外的簇,若近似為0,說明樣本i在兩個簇的邊界上。所有樣本的s(i)的均值稱為聚類結果的輪廓係數,是該聚類是否合理,有效的度量。
d. 基於一致性矩陣的演算法:認為在正確的k時,不同次聚類的結果會更加相似
e. 基於層次聚類:即基於合併或**的思想,在一定情況下停止獲得k
3. 聚類中心的初始化:
a. 先計算整體的樣本中心,然後根據樣本點到中心的距離,由近至遠均勻取樣作為初始聚類中心;
b. 初步將區域分為k個區域,然後將每個區域作為初始聚類中心;
c. 先用層次聚類進行初始聚類,然後從k個類別中隨機選取k個點來作為kmeans的初始聚類中心點
d. 計算整體的均值,作為第乙個聚類中心。從剩下的點中順序尋找,當遇到所有已有聚類中心大於一定距離的點,則作為下乙個聚類中心,直到選擇了k個。
其他聚類方法的優缺點:
1. 層次聚類:
優點:適用於任意形狀和屬性的資料集,靈活控制不同層次的聚類粒度;
缺點:時間複雜度高;
2. 基於平方誤差的聚類演算法(fcm):
優點:能求出樣本屬於每一類的概率
缺點:結果依賴於中心點的選擇,k值的選擇,容易陷入區域性最優,對異常資料敏感
3. 基於密度的聚類演算法:
優點:不需要設定類別數量,適用於任意形狀的資料
缺點:時間複雜度高,密度不均勻是效果差
機器學習演算法總結之聚類 K means
在前面學習的ml演算法中,基本都是有監督學習型別,即存在樣本標籤。然而在機器學習的任務中,還存在另外一種訓練樣本的標籤是未知的,即 無監督學習 此類任務中研究最多 應用最廣泛的是 聚類 clustering 常見的無監督學習任務還有密度估計 異常檢測等。本文將首先介紹聚類基本概念,然後具體地介紹幾類...
機器學習 kmeans
1 手寫kemeans 流程 手寫 f 桌面 rna seq1 leetcode 10 面試真題 6 位元組跳動 手寫kmeans.py 2 k 如何確定 t sne視覺化和手肘法,k值所決定的是在該聚類演算法中,所要分配聚類的簇的多少,kmeans 演算法對初始值敏感,相同的k,選的點不同,會影響...
機器學習 K means
這個演算法主要是乙個迭代的過程 1.在乙個資料集中隨機選擇k個聚類中心 2.按照離各個聚類中心的遠近來將資料集中的資料劃分到各個分類中。3.將各個分類中資料點的平均座標來作為新的聚類中心 一直重複2 3過程直到各個分類中的資料點的平均座標正好等於聚類中心的座標為止。k means演算法也有可能會出現...