K均值聚類算法
這篇文章,我們來學習無監(jiān)督學習算法中的K均值聚類算法。希望大家看完后能了解其基本原理和應用場景,以便在工作中更好地應用。
一、什么叫K均值聚類算法?
K均值聚類算法也叫K-means聚類算法,是一種無監(jiān)督學習算法。
二、基本原理
假設有一個新開辦的大學,即便還沒有開設任何的社團,有不同興趣愛好的同學們依然會不自覺的很快聚在一起,比如喜歡打籃球的、喜歡打乒乓球的、喜歡音樂的等等。
這時候就可以順勢開設籃球社團、乒乓球社團、音樂社團,再有同學想加入社團的時候,就可以直接根據自身興趣選擇社團了。
把這個場景遷移到機器學習上,擁有不同興趣的學生就是數據樣本,我們來試著來給他們歸類。
向量空間中,距離近的樣本意味著有更高的相似度,我們就把它們歸為一類,然后用該類型所有樣本的中心位置標識這個類別,再有新樣本進來的時候,新樣本離哪個類別的中心點更近,就屬于哪個類別,然后再重新計算確定新的中心點。
不斷重復上述操作,就能把所有的數據樣本分成一個個無交集的簇,也就是對所有數據樣本完成了歸類。
這就是K-means算法的思路及原理:將數據集劃分為K個不重疊的獨立聚類,再找出這個K個類別的中心位置,新的樣本離中心位置最近則歸屬哪個類別。
這里生成的新簇中,需重新計算每個簇的中心點,然后在重新進行劃分,直到每次劃分的結果保持不變。在實際應用中往往經過很多次迭代仍然達不到每次劃分結果保持不變,甚至因為數據的關系,根本就達不到這個終止條件,實際應用中往往采用變通的方法設置一個最大迭代次數,當達到最大迭代次數時,終止計算。
需要注意的是,K-means算法中的K表示要分成K個聚類,那么如何確定K值就是一個繞不開的問題了。其實沒有統(tǒng)一的標準,這里一般兩種辦法:
1、我們一般根據個人經驗來設定K值(可用觀察法看粗略地看有多少簇)。
2、嘗試每一個K值,然后在不同的K值情況下,通過每個待測點到質心的距離之和,來計算平均距離。著K值的變化,最終會找到一個點,讓平均距離變化放緩,這個時候基本就可以確定K值了。
如下圖劃分數在4-15之間,簇內間距變化很小,基本上是水平直線,因此可以選擇K=4(拐點附近位置)作為劃分數。
K-Means算法涉及到簇中心的計算,對于第i個簇,其簇中心(質心)的計算公式為:
K均值聚類的目標是最小化簇內平方誤差,即找到K個簇,使每個數據點與其所屬簇中心的距離之和最小。目標函數的數學公式是:
從公式可見,E值越小則簇內數據(樣本)相似度越高。K-Means算法通過迭代更新簇中心,不斷優(yōu)化這個目標函數,來達到更好的聚類效果。
三、K均值聚類算法的步驟是什么?
- 初始化:隨機選擇K個數據點作為初始簇中心。
- 分配數據點:對于數據集中的每個數據點,計算其與各個簇中心的距離,并將其分配到距離最近的簇中心所在的簇。
- 更新簇中心:計算每個簇內所有數據點的均值(或其它形式的中心),將其作為新的簇中心。這個均值可以是算術平均值、幾何平均值、中位數等。
- 重新計算誤差:重新計算每個簇內數據點到簇中心的距離,并計算總的平方誤差。
- 迭代:重復步驟(2)—(4),直到滿足停止條件。停止條件可以是簇中心的變化小于某個閾值,或是達到預設的最大迭代次數,又或是誤差函數的減少小于某個值。
四、應用場景
K均值聚類算法,可以幫我們完成大量數據的分類任務。
商業(yè)務中,精細化運營的前提是對用戶進行分層,然后根據不同層次的用戶采取不同的運營策略。這時候可以收集用戶的消費頻率、消費金額、最近消費時間等消費數據,并使用K-means算法將用戶分為不同的層級,然后針對高價值用戶,可以提供專享活動或個性化服務,提高用戶價值感和忠誠度,針對將要流失的用戶,可以采用發(fā)放優(yōu)惠券等挽留策略,盡可能留住用戶。
以下是一些更多應用場景:
- 文檔聚類:在自然語言處理中,可用于文檔聚類,將相似的文檔分為同一類,以便進行更有效的信息檢索。
- 客戶細分:在市場營銷中,可對客戶進行細分,將相似的客戶分為同一類,以便進行更有效的營銷策略制定。
- 圖像分割:在計算機視覺中,可用于圖像分割,將圖像中的像素分為幾個不同的區(qū)域。
- 異常檢測:可用于異常檢測,通過將數據點聚類,找出那些與大多數數據點不同的異常數據點。
- 社交網絡分析:在社交網絡分析中,K-means可用于發(fā)現社區(qū)結構,將相似的用戶分為同一類。
五、優(yōu)缺點
K-means算法的優(yōu)點:
- 簡單易實現:原理簡單,實現起來相對容易。
- 計算效率高:時間復雜度近似為線性,對于大規(guī)模數據集可以較快地得到結果。
- 可解釋性強:結果(即聚類中心)具有很好的可解釋性。
- 收斂速度快:在大多數情況下,K-means算法能夠較快速地收斂到局部最優(yōu)解。
- 優(yōu)化迭代功能:可以在已經求得的聚類基礎上進行迭代修正,提高聚類的準確性。
K-means算法的缺點:
- 準確度上比不上有監(jiān)督學習的算法
- 對噪聲和離群點敏感:對噪聲和離群點敏感,這些點可能會影響聚類中心的計算。
- 需要預設聚類數目:需要預先設定K值(即聚類的數目),但這個值通常難以準確估計。
- 對初始值敏感:算法結果可能會受到初始聚類中心選擇的影響,不同的初始值可能會導致不同的聚類結果。
- 可能收斂到局部最優(yōu):可能會收斂到局部最優(yōu)解,而非全局最優(yōu)解。
參考文檔:
1、8000字詳解“聚類算法”,從理論實現到案例說明-人人都是產品經理-果釀
2、K-means聚類算法:用“物以類聚”的思路挖掘高價值用戶
作者:厚謙,公眾號:小王子與月季
本文由@厚謙 原創(chuàng)發(fā)布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發(fā)揮!