以下是數(shù)據(jù)與算法相愛相殺的第二篇,常見的聚類算法。如果按正常的數(shù)據(jù)和算法知識(shí)體系,這時(shí)候應(yīng)該講一下常用的數(shù)據(jù)查詢或算法的數(shù)學(xué)基礎(chǔ),但是觀眾老爺多是PM,恐不感興趣或沒有基礎(chǔ)。所以我就從應(yīng)用和實(shí)戰(zhàn)的角度給大家直接上干貨,在過程中介紹其用到的數(shù)學(xué)或計(jì)算機(jī)知識(shí)。
聚類算法應(yīng)該是大數(shù)據(jù)分析中最常見一類算法,在一般互聯(lián)網(wǎng)公司中,哪怕不借助算法,我們也經(jīng)常需要對(duì)用戶、客戶進(jìn)行分類,進(jìn)行人群畫像,以支持差異化服務(wù)或營銷。所以說聚類這件事情我們一直在做,而借助數(shù)據(jù)規(guī)模和算法優(yōu)勢(shì)則可以讓我們分類更加精準(zhǔn)、多元、客觀。
常見的聚類算法包括:層次化聚類算法、劃分式聚類算法、基于密度的聚類算法、基于網(wǎng)格的聚類算法、基于模型的聚類算法等,以及現(xiàn)在比較火的基于粒度的聚類等。
我沒有打算做聚類算法的科普,也不做其發(fā)展來龍去脈的論文,就從一般互聯(lián)網(wǎng)公司能用到,各位看官可以拿來就用的角度分享一下常見的算法。
1、基于空間測距的k-means算法系列
k-means算法是一種經(jīng)典的分類算法,它的基本原理是,視所有的數(shù)據(jù)為多維空間的點(diǎn),如一名普通用戶(擁有:月消費(fèi)頻次、消費(fèi)金額、最近一次消費(fèi)時(shí)間等眾多的消費(fèi)數(shù)據(jù)),他每一個(gè)我們用于分析的數(shù)據(jù)都看作是一個(gè)維度。
這樣我們就得出了該用戶的位置,通過定義數(shù)個(gè)(即k個(gè))中心點(diǎn)(中心點(diǎn)由機(jī)器隨機(jī)尋找),測算用戶與各中心點(diǎn)的距離并進(jìn)行比較,將該用戶加入距離最近的中心點(diǎn),這樣就形成了不同的圈層。
明眼的觀眾可能已經(jīng)看到,如果某點(diǎn)對(duì)所有中心點(diǎn)距離的最小值存在相同的,那這個(gè)點(diǎn)應(yīng)該加入哪個(gè)圈層呢?
這時(shí)候就原來的中心點(diǎn)變成圈層的幾何中心,從新測算距離,直到所有的點(diǎn)全包包含在某一個(gè)圈層中。
k-means算法的優(yōu)點(diǎn)是簡單高效、時(shí)間復(fù)雜度、空間復(fù)雜度都比較低,而且對(duì)于數(shù)據(jù)規(guī)模也不感冒,這對(duì)追求效率和消費(fèi)者體驗(yàn)的互聯(lián)網(wǎng)公司至關(guān)重要。
但是其需要預(yù)設(shè)k值,k值的選擇會(huì)很大程度上影響聚類,用戶數(shù)據(jù)缺失的情況對(duì)結(jié)果也有很大影響,同時(shí)對(duì)臟數(shù)據(jù)和離群值也很敏感。所以人們又改良了k-means算法,具體如下,大家選擇學(xué)習(xí)。
為了解決預(yù)設(shè)k值不準(zhǔn)確問題,延伸出了k-means++等眾多算法。其基本原理是:在選擇初始中心之前,對(duì)所有數(shù)據(jù)進(jìn)行一次計(jì)算,使得選擇的初始聚類中心之間的距離盡可能的遠(yuǎn),同時(shí)也減少了計(jì)算量。
2、基于空間測距的CURE算法
層次聚類的核心原理是:先將每個(gè)對(duì)象作為一個(gè)組(簇),然后根據(jù)兩兩之間的距離合并這些原子組為越來越大的組,直到所有對(duì)象都在一個(gè)組中,或者條件滿足(達(dá)到了你想要的組個(gè)數(shù))。
它的計(jì)算流程是:每個(gè)對(duì)象作為一類,計(jì)算兩者這件最小距離>將兩個(gè) 合并成一個(gè)新類,形成新的中心>計(jì)算所有類之間的距離,然后兩兩合并>直到合并完成或達(dá)到要求。
常見的層次聚類算法有:CURE算法、ROCK算法等,其基本原理都一樣,不過是各有所長。
3、基于密度劃分的DBSCAN算法
上文中我們講到了基于空間距離的聚類算法,這類算法最終形成的多是“圓形”的元素類,而基于度劃分的DBSCAN算法核心是:預(yù)先定義兩個(gè)變量,一個(gè)表示球形的半徑,一個(gè)表示球形內(nèi)的點(diǎn)。
只要一個(gè)區(qū)域中的點(diǎn)的密度(即:球內(nèi)的點(diǎn)/球的體積)大過某個(gè)閾值,就把球形相近的點(diǎn)加到與之相近的聚類中去。
- 在DBSCAN中的點(diǎn)分為核心點(diǎn):在球形范圍核心(稠密)的點(diǎn);
- 邊界點(diǎn):處于球形邊界之內(nèi),但離核心較遠(yuǎn)的點(diǎn),處于球形范圍之外的點(diǎn)。
DBSCAN也存在一定的缺陷,一方面是對(duì)于高維數(shù)據(jù)不能很好的反映,另一方面是在聚類密度不斷變化的數(shù)據(jù)集中,不能很好地反映整體聚類情況。
以上幾種算法,基本夠PM們?cè)谌粘J褂茫瑔⒌纤季S,方便交流。
除了以上幾種常用的聚類分析算法之外,還有一些聚類算法(均值漂移算法、網(wǎng)格算法、模型算法),如果大家有時(shí)間可以查找資繼續(xù)學(xué)習(xí)。
相關(guān)閱讀
數(shù)據(jù)和算法的相愛相殺(一):獲取數(shù)據(jù)要注意什么?
本文由 @沒空兒 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash ,基于 CC0 協(xié)議
愛盈利-運(yùn)營小咖秀(www.jza6.com) 始終堅(jiān)持研究分享移動(dòng)互聯(lián)網(wǎng)App運(yùn)營推廣經(jīng)驗(yàn)、策略、全案、渠道等純干貨知識(shí)內(nèi)容;是廣大App運(yùn)營從業(yè)者的知識(shí)啟蒙、成長指導(dǎo)、進(jìn)階學(xué)習(xí)的集聚平臺(tái);
想了解更多移動(dòng)互聯(lián)網(wǎng)干貨知識(shí),請(qǐng)關(guān)注微信公眾號(hào)運(yùn)營小咖秀(ID: yunyingshow)