轉
k-means是聚類演算法中的一種,其中k表示類別數,means表示均值。顧名思義k-means是一種通過均值對資料點進行聚類的演算法。k-means演算法通過預先設定的k值及每個類別的初始質心對相似的資料點進行劃分。並通過劃分後的均值迭代優化獲得最優的聚類結果。
k值是聚類結果中類別的數量。簡單的說就是我們希望將資料劃分的類別數。k值決定了初始質心的數量。k值為幾,就要有幾個質心。選擇最優k值沒有固定的公式或方法,需要人工來指定,建議根據實際的業務需求,或通過層次聚類(hierarchical clustering)的方法獲得資料的類別數量作為選擇k值的參考。這裡需要注意的是選擇較大的k值可以降低資料的誤差,但會增加過擬合的風險。
以下是一組使用者的年齡資料,我們將k值定義為2對使用者進行聚類。並隨機選擇16和22作為兩個類別的初始質心。
step1、計算距離並劃分資料
我們以圖的形式展示聚類的過程。在這組年齡資料中,我們選擇了16和22作為兩個類別的初始質心,並通過計算所有使用者的年齡值與初始質心的距離對使用者進行第一次分類。
計算距離的方法是使用歐式距離。以下是歐式距離的計算公式。距離值越小表示兩個使用者間年齡的相似度越高。
通過計算,我們獲得了每個年齡資料點與兩個初始質心的距離。這裡我們以黑色實心圓點標記較大的距離值,空心圓點標記較小的距離值。例如第乙個資料點15,到第乙個初始質心16的距離為1,到第二個初始質心22的距離為7。相比之下15與16的距離更近,距離值為1,並以空心圓點標記。因此15這個年齡資料點被劃分在第乙個組(16)中。如果年齡資料點到兩個初始質心的距離相等,可以劃分到任意組中,例如年齡資料點19,到16和22的距離都為3。在這個示例中我們將資料點19劃分到第二個組(22)中。
按相似程度(距離)對資料分完組後,分別計算兩個分組中資料的均值15.33和36.25,並以這兩個均值作為新的質心。在下圖中可以看到,藍色的數字為初始質心,紅色的數字為新的質心。目前的質心和新的質心並不是同乙個資料點,我們將以新的質心替代初始質心,迭代計算每個資料點到新質心的距離。直到新的質心和原質心相等,演算法結束。
step2、使用均值作為新質心
將兩個分組中資料的均值作為新的質心,並重複之前的方法計算每個年齡資料點到新質心的距離。下面是年齡資料點到兩個新質心的距離。以年齡資料點19為例,到新質心15.33的距離為3.67,到另乙個新質心36.25的距離為17.25。相比之下資料點19到15.33的距離更近,為3.67。因此被分到第一組(15.33)中。
以年齡資料點到新質心的距離值完成分組後,再次計算兩組的均值18.56和45.90,並以均值作為新質心替代原質心。下圖中藍色數字為原質心,紅色數字為新質心。在新質心下,年齡資料的分組情況發生了變化,但新質心與原質心沒有重合。
重複之前的方法和步驟,計算年齡資料點到新質心的距離。並對比資料點到兩個新質心的距離,選擇較小的距離值對年齡資料點進行分組。年齡資料點28到18.56的距離為9.44,到45.90的距離為17.90。因此年齡資料點28被分配到第乙個18.56的分組中。
step3、再次以年齡資料點到新質心的距離完成分組後,新質心(紅色)與原質心(藍色)仍然沒有重合,但與之前相比分組的調整已經很小。我們繼續計算新分組的均值19.50和47.89,並將均值作為新質心替代原質心。
step4、演算法終止條件
開始計算的第一步我們說迭代計算每個資料到新質心的距離,直到新的質心和原質心相等,演算法結束。使用上一步分組的均值19.50和47.89作為新質心。並計算年齡資料點到新質心的距離。以下為計算結果。
按照年齡資料點到新質心的距離對資料進行分組,並計算每組的均值作為新質心。這裡兩組的均值與原質心相等。也就是說新質心與原質心相等,都是19.50和47.89.。演算法停止計算。年齡資料點被劃分為兩類,如下圖所示分別為15-28和35-65。
k-means是個簡單實用的聚類演算法,這裡對k-means的優缺點做乙個總結。
k-means的主要優點有:
1)原理比較簡單,實現也是很容易,收斂速度快。
2)聚類效果較優。
3)演算法的可解釋度比較強。
4)主要需要調參的引數僅僅是簇數k。
k-means的主要缺點有:
1)k值的選取不好把握
2)對於不是凸的資料集比較難收斂
3)如果各隱含類別的資料不平衡,比如各隱含類別的資料量嚴重失衡,或者各隱含類別的方差不同,則聚類效果不佳。
4) 採用迭代方法,得到的結果只是區域性最優。
5) 對噪音和異常點比較的敏感。
K Means聚類演算法
k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...
聚類演算法 K means
演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...
k means聚類演算法
說到聚類,得跟分類區別開來,分類是按人為給定的標準將樣本歸到某個類別中去,在機器學習中多是監督學習,也就是訓練樣本要給標籤 正確的類別資訊 而聚類是在某種規則下自動將樣本歸類,在機器學習中是無監督學習,不需要提前給樣本打標籤。k means聚類演算法,就是在某種度量方式下,將樣本自動劃分到k個類別中...