摘要:分析數(shù)據(jù)前,一定要盡可能多的進(jìn)行數(shù)據(jù)可視化!可視化!可視化!
數(shù)據(jù)分析的好習(xí)慣
1. 分析數(shù)據(jù)前,一定要盡可能多的進(jìn)行數(shù)據(jù)可視化!可視化!可視化!做exploratory data analysis
我上過的幾乎所有的應(yīng)用性的統(tǒng)計(jì)課程上的老師都會(huì)強(qiáng)調(diào)這一點(diǎn)。這個(gè)習(xí)慣對(duì)于數(shù)據(jù)科學(xué)家、統(tǒng)計(jì)學(xué)家來說估計(jì)是最最實(shí)用的。
在實(shí)際的數(shù)據(jù)分析過程中,數(shù)據(jù)可視化可以揭示很多insights:從選擇什么樣的模型,選擇哪些feature建模,到如何分析結(jié)果,解釋結(jié)果等等。
給一個(gè)很著名的例子, Anscombe's quartet (安斯庫(kù)姆四重奏):這個(gè)例子包含四組數(shù)據(jù)。每組數(shù)據(jù)有11個(gè)(x, y)數(shù)據(jù)樣本點(diǎn)。
四組數(shù)據(jù)樣本里x的均值方差全相等,y的均值方差基本相等,x與y的相關(guān)系數(shù)也很接近。
導(dǎo)致的結(jié)果是,四組數(shù)據(jù)線性回歸的結(jié)果基本一樣。但是,這四組數(shù)據(jù)本身差別很大。如下圖。
如果不做可視化,簡(jiǎn)單跑一個(gè)線性回歸,我們只能得到同樣的回歸線。
數(shù)據(jù)可視化后,很直觀的,左上圖是傳統(tǒng)的線性回歸;右上圖需要high-order nonlinear term;左下圖x和y是線性關(guān)系,但是有outlier;右下圖x和y沒有線性關(guān)系,也有outlier, etc.
每一個(gè)數(shù)據(jù)科學(xué)家都應(yīng)該熟悉各種圖的畫法,更重要的是,不同的圖如何反映不同的信息以及面對(duì)不同的數(shù)據(jù)類型時(shí),應(yīng)該選擇哪種圖才能最好的揭示數(shù)據(jù)里蘊(yùn)含的信息。
為此,強(qiáng)烈推薦關(guān)于R里ggplot包的教程:ggplot2 - Elegant Graphics for Data Analysis
當(dāng)然另一方面,如果數(shù)據(jù)量太大維度太高,數(shù)據(jù)可視化做起來就比較困難。這時(shí)候就需要一些經(jīng)驗(yàn)技巧了。
2.跑完程序得到模型結(jié)果時(shí),一定提醒自己:任務(wù)只完成50%,分析,驗(yàn)證,解釋結(jié)果才是根本
很多時(shí)候,我們以為寫完code跑完程序就完事了。能做到這一步只能算是一個(gè)合格的data analyst。這離數(shù)據(jù)科學(xué)家,統(tǒng)計(jì)學(xué)家還差遠(yuǎn)了。
分析,驗(yàn)證,解釋結(jié)果才是根本! 這個(gè)過程更需要data sense, domain knowledge, and statistical expertise.
在拿到結(jié)果的時(shí)候,一定要多問自己為什么。
模型assumptions是否滿足?結(jié)果是否make sense?能否解答research question?
特別當(dāng)結(jié)果不符合expectation時(shí),要么有新發(fā)現(xiàn),要么有錯(cuò)誤!如果有錯(cuò),錯(cuò)在哪里?
如果模型假設(shè)不成立,如何修正?是否有outliers,如何處理?
或有missing values,missing的機(jī)制是啥樣的(missing at random, completely at random, or NOT at random)?
是否有multicollinearity?
數(shù)據(jù)收集是否有bias (如selection bias)?
建模是否忽略了confounding factors (Simpson's paradox)?
3. 養(yǎng)成story-telling的習(xí)慣
把分析結(jié)果跟你的boss或者collaborator講!務(wù)必讓他們明白!這個(gè)太需要技巧了, 特別是當(dāng)你的collaborator是layperson的時(shí)候。
不會(huì)說只能等著被虐,哪怕analysis做的再好!
數(shù)據(jù)科學(xué)的好習(xí)慣
1、永遠(yuǎn)不要輕信自己的分析結(jié)果,多用業(yè)務(wù)和常識(shí)去檢驗(yàn)
很多時(shí)候,我們的分析都是含有一些潛在的假設(shè),而在分析過程中被忽略。比如最經(jīng)典的案例是在1948年,蓋洛普錯(cuò)誤地預(yù)測(cè)了杜威能擊敗杜魯門而當(dāng)選總統(tǒng)。
原因是多方面的,但是抽樣中的潛在不平均是不可否認(rèn)的!再比如有個(gè)人分析結(jié)果得到剛畢業(yè)的??频钠骄劫Y比同專業(yè)的本科要高,就找一堆理由來說明這個(gè)結(jié)論。
但是領(lǐng)導(dǎo)說這個(gè)不符合常識(shí),打回去重新分析。之后發(fā)現(xiàn)是因?yàn)闃颖灸信壤痪鈱?dǎo)致的。
所以,我們不要輕信自己的分析結(jié)果,尤其是不能給自己的分析找正向的理由!
因?yàn)橹挥心阏依碛?,總?huì)能給自己的結(jié)論找到一堆理由。有多從實(shí)際出發(fā),如果不符合常識(shí),那就更要多方面論證,才能發(fā)聲!否則,就會(huì)是個(gè)笑話!
2、閱讀人文:數(shù)據(jù)科學(xué)不僅是一門科學(xué),也是一門藝術(shù)
數(shù)據(jù)科學(xué),你可以認(rèn)為是一門探索人性的科學(xué)。
我經(jīng)常跟周圍做數(shù)據(jù)或者IT人的說的一點(diǎn)是,因?yàn)槲覀兪亲鰯?shù)據(jù)或者寫一些代碼的,這里的數(shù)字是1就是1,不會(huì)是2,TRUE了就不會(huì)是FALSE,所以做久了,人容易偏執(zhí),不會(huì)享受生活,那就無法把藝術(shù)引進(jìn)!
這里也舉一個(gè)例子,美國(guó)有一家大型商場(chǎng),業(yè)務(wù)經(jīng)理想能否預(yù)測(cè)一個(gè)客戶是否是孕婦,以此來針對(duì)性的營(yíng)銷呢?
他們的數(shù)據(jù)科學(xué)家通過分析找到了一個(gè)模型來預(yù)測(cè)。那么他們是直接把孕婦相關(guān)產(chǎn)品推薦給客戶嗎?
不是的,因?yàn)檫@個(gè)數(shù)據(jù)科學(xué)家不僅是數(shù)學(xué)好還是一個(gè)社會(huì)學(xué)家,他說如果全部推薦相關(guān)產(chǎn)品,那么客戶會(huì)覺得自己的隱私被侵犯,甚至?xí)X得反感,所以他的策略是把真正想要推薦的東西放在一堆其他東西里。
當(dāng)然,這里只是簡(jiǎn)寫,實(shí)際過程非常有趣。
3、了解行業(yè)信息和業(yè)務(wù)信息
這一點(diǎn)非常重要。分析和挖掘,最終都是要落到具體的業(yè)務(wù)上來的。所以做數(shù)據(jù),不能脫離業(yè)務(wù)和行業(yè)規(guī)律。了解行業(yè)信息,能夠讓你在分析的時(shí)候更加的接地氣、更好的把握分析框架!
尤其是,聯(lián)系剛才說的第一點(diǎn),你積累的行業(yè)信息和業(yè)務(wù)信息都會(huì)幫助你檢驗(yàn)?zāi)愕姆治?,同時(shí)讓你更還的認(rèn)識(shí)到什么樣的分析是有價(jià)值的分析。
對(duì)于業(yè)務(wù)中的亂七八糟的各種概念更是要深入理解,不能停留在表面。有時(shí)候,一個(gè)業(yè)務(wù)概念理解失誤(比如0是否有參與計(jì)算),會(huì)導(dǎo)致分析出完全相反的結(jié)論。
據(jù)說,數(shù)據(jù)分析會(huì)導(dǎo)致經(jīng)驗(yàn)累積加速,簡(jiǎn)單的說一般業(yè)務(wù)人員工作10年的工作經(jīng)驗(yàn),數(shù)據(jù)分析5年就能掌握。
4、好奇心與多溝通
愛因斯坦說過,提出一個(gè)好問題比找到一個(gè)合適的答案更重要!
在我個(gè)人經(jīng)驗(yàn)中,按照既定的一些分析框架分析,一般都只是完成了既定的任務(wù)而已。但是,你對(duì)分析中的一些異常多問幾個(gè)為什么,很容易找到一些業(yè)務(wù)的突破口。
比如你分析銷售業(yè)績(jī),你發(fā)現(xiàn)一個(gè)人,成單比例總是比別人高,甚至有時(shí)候比特別有經(jīng)驗(yàn)的人還高,你就問問為什么呢?否則,你就只能發(fā)現(xiàn)這個(gè)數(shù)字而已。
后來,你通過分析和直接詢問等方法,發(fā)現(xiàn)他發(fā)現(xiàn)了新注冊(cè)的用戶容易成單,所以每天盯著新用戶呢!
當(dāng)然,這樣的例子是比較多的,比如為什么要讓用戶自己選擇一些信息呢?然后一個(gè)數(shù)據(jù)產(chǎn)品就出來了。
5、多實(shí)踐與多走一步
這里涉及到模型了,也是我個(gè)人做的比較多的地方。
在數(shù)值計(jì)算(或者任何其他工程領(lǐng)域)里,知道一個(gè)東西的基本算法和寫出一個(gè)能在實(shí)際中工作得很好的程序之間還是有一段不小的距離的。
有很多可能看似無關(guān)緊要的小細(xì)節(jié)小 trick,可能會(huì)對(duì)結(jié)果帶來很大的不同。
當(dāng)然這樣的現(xiàn)象其實(shí)也很合理:因?yàn)槔碚撋系墓ぷ髦云琳且驗(yàn)樽プ×耸挛锏闹饕?,忽?ldquo;無關(guān)”的細(xì)節(jié)進(jìn)行了簡(jiǎn)化和抽象,從而對(duì)比較“干凈”的對(duì)象進(jìn)行操作,在一系列的“assumption”下建立起理論體系。
但是當(dāng)要將理論應(yīng)用到實(shí)踐中的時(shí)候,又得將這些之前被忽略掉了的細(xì)節(jié)全部加回去,得到一團(tuán)亂糟糟,在一系列的“assumption”都不再嚴(yán)格滿足的條件下找出會(huì)出現(xiàn)哪些問題并通過一些所謂的“engineering trick”來讓原來的理論能“大致地”繼續(xù)有效。
這些東西大概就主要是 Engineer 們所需要處理的事情了吧?這樣說來 Engineer 其實(shí)也相當(dāng)不容易。這樣的話其實(shí) Engineer 和 Scientist 的界線就又模糊了,就是工作在不同的抽象程度下的區(qū)別的樣子。
在工作和平時(shí)學(xué)習(xí)練習(xí)中,都是這樣。很多人問的太多,做的太少,導(dǎo)致眼高手低。比如你問用Ensemble,會(huì)怎么怎么樣呢?對(duì)哇,很多人能問這個(gè)問題,但是就是不去試一試。
再比如,有偏樣本的問題,有過抽樣、欠抽樣、閾值調(diào)整等等方法,都可以去自己實(shí)踐一下,才會(huì)有更加直觀的認(rèn)識(shí),否則只停留在討論階段是沒用的。多走一步,每個(gè)問題都是自己成長(zhǎng)的階梯。
對(duì)于其他的,比如責(zé)任心、細(xì)心啥的,這些是其他職業(yè)也要求的,而專業(yè)性,這個(gè)就更不用說了。