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