聚類分析中的經(jīng)典算法——K-means算法

最近機器學習、人工智能很火熱,今天向大家介紹一個聚類分析中的經(jīng)典算法——K-means算法(K均值算法)。

01 聚類分析簡介

所謂的聚類分析,就是發(fā)現(xiàn)數(shù)據(jù)對象之間的關系,將數(shù)據(jù)進行分組(目的),組內(nèi)的相似性越大,組間的差別越大,則聚類效果越好(評價標準)。

二維、三維空間下的聚類

同樣是分組,那聚類和分類有什么區(qū)別呢?聚類是無監(jiān)督的學習算法,分類是有監(jiān)督的學習算法。

所謂有監(jiān)督就是有已知標簽的訓練集(也就是說提前知道訓練集里的數(shù)據(jù)屬于哪個類別),機器學習算法在訓練集上學習到相應的參數(shù),構建模型,然后應用到測試集上。而聚類算法是沒有標簽的,聚類的時候,我們并不關心某一類是什么,我們需要實現(xiàn)的目標只是把相似的東西聚到一起。

監(jiān)督和無監(jiān)督學習算法的區(qū)別

聚類分析能夠應用在哪些場景下呢?在我熟悉的金融領域,聚類分析主要應用在客戶細分,信貸風控和反欺詐中。

以“客戶細分”為例,銀行一般都有CRM系統(tǒng)(客戶關系管理系統(tǒng)),CRM中一般根據(jù)客戶資產(chǎn)或者貢獻度把客戶分成私行客戶、鉆石客戶、白金客戶和普通客戶。但是這種根據(jù)單一維度細分客戶的方法并不能全面反映出客戶的特點,有時候我們需要根據(jù)多個維度(基本信息、產(chǎn)品配置情況、風險偏好、征信情況等)細分客戶,比如可以把客戶分成高價值客戶、成長型客戶和普通客戶。

然后針對不同類型的客戶指定個性化營銷方案:針對高價值客戶,做好流失預警;針對成長型客戶,深入挖掘客戶需求;針對普通客戶,由外呼團隊批量營銷。

剛才提到聚類分析的概念是將“相似度”接近的樣本放入一個簇中,那么如何衡量“相似度”呢?在聚類分析中,一般用聚類表示“相似度”。常用的距離計算公式是閔可夫斯基距離:

閔式距離

考慮一種特殊情況,當P=2時,閔式距離就是我們常說的“歐幾里得距離”,也就是后面要介紹的K-means算法中用到的距離計算公式。

02 K-means算法簡介

K-means算法,是一種典型的基于距離的聚類算法。為什么叫K-means呢?

K值:簇的個數(shù),需提前指定。

均值向量:迭代時,選擇簇內(nèi)樣本的均值向量作為簇的中心。

評價K-means算法性能的方式有很多種,下面介紹一種簡單的、基于平法誤差的計算公式:x為簇內(nèi)樣本,u為簇的中心,E值越小,說明簇內(nèi)樣本距離越小,相似度越高。

平方誤差計算公式

K-means算法的流程如下:

K-means算法流程

首先,給定樣本集D和預先指定的簇數(shù)K(也就是分類的個數(shù)),從D中隨機選取K個樣本作為初始向量。

然后進入迭代,第一步循環(huán),計算每個樣本屬于哪個簇;第二部循環(huán),更新均值向量。

迭代結束的條件有兩種:可以設置迭代次數(shù),比如5次、10次,也可以判斷均值向量是否還更新,如不再更新(每次更新之間的差距小于一個足夠小的數(shù)),則終止迭代。

初始狀態(tài)
分組后

K-means算法優(yōu)點:簡單,易于理解和實現(xiàn);收斂快,一般僅需5-10次迭代即可;高效,時間復雜度為O(T*K*N)。

當然K-means算法也有很多缺點:K值需預先給定,而很多情況下K值得估計是很困難的;對初始點的選取敏感,不同的隨機初始點得到的聚類結果可能完全不同;對噪點過于敏感,因為算法是基于均值的,均值有些時候是不靠譜的;對球形簇的分組效果較好,對非球型簇、不同尺寸、不同密度的簇分組效果不好。

舉個例子,還是上面的案例,如果初始點選擇不合適,最終的分組效果較上面有很大的差異。

初始狀態(tài)
分組后

03 如何改進K-means算法

針對K值需事先給定的問題,在沒有先驗經(jīng)驗的情況下,我們不妨多嘗試幾種不同的K值,然后分別計算E值(平方誤差),找到“拐點”。如下圖這種情況,當K=5時,聚類性能基本達到最優(yōu)效果,當K繼續(xù)增加,性能并沒有明顯的提升,那么最終的聚類算法K值即可選擇為5。

平方誤差曲線

針對算法對初始點敏感的問題,我們可以選擇距離盡可能遠的點作為初始點。

針對算法對初始點敏感的問題,我們在預處理階段,對數(shù)據(jù)進行歸一化處理時可考慮剔除噪點。如果99%的客戶收入為10-20萬,只有1%的客戶收入為200萬以上,那么我們在做歸一化處理時,不妨選取99%客戶收入的最大值為最大值,那1%的收入直接置為1即可。

針對近期對K-means算法的學習,簡單總結,后續(xù)繼續(xù)完善~

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 聚類算法 前面介紹的集中算法都是屬于有監(jiān)督機器學習方法,這章和前面不同,介紹無監(jiān)督學習算法,也就是聚類算法。在無監(jiān)...
    飄涯閱讀 41,753評論 3 51
  • 算法簡介 K-means算法是硬聚類算法,是典型的基于原型的目標函數(shù)聚類方法的代表,它是數(shù)據(jù)點到原型的某種距離作為...
    盜夢者_56f2閱讀 4,339評論 0 9
  • 1. 章節(jié)主要內(nèi)容 “聚類”(clustering)算法是“無監(jiān)督學習”算法中研究最多、應用最廣的算法,它試圖將數(shù)...
    閃電隨筆閱讀 5,287評論 1 24
  • 明明好好的,突然晴空一聲雷 ,穿越了。來到了艾澤拉斯世界。 出...
    ladidada閱讀 198評論 0 0
  • 和他認識快半年之久了,我們的相識讓我相信緣分是真的存在。未見面之前我們只是聊天,還記得一次我們聊天互相逗趣,他說我...
    皎月僚心閱讀 625評論 0 6

友情鏈接更多精彩內(nèi)容