挖掘數據與表達,是時候提升數據分析水平了
看見別人看不見的價值,用圖表武裝思想。
使用上篇講述的常規的數據分析手段,能夠幫助我們快速對數據進行規整和剖析,進而總結出數字反映的客觀事實。我們常提到的數據統計及分析工作,大部分止步于此。
然而是否有可能對數據進行更深層次的挖掘,去尋找一些不那么顯著可見的事實背后隱藏的規律,甚至是一些猜想呢?
答案是肯定的。
為了達成該目的,我們需要借助一系列機器學習的算法,這也是本篇的重點內容之一。
在完成全部分析形成結論后,若要精益求精就無法繞過最終的圖表美化工作,即數據可視化,良好的表達呈現有助于觀眾更好的理解你的觀點。
產品需要考慮表現層的用戶體驗,數據報告亦是如此。
因此,本文最后的篇幅會留給數據可視化。
回顧一下數據分析的5個步驟:
- 明確目標;
- 數據預處理;
- 特征分析;
- 算法建模;
- 數據表達。
上篇《極簡數據分析(上) – 10分鐘掌握關鍵數據分析方法》介紹了前3步,本篇開始進入到最后2個步驟。
算法建模
不少非技術出身的同學一聽到算法建模、機器學習、大數據、人工智能等概念,就開始頭大,實際上大可不必。
本文其實也是定位面向于非技術人員的,因此首先可能需要對相關的技術進行去魅。
什么是算法?
可以理解成算法是計算的方法或技巧,通過合適的算法對原始數據進行加工以得出結論,是我們解決問題的核心思路。
什么是數據挖掘?
顧名思義,是對并非浮于表面的信息進行深度研究,可能是可觀察到的事實背后的規律或原因,也是我們想獲取的知識。
什么是機器學習?
其目的是讓機器可以通過學習,自主去解決問題,而并非執行一段代碼內既定的任務。
而人工智能可能是最后我們追求的美好結果,不論是數據挖掘還是機器學習,都是在實現人工智能過程中的手段,雖然其實離真正的智能還相差甚遠。
所以在數據分析范疇內對相關技術的應用,我們可以描述為:利用機器學習的相關算法進行數據挖掘,尋找數據事實背后的規律。
一個好消息是:算法在人工智能技術和高級語言經歷了多年發展至今后,很多已經被封裝成了獨立的函數或類,可以直接調用,不少開發框架內也已經集成了大量的庫或包,大大降低了機器學習的技術門檻,也因此讓我們利用相關技術進行數據分析成為了可能。
機器學習主要分為監督學習和非監督學習,此外還有強化學習。
這里主要介紹監督學習和非監督學習。兩者的區別主要在于是否有已知的訓練集,即監督學習類似教學,告訴機器一些已經確定的輸入條件(特征值)和輸出結果(標簽),然后由機器總結規律再運用到新樣本中。而非監督學習類似自學,機器需要自己從全部樣本中總結規律。
在數據分析過程中,根據分析目的和數據特征的不同,通常會進行3類分析:回歸、分類、聚類。在每類分析中還包含了多種模型,接下來我們會介紹其中常用且有代表性的模型和實現方式。
1. 線性回歸
線性回歸可能是大家平時聽到最多的模型了,其通常被應用在對連續變量的預測中。
線性回歸會嘗試在一些已知的自變量和因變量之間尋找到一種關系,通過擬合出最佳的回歸線去表達這種關系,進而可以預測在回歸線上其他點的數據。如根據下面左圖的已知數據,擬合出右圖的直線函數。
在Python中可直接調用sklearn庫中的相關模型實現,簡單的一元線性回歸實例如下,多元線性回歸的實現類似,但會有多個自變量,即輸出的斜率值會有多個。
既然該模型是基于已知數據擬合得出的,就可能存在過擬合或欠擬合的可能,不論哪種都會使模型失去泛化的能力,很難去進行預測。
造成問題的最常見原因可能是訓練樣本量太少或者樣本的維度太少。
sklearn庫中也提供了一系列參數用于評價模型擬合水平,例如SSE(和方差)、MSE(均方差)、RMSE(均方根)、R-squre(確定系數)等。其中SSE、MSE和RMSE的邏輯類似,數值越接近0說明效果越好,R-squre取值范圍在[0,1]之間,越接近1說明效果越好。
2. 聚類
聚類是非監督學習的代表,指的是根據樣本間相似的特征進行分類的過程。聚類中的常用算法有K-Mean算法,是典型的基于距離的聚類算法,常以歐氏距離進行測量(不理解也不重要),更適合形狀比較規則的類簇。
而有些聚類效果不規則,帶狹長、拐彎(非凸樣本集),則不適合用K-Mean算法,針對這種情況會使用密度聚類的算法,例如DBSCAN。下圖可看出兩種算法的聚類區別,對于形狀不規則的聚集,DBSACN效果會更好。
但大部分時候我們遇到的聚類情況還是比較規則的,也因此K-Mean仍是更常用的聚類算法。在K-Means算法的邏輯中,要注意2點:
- 需要事先給定類簇的數量,即聚類群的個數;
- 需要事先給定類簇初始的中心。
在Python中的實現和聚類效果如下:
根據聚類結果,不僅可研究相似群體的規律,還可以找出與大眾差異非常大的孤立點,這在例如風控行業中的應用非常普遍,孤立點很可能代表著一些刷單或有其他不良行為的惡意用戶。
3. 分類
之所以把分類放在最后,是因為無論其重要性還是應用范圍可能都是最高最廣的。這是一種利用已知訓練集來對模型進行訓練,不斷優化分類器的過程。
分類的算法也非常多,而且還有不少變種或衍生算法。我們只能列舉一些最經典也是最普適的算法,例如樸素貝葉斯、決策樹、隨機森林、SVM(支持向量機)、遺傳算法等。
接下來以非常簡單的KNN算法為例,介紹分類的實現方式。KNN全稱K-Nearest-Neighbors,其思路簡單描述就是將待判斷的樣本放入已知訓練結果中,觀察樣本和哪個群體的成員間最接近,就將其歸為哪類。這次直接利用Python中的測試數據實現,該測試數據為判斷3種花的類型,以及4個花的特征(萼片長度、萼片寬度、花瓣長度、花瓣寬度)。
對隨機數據的判斷結果如下:
數據表達
終于來到最后一步,數據表達。數據分析最終要形成具有指導性的結論,結論一定是要給他人觀看講解的,因此良好的表達十分必要。
下圖是一張經典的圖表選擇決策圖,參考此圖可以快速根據表達目的選擇合適的圖表進行可視化表達。
表達目的在圖中主要分為4種:分布、對比、相關性、構成,并對應了不同的圖表,相信在工作中絕大部分的數據表達需求都已經可以對號入座。
雖然圖表并非信息量越大越好,表現形式越酷炫越好,但恰到好處的豐富程度和展現形式還是能更高效地提供更多有價值的信息,也確實比過于簡單的圖表更加專業。
因此接下來本文會展示一些包含更多細節和不同形式的圖表并輔以解釋,希望能夠給你提供參考,帶來啟發。
1. 分布數據可視化
直方圖+密度圖:該組合可以很好的展示數據的整體分布趨勢,密度圖曲線是對分布趨勢的擬合,可以調節擬合程度。還可以用線段代表具體樣本,展示絕對分布情況。
多維度密度圖:通常是2個維度,例如表達地理位置的經緯度。
通過該密度圖能反映數據的聚集情況,還可以在密度圖基礎上繪制散點圖來標注出原始數據??瓷先ナ遣皇呛芟竦乩碚n上學的等高線?
散點圖:針對基礎的散點圖,我們可以在橫軸坐標上輔以直方圖或密度圖以反映數據在單個維度上的分布情況。
甚至還能運用前面講到的線性回歸,對數據進行回歸分析,給出擬合結果和置信區間。
散點圖的表達形式也不僅限于散點,還可以用類似蜂巢的六邊形,根據顏色深淺可以看出分布情況。
散點圖矩陣:在上篇已經有介紹過散點圖矩陣了,利用該矩陣可快速對樣本間的關系進行初判。而在數據表達階段給出的矩陣是已經完成判斷后的結果展示,表達的形式也會更豐富。
例如還是利用前面提到的花朵分類的測試數據,分別對3種花在不同特征維度上進行分析。
2. 分類數據可視化
統計圖:這應該是對分類數據最常見的表達方式,統計圖主要反映的是一些統計值,例如求和、計數、平均數等,用于了解數據所代表的業務整體情況,在總結匯報中會經常使用,但無法幫助閱讀者了解更多細節。
柱狀圖、折線圖等形式都可以反映這類數據,例如下圖反映了一家餐廳每天的平均客單價情況。
散點圖:散點圖可用于反映分類數據內的分布情況,例如還是該餐廳的經營數據,利用散點圖可以看出客單價的分布情況,每一個點代表了一個真實訂單。
在該圖的基礎上,還可以再根據特定的某一參數在散點內進行分類,例如下圖對付款的消費者進行了性別區分。
在分析特定類別時,將類別內的子類拆分顯示,視覺表達效果更明確。例如下圖重點觀察周五和周六兩天不同性別消費者的消費金額數據。
箱型圖:又稱作盒須圖,每一個分類是一個箱子,箱型圖在觀察數據分布和測量統計數據上有重要意義。
箱型圖的構成要素較多,信息量豐富,導致初看起來比較麻煩,但確實能反映很多問題。先介紹下箱型圖中的重點要素:
- 中位數(Q2):首先要知道箱型圖中的數據也是從小到大排序的,中位數即二分之一分位數;
- 下四分位數(Q1):即數據由小到大排列后,在1/4節點處的數;
- 上四分位數(Q3):即數據由小到大排列后,在3/4節點處的數;
- 四分位距(IQR):即Q3-Q1的差,在圖中就是箱子的高度;
- 上限:是容許范圍內的最大值,通常為Q3+1.5*IQR;
- 下限:是容許范圍內的最小值,通常為Q1-1.5*IQR;
- 內限:即圖中的上限和下限,在內限中的數據是正常值,在內限外的數據可以認為是異常值(注意上篇提到的,異常值不代表就是錯誤的值);
- 外限:外限通常代表Q3+3*IQR處和Q1-3*IQR處,外限一般不會在圖中畫出,除非需要單獨分析以內外限分隔的數據。處于內外限之間的值被看作是溫和的異常值,處于外限之外的值被看作是極端的異常值。
下圖是一個簡單的箱型圖示例。
箱型圖可以直觀的識別數據中的異常值,還可以觀察整體數據集中趨勢、偏態、尾重等重要信息。下圖還是以前面餐廳的經營數據為例,利用箱型圖既能觀察客單價的分布情況,還能根據需求展現相關統計值,比散點圖直觀了不少,一些重點信息得到了直接呈現。
箱型圖同樣可以在單個分類內再區分子類,例如我們還是用性別來區分。
在箱型圖的基礎上,還可能衍生出LV圖,或者小提琴圖的變種,以適用于一些更有針對性的場景,這里就不多介紹了,有興趣的同學可以自己百度。
3. 線性關系數據可視化
在前面已經講解過了通過線性回歸去尋找變量間的線性關系,現在補充一下同時對不同分類進行線性回歸并進行對比的方式。
仍以上述餐廳經營數據為例,我們試圖尋找賬單金額和小費之間是否存在線性相關,如果還想同時觀察不同性別消費者的表現差異,可針對不同性別消費者的數據進行回歸分析。
從結果上看,首先賬單金額和小費金額之間是存在正相關的,而性別差異對該線性相關的影響似乎不大。
有沒有更高效的展現方式呢?
回想下前面介紹的散點矩陣圖,其實矩陣的思想可以用在很多地方,在這里自然也是適用的。
下圖依然以性別作為分類,但上下兩行代表了另一個屬性:消費者是否吸煙,每列代表了每一天的數據情況。且不考慮數據和結論是否正確,似乎周六用餐的男性傾向于給更多的小費,不吸煙者尤甚(可能周六約會的人比較多,通過付更多小費能給另一半留下更好的印象)。
到這里本文的內容基本講述完了,最后再附一個熱力圖的例子,熱力圖主要用于報告中加強閱讀者對數據變化或聚集情況的感受。
例如下圖反映了從1949~1960年間某航班每月的旅客數量,可以得出結論旅客數基本逐年增長,特別在1956年后增長迅速,同時每年的夏季是出行的高峰期。
總結
本篇介紹了數據分析工作的后2步:算法建模和數據表達。
在算法建模中,可利用一系列的AI算法幫助我們進行回歸、聚類和分類的工作,讓我們有能力挖掘數據底層隱藏的價值。而掌握簡單的線性回歸算法、K-Means算法、KNN算法,已經能讓你的數據分析結果深入一個層次。
在對數據分析結果的表達中,要根據表達目的選擇合適的展現形式,包括反映分布情況、分類對比情況、數據相關性情況和構成情況等。
圖表本身是工具,沒有絕對的優劣之分,只是在不同表達目的下有不同的合適程度。就如不同的刀具對應不同的食材,砍刀最適合砍骨頭,可并不代表它就完全不能用來切菜。所以我們也要根據實際情況進行選擇,有時候甚至要多次比對挑出最好的展現方式。
文中重點介紹了表達分布數據的直方圖、密度圖(單維度/多維度)、散點圖(矩陣),表達分類數據的統計圖(柱狀圖/折線圖)、散點圖、箱型圖,以及表達相關性數據的線性相關圖(矩陣)和增強數據變化視覺效果的熱力圖,希望對大家日后的工作有啟發和幫助。
其實寫這篇文章最初的目的是概括數據分析的流程,并介紹這條線上某些具有代表性的點,讓大家有全局的認識,因此不可能通過一篇文章便講解清楚具體如何實操。
事實上,這里的每一步都可以單獨寫很多內容。可這些內容,只要你需要,在網上都能查到,比我寫的要專業多了。所以,本文更希望是能提供作為一個系統的價值,幫助你把點串成線。
也許你看完后會覺得在面對一堆數據時仍不知道如何下手,繪制圖表時仍猶豫如何展示,這很正常。因為數據分析的能力不是靠學習來提升的,而是訓練,相信這個道理大家都懂。
文章、書本或課程都只是幫你導航的工具,為你指出正確的方向,避免走彎路。
但路還是得自己走。
作者:Rowan;公眾號:羅老師別這樣
本文由 @Rowan?原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
- 目前還沒評論,等你發揮!