聚類算法從理論到實(shí)踐,當(dāng)TD遇到人大(2)

一直強(qiáng)調(diào)學(xué)以致用,理論應(yīng)用于實(shí)踐。

“邂逅統(tǒng)計(jì)學(xué)”是理論加實(shí)踐,但實(shí)踐主要是作業(yè)演練,還可以更落地。

鏈接:邂逅統(tǒng)計(jì)學(xué)-當(dāng)TD遇到人大 http://www.itdecent.cn/p/31daefbdd2d1

那么什么更落地?工作更落地。 如何切入?薛老師講了聚類算法,而聚類算法在我們TD用的太多了,lookalike、客緣、人本實(shí)驗(yàn)室等許多地方都有應(yīng)用,也包括我之前做的智能招商項(xiàng)目,聚類商場(chǎng),對(duì)商場(chǎng)進(jìn)行定位。

于是便有了此文“聚類算法從理論到實(shí)踐”。

我們先回顧一下薛老師的課程,打好理論基礎(chǔ):

薛老師結(jié)合實(shí)際案例“探討北京供暖季空氣質(zhì)量的區(qū)域劃分”講解了聚類算法。

目標(biāo):根據(jù)供暖季的PM2.5、AQI、CO、NO2、O3、SO2均值進(jìn)行區(qū)域劃分

方法:聚類分析,基于多個(gè)變量依某個(gè)標(biāo)準(zhǔn),將數(shù)據(jù)分成若干小類,類內(nèi)個(gè)體在多個(gè)變量取值上具有較高相似性,間的差異較大。

我們先了解以下基礎(chǔ)知識(shí):

1.距離,劃分小類的依據(jù),定義某種距離,距離越近越應(yīng)聚成一小類;距離越遠(yuǎn)越應(yīng)分屬于不同的小類

常見(jiàn)的距離,幾何概念,如二維或三維等幾何空間的歐幾里德距離,把每條數(shù)據(jù)(監(jiān)測(cè)點(diǎn))看成是p維(6維)空間上的點(diǎn),在點(diǎn)和點(diǎn)之間定義距離,注意消除量綱的影響

距離的取值:

(1)最短距離法(nearest neighbor):兩類間的距離定義為兩類中距離最近的兩個(gè)個(gè)案之間的距離

(2)最長(zhǎng)距離法(furthest neighbor):兩類間的距離定義為兩類中距離最遠(yuǎn)的兩個(gè)個(gè)案之間的距離

(3)平均鏈鎖法(within-groups linkage):兩類之間的距離定義為兩類個(gè)案之間距離的平均值。包括:

組間平均鏈鎖法(between-groups linkage):只考慮兩類間個(gè)案的距離

組內(nèi)平均鏈鎖法(With-groups linkage):考慮所有個(gè)案間的距離(類內(nèi)離散)

2.層次性,聚類過(guò)程具有一定的層次性,某個(gè)類是另個(gè)類的子類,通常以合并(凝聚)方式聚類

首先,每個(gè)個(gè)體自成一類

其次,將最近的個(gè)體聚成一小類

然后,將最近的小類或個(gè)體再聚成一類

重復(fù)上述過(guò)程,即把所有個(gè)體和小類聚集成越來(lái)越大的類,直到所有個(gè)體為一大類為止

了解完基礎(chǔ)知識(shí)后就開始實(shí)戰(zhàn),進(jìn)行聚類,代碼及所有可能的聚類解如下:

image.png

那么問(wèn)題來(lái)了聚成多少小類比較合適?原則上是可合并類間距離小的小類。

這時(shí)我們需要借助碎石圖研究,最終認(rèn)為聚成4類比較恰當(dāng),如下:

image.png

回顧完課程,打好理論基礎(chǔ)后,我們就結(jié)合工作進(jìn)行實(shí)戰(zhàn),以我現(xiàn)在做的智能招商項(xiàng)目里的聚類商場(chǎng),對(duì)商場(chǎng)進(jìn)行定位為例。

先介紹一下項(xiàng)目背景,咨詢及業(yè)務(wù)部門反饋商業(yè)地產(chǎn)客戶對(duì)大數(shù)據(jù)支持的智能招商方面有需求,主要是計(jì)算商場(chǎng)內(nèi)不同品牌、品類之間的關(guān)聯(lián)關(guān)系。

初步調(diào)研后發(fā)現(xiàn):

2017年新開業(yè)的商業(yè)項(xiàng)目累計(jì)突破5000家,品牌需求量達(dá)10萬(wàn)個(gè)以上,潛力巨大。

商業(yè)項(xiàng)目一方面頻現(xiàn)業(yè)態(tài)配比不合理,定位老化等問(wèn)題,另一方面又難以突破區(qū)域限制,引進(jìn)差異化品牌,使得商業(yè)項(xiàng)目的招商需求遠(yuǎn)大于品牌供給。

在商場(chǎng)井噴式爆發(fā)的背景下,品牌方選擇哪里開店,便是其首要問(wèn)題。在品牌選址過(guò)程中,商圈分析、周邊環(huán)境、交通狀況、人口密度、區(qū)位購(gòu)買力、業(yè)態(tài)布局、客群挖掘、品牌畫像等服務(wù)都是痛點(diǎn)。

因此,鏈接品牌方與項(xiàng)目方成為行業(yè)新訴求。為品牌方帶來(lái)拓展計(jì)劃、加盟代理、品牌推薦、品牌秀場(chǎng)等多種支持,為項(xiàng)目方提供商鋪招商、業(yè)態(tài)招商、項(xiàng)目推薦等服務(wù)都是我們招商探索的方向。

做招商的第一步就是了解商場(chǎng),做一個(gè)商場(chǎng)畫像,了解商場(chǎng)的特點(diǎn)及定位,然后才能進(jìn)行引進(jìn)差異化或者互補(bǔ)的品牌等一系列的工作。

綜合我們的數(shù)據(jù)和業(yè)務(wù)需求,我們選取了商場(chǎng)的規(guī)模(擁有的品牌數(shù))和商場(chǎng)品牌業(yè)態(tài)占比(服飾鞋帽、家居廚具、麗人、箱包)等因素進(jìn)行聚類。

我們選用了Python sklearn.cluster 的KMeans算法進(jìn)行聚類。

理論與現(xiàn)實(shí)總有距離,僅有薛老師的基礎(chǔ)講解還不夠,我們需要進(jìn)一步了解Python中KMeans算法的相關(guān)使用,尤其是參數(shù)這一塊。

參考文檔:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-using-sklearn-cluster-kmeans]

貼心的附上漢化后的文檔:

http://blog.csdn.net/xiaoyi_zhang/article/details/52269242

有些同學(xué)可能會(huì)懵,這么多參數(shù),怎么玩。

參數(shù)多,但很多都用不上,視你的需求而定,在這里,我說(shuō)一下我使用的幾個(gè)參數(shù):

1. n_clusters:整形,缺省值=8,生成的聚類數(shù),即產(chǎn)生的質(zhì)心(centroids)數(shù)

即最后商場(chǎng)可以分為幾類,一般會(huì)由咨詢結(jié)合業(yè)務(wù)場(chǎng)景給一個(gè)大概的范圍,我們?cè)谒惴ㄖ羞M(jìn)行調(diào)試,不斷迭代,直至有一個(gè)理想的結(jié)果。

2. n_init和max_iter

n_init:整形,缺省值=10,用不同的質(zhì)心初始化值運(yùn)行算法的次數(shù),最終解是在inertia意義下選出的最優(yōu)結(jié)果。

max_iter:整形,缺省值=300,執(zhí)行一次k-means算法所進(jìn)行的最大迭代數(shù)。

這個(gè)我們視源數(shù)據(jù)大小和算法生成的結(jié)果來(lái)調(diào),因?yàn)樵磾?shù)據(jù)不大,我們希望有一個(gè)較好的結(jié)果,因此參數(shù)調(diào)的較大,我們把max_iter調(diào)成了5000,取得了一個(gè)不錯(cuò)的結(jié)果。

3.n_jobs:整形數(shù),指定計(jì)算所用的進(jìn)程數(shù)。內(nèi)部原理是同時(shí)進(jìn)行n_init指定次數(shù)的計(jì)算。

若值為 -1,則用所有的CPU進(jìn)行運(yùn)算。若值為1,則不進(jìn)行并行運(yùn)算,這樣的話方便調(diào)試。若值小于-1,則用到的CPU數(shù)為(n_cpus + 1 + n_jobs)。因此如果 n_jobs值為-2,則用到的CPU數(shù)為總CPU數(shù)減1。

我們用的-1,即所有的CPU進(jìn)行運(yùn)算。

完成算法的計(jì)算后,就需要對(duì)結(jié)果進(jìn)行輸出了。

image.png

我們輸出了聚類結(jié)果,部分?jǐn)?shù)據(jù)如下表:

image.png

第一列l(wèi)abel即代表聚類后的分類,同一個(gè)label代表在同一類。

聚類結(jié)果有了,但我們無(wú)法很直觀的看出每一類的特點(diǎn),因此,我們求了每一類中心點(diǎn)的規(guī)模和業(yè)態(tài),部分?jǐn)?shù)據(jù)如下表:

image.png

期間和后續(xù)還遇到了一些問(wèn)題,在此就不一一展開,歡迎感興趣的同學(xué)一起探討。

學(xué)習(xí)算法為的就是應(yīng)用于實(shí)際業(yè)務(wù),不然就是屠龍之術(shù)。

想要解決實(shí)際業(yè)務(wù)問(wèn)題,常常需要算法來(lái)做支撐。

兩者相輔相成,學(xué)以致用,理論應(yīng)用于實(shí)踐。

“路漫漫其修遠(yuǎn)兮,吾將上下而求索”。

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

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