你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践
導讀:無論你的工作內容是什么,掌握一定的數(shù)據(jù)分析能力,都可以幫你更好的認識世界,更好的提升工作效率。數(shù)據(jù)分析除了包含傳統(tǒng)意義上的統(tǒng)計分析之外,也包含尋找有效特征、進行機器學習建模的過程,以及探索數(shù)據(jù)價值、找尋數(shù)據(jù)本根的過程。
作者:馬海平 于俊 呂昕 向海
本文摘編自《Spark機器學習進階實戰(zhàn)》,如需轉載請聯(lián)系我們
01 數(shù)據(jù)分析流程
數(shù)據(jù)分析可以幫助我們從數(shù)據(jù)中發(fā)現(xiàn)有用信息,找出有建設性的結論,并基于分析結論輔助決策。如圖1所示,數(shù)據(jù)分析流程主要包括業(yè)務調研、明確目標、數(shù)據(jù)準備、特征處理、模型訓練與評估、輸出結論等六個關鍵環(huán)節(jié)。
▲圖1 數(shù)據(jù)分析流程
數(shù)據(jù)分析能力并非一朝一夕養(yǎng)成的,需要長期扎根業(yè)務進行積累,需要長期根據(jù)數(shù)據(jù)分析流程一步一個腳印分析問題,培養(yǎng)自己對數(shù)據(jù)的敏感度,從而養(yǎng)成用數(shù)據(jù)分析、用數(shù)據(jù)說話的習慣。當你可以基于一些數(shù)據(jù),根據(jù)自己的經(jīng)驗做出初步的判斷和預測,你就基本擁有數(shù)據(jù)思維了。
02 數(shù)據(jù)分析基本方法
數(shù)據(jù)分析是以目標為導向的,通過目標實現(xiàn)選擇數(shù)據(jù)分析的方法,常用的分析方法是統(tǒng)計分析,數(shù)據(jù)挖掘則需要使用機器學習構建模型。接下來介紹一些簡單的數(shù)據(jù)分析方法。
1. 匯總統(tǒng)計
統(tǒng)計是指用單個數(shù)或者數(shù)的小集合捕獲很大值集的特征,通過少量數(shù)值來了解大量數(shù)據(jù)中的主要信息,常見統(tǒng)計指標包括:
分布度量:概率分布表、頻率表、直方圖
頻率度量:眾數(shù)
位置度量:均值、中位數(shù)
散度度量:極差、方差、標準差
多元比較:相關系數(shù)
模型評估:準確率、召回率
匯總統(tǒng)計對一個彈性分布式數(shù)據(jù)集RDD進行概括統(tǒng)計,它通過調用Statistics的colStats方法實現(xiàn)。colStats方法可以返回RDD的最大值、最小值、均值、方差等,代碼實現(xiàn)如下:
2. 相關性分析
相關性分析是指通過分析尋找不用商品或不同行為之間的關系,發(fā)現(xiàn)用戶的習慣,計算兩個數(shù)據(jù)集的相關性是統(tǒng)計中的常用操作。
在MLlib中提供了計算多個數(shù)據(jù)集兩兩相關的方法。目前支持的相關性方法有皮爾遜(Pearson)相關和斯皮爾曼(Spearman)相關。一般對于符合正態(tài)分布的數(shù)據(jù)使用皮爾遜相關系數(shù),對于不符合正態(tài)分布的數(shù)據(jù)使用斯皮爾曼相關系數(shù)。
皮爾遜相關系數(shù)是用來反映兩個變量相似程度的統(tǒng)計量,它常用于計算兩個向量的相似度,皮爾遜相關系數(shù)計算公式如下:
其中表示兩組變量,表示兩個變量的平均值,皮爾遜相關系數(shù)可以理解為對兩個向量進行歸一化以后,計算其余弦距離(即使用余弦函數(shù)cos計算相似度,用向量空間中兩個向量的夾角的余弦值來衡量兩個文本間的相似度),皮爾遜相關大于0表示兩個變量正相關,小于0表示兩個變量負相關,皮爾遜相關系數(shù)為0時,表示兩個變量沒有相關性。
調用MLlib計算兩個RDD皮爾遜相關性的代碼如下,輸入的數(shù)據(jù)可以是RDD[Double]也可以是RDD[Vector],輸出是一個Double值或者相關性矩陣。
皮爾遜相關系數(shù)在機器學習的效果評估中經(jīng)常使用,如使用皮爾遜相關系數(shù)衡量推薦系統(tǒng)推薦結果的效果。
3. 分層抽樣
分層抽樣先將數(shù)據(jù)分為若干層,然后再從每一層內進行隨機抽樣組成一個樣本。MLlib提供了對數(shù)據(jù)的抽樣操作,分層抽樣常用的函數(shù)是sampleByKey和sampleByKeyExact,這兩個函數(shù)是在key-value對的RDD上操作,用key來進行分層。
其中,sampleByKey方法通過擲硬幣的方式進行抽樣,它需要指定需要的數(shù)據(jù)大小;sampleByKeyExact抽取個樣本,表示期望獲取鍵為key的樣本比例,表示鍵為key的鍵值對的數(shù)量。sampleByKeyExact能夠獲取更準確的抽樣結果,可以選擇重復抽樣和不重復抽樣,當withReplacement為true時是重復抽樣,false時為不重復抽樣。重復抽樣使用泊松抽樣器,不重復抽樣使用伯努利抽樣器。
分層抽樣的代碼如下:
通過用戶特征、用戶行為對用戶進行分類分層,形成精細化運營、精準化業(yè)務推薦,進一步提升運營效率和轉化率。
4. 假設檢驗
假設檢驗是統(tǒng)計中常用的工具,它用于判斷一個結果是否在統(tǒng)計上是顯著的、這個結果是否有機會發(fā)生。通過數(shù)據(jù)分析發(fā)現(xiàn)異常情況,找到解決異常問題的方法。
MLlib目前支持皮爾森卡方檢驗,對應的函數(shù)是Statistics類的chiSqTest,chiSqTest支持多種輸入數(shù)據(jù)類型,對不同的輸入數(shù)據(jù)類型進行不同的處理,對于Vector進行擬合優(yōu)度檢驗,對于Matrix進行獨立性檢驗,對于RDD用于特征選擇,使用chiSqTest方法進行假設檢驗的代碼如下:
03 簡單的數(shù)據(jù)分析實踐
為了更清楚的說明簡單的數(shù)據(jù)分析實現(xiàn),搭建Spark開發(fā)環(huán)境,并使用gowalla數(shù)據(jù)集進行簡單的數(shù)據(jù)分析,該數(shù)據(jù)集較小,可在Spark本地模式下,快速運行實踐。
實踐步驟如下:
1)環(huán)境準備:準備開發(fā)環(huán)境并加載項目代碼;
2)數(shù)據(jù)準備:數(shù)據(jù)預處理及one-hot編碼;
3)數(shù)據(jù)分析:使用均值、方差、皮爾遜相關性計算等進行數(shù)據(jù)分析。
簡單數(shù)據(jù)分析實踐的詳細代碼參考:ch02\GowallaDatasetExploration.scala,本地測試參數(shù)和值如表1所示。
本地測試參數(shù) | 參數(shù)值 |
mode | local[2] |
input | 2rd_data/ch02/Gowalla_totalCheckins.txt |
▲表1 本地測試參數(shù)和值
1. 環(huán)境準備
Spark程常用IntelliJ IDEA工具進行開發(fā),下載地址:www.jetbrains.com/idea/,一般選擇Community版,當前版本:ideaIC-2017.3.4,支持Windows、Mac OS X、Linux,可以根據(jù)自己的情況選擇適合的操作系統(tǒng)進行安裝。
(1)安裝scala-intellij插件
啟動IDEA程序,進入“Configure”界面,選擇“Plugins”,點擊安裝界面左下角的“Install JetBrains plugin”選項,進入JetBrains插件選擇頁面,輸入“Scala”來查找Scala插件,點擊“Install plugin”按鈕進行安裝。(如果網(wǎng)絡不穩(wěn)定,可以根據(jù)頁面提示的地址下載,然后選擇“Install plugin from disk”本地加載插件),插件安裝完畢,重啟IDEA。
(2)創(chuàng)建項目開發(fā)環(huán)境
啟動IDEA程序,選擇“Create New Project”,進入創(chuàng)建程序界面,選擇Scala對應的sbt選項,設置Scala工程名稱和本地目錄(以book2-master為例),選擇SDK、SBT、Scala版本(作者的開發(fā)環(huán)境:Jdk->1.8.0_162、sbt->1.1.2、scala->2.11.12),點擊“Finish”按鈕完成工程的創(chuàng)建。
導入Spark開發(fā)包,具體步驟為:File->Project Structure->Libraries->+New Project Library(Java),選擇spark jars(如:spark-2.3.0-bin-hadoop2.6/jars)和本地libs(如:\book2-master\libs,包括:nak_2.11-1.3、scala-logging-api_2.11-2.1.2、scala-logging-slf4j_2.11-2.1.2)。
(3)拷貝項目代碼
拷貝源代碼中的2rd_data、libs、output、src覆蓋本地開發(fā)項目目錄,即可完成開發(fā)環(huán)境搭建。
除此之外,也可以通過Maven方式Import Project。
2. 準備數(shù)據(jù)
我們提供的數(shù)據(jù)格式:
用戶[user] 簽到時間[check-in time] 維度[latitude] 精度[longitude] 位置標識[location id]
數(shù)據(jù)樣例如下:
準備數(shù)據(jù)的步驟如下。
(1)數(shù)據(jù)清洗
在數(shù)據(jù)清洗階段過濾掉不符合規(guī)范的數(shù)據(jù),并將數(shù)據(jù)進行格式轉換,保證數(shù)據(jù)的完整性、唯一性、合法性、一致性,并按照CheckIn類填充數(shù)據(jù),具體實現(xiàn)方法如下:
(2)數(shù)據(jù)轉換
在數(shù)據(jù)轉化階段,將數(shù)據(jù)轉換成Vectors的形式,供后面數(shù)據(jù)分析使用。
3. 數(shù)據(jù)分析
通過簡單的數(shù)據(jù)分析流程,實現(xiàn)均值、方差、非零元素的目錄的統(tǒng)計,以及皮爾遜相關性計算,來實現(xiàn)對數(shù)據(jù)分析的流程和方法的理解。
簡單的數(shù)據(jù)分析代碼示例如下:
簡單數(shù)據(jù)分析應用運行結果如下:
本文摘編自《Spark機器學習進階實戰(zhàn)》,經(jīng)出版方授權發(fā)布。
延伸閱讀《Spark機器學習進階實戰(zhàn)》
點擊上圖了解及購買
轉載請聯(lián)系微信:togo-maruko
推薦語:科大訊飛大數(shù)據(jù)專家撰寫,從基礎到應用,面面俱到。
更多精彩
在公眾號后臺對話框輸入以下關鍵詞
查看更多優(yōu)質內容!
PPT?|?報告?|?讀書?|?書單
Python?|?機器學習?|?深度學習?|?神經(jīng)網(wǎng)絡
區(qū)塊鏈?|?揭秘?|?干貨?|?數(shù)學
猜你想看
干掉圍棋九段后,可定制計算能讓AI打敗程序員和芯片工程師嗎?
揭秘“21世紀最性感的職業(yè)”:數(shù)學、編程、溝通和商業(yè)技能一個都不能少!
一文讀懂量子計算機的前世今生,它的未來人類連想都不敢想
如何科學地評價妹子身材?三圍符合黃金比例是審美標準?你錯了!
Q:?數(shù)據(jù)分析的方法你掌握了多少?
歡迎留言與大家分享
覺得不錯,請把這篇文章分享給你的朋友
轉載 / 投稿請聯(lián)系:baiyu@hzbook.com
更多精彩,請在后臺點擊“歷史文章”查看
點擊閱讀原文,了解更多
總結
以上是生活随笔為你收集整理的你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以朋友圈为例,腾讯资深架构师揭秘鹅厂大数
- 下一篇: 谁说IT男没有审美?怀揣5000元巨款,