某零售公司在市面上主要有30款產品,這些產品的類別、銷售量和銷售額的差異很大,于是該公司的業(yè)務分析師想按照一定的標準,將30個產品劃分為A、B、C三個等級,以便公司進行產品戰(zhàn)略規(guī)劃,那么他應該怎么做呢?
很多人可能會想到套用波士頓矩陣,以銷售量和銷售額為橫縱坐標軸,計算中心軸,將每個產品落入矩陣當中,就能得到大體的產品分類情況。
好像看上去沒問題對不對?但是在實際情況中,很多人這樣做出來的卻是錯誤的,為什么呢?
其實這種思路是對的,但是很多人都忽略了一個最關鍵的問題:應該用什么標準去衡量和判斷中心軸的劃分
很多人都會選擇直接拉取數據的平均值作為中心軸,然而這種分類方法在實際中可能會造成數據的誤判,因為類別的不同,數據之間的差異可能會呈現出族群的現象,這時候有些數據就可能會“魚目混珠”地混入其他類別之中。
比如,我們可以舉個很極限的例子,有A、B、C三個產品的銷售量分別為100、50、1,很顯然A、B產品為一類,C產品為一類;但是如果按照平均值151/3=50.03,劃分之后A為一類,B與C劃分到了一類。
怎么樣,是不是很奇怪,這時就要用到我們今天要介紹的分類分析方法——聚類。
聚類原本是統(tǒng)計學上的概念,現在屬于機器學習中非監(jiān)督學習的范疇,大多都被應用在數據挖掘、數據分析的領域,簡單說可以用一個詞概括——物以類聚。
如果把人和其他動物放在一起比較,你可以很輕松地找到一些判斷特征,比如肢體、嘴巴、耳朵、皮毛等等,根據判斷指標之間的差距大小劃分出某一類為人,某一類為狗,某一類為魚等等,這就是聚類。
從定義上講,聚類就是針對大量數據或者樣品,根據數據本身的特性研究分類方法,并遵循這個分類方法對數據進行合理的分類,最終將相似數據分為一組,也就是“同類相同、異類相異”。
說到這里,可能有人會覺得聚類不就是分類嘛,而其實在嚴格意義上,聚類與分類并不是一回事,兩者有著很大的差異。
分類是按照已定的程序模式和標準進行判斷劃分,比如我們開頭提到的例子,我們直接規(guī)定把數據的平均值作為中心軸,那么我們的工作就剩下了一個:判斷每一個數據是否達到平均值。
也就是說,在進行分類之前,我們事先已經有了一套數據劃分標準,只需要嚴格按照標準進行數據分組就可以了。
而聚類則不同,我們并不知道具體的劃分標準,要靠算法進行判斷數據之間的相似性,把相似的數據放在一起,也就是說聚類最關鍵的工作是:探索和挖掘數據中的潛在差異和聯系。
在聚類的結論出來之前,我完全不知道每一類有什么特點,一定要根據聚類的結果通過人的經驗來分析,看看聚成的這一類大概有什么特點。
知道了聚類的含義,那么我們具體要怎么對數據進行聚類呢?
聚類方法有很多,但是我們數據分析中常用的就是K-Mcans聚類法,這種方法很簡單,也很有效,在很多分析軟件上都能進行算法計算。
簡答拿一個例子介紹一下K-Mcans聚類法的原理和過程:
1、確定分組數
K-Mcans聚類法中的K就是分組數,也就是我們希望通過聚類后得到多少個組類。比如我有下面六個數據,想要將這些數據分成兩類,那么K=2 。
2、隨機選擇K個值作為數據中心
這個數據中心的選擇是完全隨機的,也就是說怎么選擇都無所謂,因為這里K=2,所以我們就以A和B兩個為數據中心。
為了方便理解,我們可以制作一個散點圖,將A、B作為數據中心。
3、計算其他數值與數據中心的“距離”
既然選擇了數據中心,那么它們的周圍一定會有很多相似數據,怎么判斷這些數據與其是不是相似呢?
這里我們要引入歐氏距離的概念,通俗點說歐氏距離就是多維空間中各個點之間的絕對距離,表明兩點之間的距離遠近,其公式為:
如果是普通的二維數據,這個公式就直接變成了勾股定理,因此我們算出其他6個點距離A和B的距離,誰離得更近,誰與數據中心就是同一類。
所以,我們可以看出,C-H距離B的距離都比距離A更近,所以第一次分組為:
4、重新選擇新的數據中心
得到了第一次分組的結果,我們再重復前兩個步驟,重新選擇每一組數據的數據中心。
5、再次計算其他數據與新數據中心的距離
還是直接計算勾股定理,計算出其他數據與A和P的歐氏距離,如下:
我們可以看出這里面有的距離A近,有的距離P近,于是第二次分組為:
6、再次重新選擇數據中心
這里就是老規(guī)矩了,繼續(xù)重復前面的操作,將每一組數據的平均值作為數據中心:
7、再次計算其他數據與新數據中心的距離
這時候我們發(fā)現,只有A與B距離O的距離更近,其他6個數據都距離Q更近,因此第三次分組為:
經過這次計算我們發(fā)現分組情況并沒有變化,這就說明我們的計算收斂已經結束了,不需要繼續(xù)進行分組了,最終數據成功按照相似性分成了兩組。
8、方法總結
簡單來說,我們一次次重復這樣的選擇數據中心-計算距離-分組-再次選擇數據中心的流程,直到我們分組之后所有的數據都不會再變化了,也就得到了最終的聚合結果。
明白了聚類分析的思路和方法,我們怎么應用到實際中去呢?面對大量數據的時候我們該怎么辦呢?
其實很多分析軟件中都有聚類分析的功能,比如Python、Excel等等,比如FineBI中的聚類功能,下次分析數據的時候應該知道這些名稱是什么意思了吧?
給出聚類數和距離方式,就可以迅速得出聚合結果,大家可以點擊左下角“了解更多”下載嘗試一下。