第2章 理解數據
同樣是一個數字,在數據敏感的人眼中與對數據不敏感的人眼中是完全不一樣的。如果公司年收入8000萬元,在數據敏感的人眼中看到的不僅僅是這個數字,還包括數據背后隱藏的信息:8000萬元是由哪幾個業務收入構成,哪一個業務收入占主要部分,最高業務收入所對應的消費人群和地區又是哪些等。
所以,做數據分析,重點不在數據,而在數據敏感,就是能清楚數據異常背后的原因,這需要經驗,也需要你的思考和執行力。
2.1 數據是什么
數據是什么?大部分人會含糊地回答說,數據是一種類似電子表格的東西,或者一大堆數字,有點技術背景的人會提及數據庫或數據倉庫。然而,這些回答只說明了獲取數據的格式和數據的存儲方式,并未說明數據的本質是什么,以及特定的數據集代表著什么。人們很容易陷入一種誤區,當需要數據的時候,通常會得到一個計算機文件,很難把計算機輸出的信息看作其他任何東西。然而,透過數據現象看本質,就能得到更多有意義的東西,就能講一個故事。
近年來,隨著物聯網和大數據技術的成熟,人的行為可以簡單地作為數據存儲起來,如果能從這些存儲的數據中推導出與用戶購買行為相關的規則,那么將會顛覆商業世界里一直以來所遵循的某類經驗,而在數據分析的指導下,將會打開新的商業局面。
舉個日常生活的例子,理解數據是什么。大多數人會經常稱體重,稱重的時候,體重數值并沒有多大意義(我們并不能說60kg比較好,61kg就糟糕了),然而,根據這些觀測數據,可以完成以下事情:
1)根據自己的性別、年齡、身高等其他數據,推斷理想的健康體重,并將其設定為目標值。
2)通過長期跟蹤測量體重,測得體重隨時間變化的觀測數據,并將過去暴飲暴食等行為與體重變化聯系起來,從而反省自己的行為。
3)通過收集擁有理想身材的人的運動和飲食生活等方面的數據,效仿他們的生活方式。
在商業領域里也是一樣,人們通常會通過觀測數據來推測出某種因果關系,再用這種因果關系預測未來。越來越多的企業為這種工作增設一個專門的職位,即數據分析師。
數據不僅僅是數字,它描繪了現實的世界,與照片捕捉了瞬間的情景一樣,數據是現實世界的一個快照。
數據、信息、知識之間存在一定的區別和聯系,如圖2.1所示。

圖2.1 數據、信息、知識轉化關系
從圖2.1可知:
1)分析報告源于數據,而不是知識。知識在數據轉化為信息的過程中發揮著支撐作用。在知識的作用下,數據的原有結構與功能發生了改變,并轉化為有語義的數據,即信息。對信息進行綜合就可以得到有價值的信息。
2)知識的利用具有普遍性,貫穿整個轉化過程。從數據變成信息的過程需要知識,從信息變成分析報告的過程同樣也需要知識。
把轉化模型應用于實踐,可以更加清楚地發現數據、信息與分析報告之間的轉化關系,如圖2.2所示。

圖2.2 數據、信息、知識轉化關系應用
2.2 數據所依存的背景
背景信息可以完全改變你對某一個數據集的看法,它能幫助你確定數據代表著什么以及如何解釋。在確切了解了數據的含義之后,你的理解會幫你找出有趣的信息,從而帶來有價值的可視化效果。
離開背景數據就毫無用處了,使用數據而不了解除數值本身之外的任何信息,就好比拿斷章取義的片段作為文章的主要論點引用一樣。這樣做或許沒有問題,但卻可能完全誤解說話人的意思。
首先必須了解何人、如何、何事、何時、何地以及何因,即元數據,或者說關于數據的數據,然后才能了解數據的本質是什么。
何人(Who):相對于曾經歪曲事實、壞人名聲的名人八卦網站,大報的引述會更有分量。類似地,相對于隨機的在線調查,聲譽好的信息源通常意味著更高的準確性。
如何(How):人們常常會忽略方法論的內容,因為方法多數是復雜的且面向技術受眾的,然而,大致了解怎樣獲取你感興趣的數據還是值得的。
如果數據是你自己收集的,那就沒問題,但如果數據由一個素昧平生的人提供,而你只是從網上獲取到的,那如何知道它有多好呢?無條件相信,還是調查一下?我們不需要知道每種數據集背后精確的統計模型,但要小心小樣本,樣本小,誤差率就高;同時也要小心不合適的假設,比如包含不一致或不相關信息的指數或排名。
有時候,人們創建指數來評估各國的生活質量,常把文化水平這樣的指標作為一項因素。然而有的國家不一定有最新的信息,于是數據收集者干脆就使用十幾年前的評估。于是問題就來了,因為只有當十年前的識字率與今天相當,這樣的指數才有意義,但事實卻未必如此(很可能不是)。
何事(What):最終目的是要知道自己的數據是關于什么的,圍繞在數字周圍的信息是什么。你可以跟學科專家交流、閱讀論文及相關文件。
在統計學課程中,通常會學習到一些分析方法,例如假設檢驗、回歸分析和建模,因為此時的目標是學習數學和概念。這是脫離現實的,當我們接觸到現實世界的數據,目標便轉移到信息收集上來了,關注點從“這些數字包含了什么”轉移到了“這些數據代表現實中的什么事情?數據合理嗎?它又是如何與其他數據關聯的”等上面。
用相同的方法對待所有的數據集,用千篇一律的方法和工具處理所有數據集,這是一種嚴重的錯誤。
何時(When):數據大都以某種方式與時間關聯。數據可能是一個時間序列,或者是特定時期的一組快照。不論是哪一種,都必須清楚知道數據是什么時候采集的。幾十年前的評估與現在的不能等同。這看似顯而易見,但由于只能得到舊數據,于是很多人便把舊數據當成現在的對付一下,這是一種常見的錯誤。事在變,人在變,地點也在變,數據自然也會變。
何地(Where):正如事情會隨著時間變化,數據也會隨著城市和國家的不同而變化。例如,不要將來自少數幾個國家的數據推及整個世界。同樣的道理也適用于數字定位。來自Twitter 或Facebook 之類網站的數據能夠概括網站用戶的行為,但未必適用于物理世界。
為何(Why):最后必須了解收集數據的原因,通常這是為了檢查一下數據是否存在偏頗。有時人們收集甚至捏造數據只是為了應付某項議程,應當警惕這種情況。
收集數據后的首要任務就是竭盡所能地了解自己的數據,這樣數據分析和可視化會因此而增色,才能把自己知道的內容傳達給讀者。然而,擁有數據并不意味著應當做成圖形并與他人分享。背景信息能幫助你為數據圖形增添一個維度—— 一層信息,但有時背景信息意味著你需要對信息有所保留,因為那樣做才是正確的。
最后再回到“數據到底代表什么” 上來。數據是對現實生活的抽象表達,而現實生活是復雜的。但是,如果能收集到足夠多的背景信息,那么至少也能知道該怎樣努力去理解它。
2.3 數據維度
數據分類是幫助人們理解數據的另一個重要途徑。圖2.3給出了從三個維度分析數據特征的方法。

圖2.3 數據的維度
1)從數據的結構化程度看,可分為結構化數據、半結構化數據和非結構化數據,三者之間的區別見表2.1。
表2.1 結構化數據、半結構化數據和非結構化數據對比

在小數據時代,結構化數據處理占主要地位,隨著大數據技術的成熟,處理非結構化數據是重點。
2)從數據的加工程度看,可分為裸數據、專家數據、信息和價值,四者之間的關系如圖2.4所示。

圖2.4 裸數據、專家數據、信息和價值之間的關系
這里強調一下,裸數據、專家數據、信息和價值是相對的,取決于分析目標和個人對數據的理解。專家數據的質量對數據分析的結果影響甚遠,獲取專家數據是整個數據分析過程中最困難、最耗時、最具挑戰的環節,指標設計篇專門討論專家數據生成的一些技術。
3)從數據的抽象程度看,可分為內容、元數據和數據對象,三者之間的關系如圖2.5所示。

圖2.5 內容、元數據和數據對象之間關系
內容可以是結構化數據、半結構化數據和非結構化數據;元數據是關于數據的組織、數據域及其關系的信息,簡言之,元數據就是關于數據的數據,即關于數據的知識。元數據的基本特點主要有:
①元數據是關于數據的結構化的數據,它不一定是數字形式的,可來自不同的資源。
②元數據是與對象相關的數據,此數據使其潛在的用戶不必先具備對這些對象的存在和特征的完整認識。
③元數據是對信息包裹(Information Package)的編碼的描述。
④元數據包含用于描述信息對象的內容和位置的數據元素集,促進了網絡環境中信息對象的發現和檢索。
⑤元數據不僅對信息對象進行描述,還能夠描述資源的使用環境、管理、加工、保存和使用等方面的情況。
⑥在信息對象或系統的生命周期中自然增加元數據。
⑦元數據常規定義中的“數據”是表示事務性質的符號,是進行各種統計、計算、科學研究、技術設計所依據的數值,或是數字化、公式化、代碼化、圖表化的信息。
元數據具有以下優點:
①自描述。公共語言運行庫模塊和程序集是自描述的。模塊的元數據包含與另一個模塊進行交互所需的全部信息。元數據自動提供COM中接口定義語言(IDL)的功能,允許將一個文件同時用于定義和實現。運行庫模塊和程序集甚至不需要向操作系統注冊。運行庫使用的說明始終反映編譯文件中的實際代碼,從而提高應用程序的可靠性。
②設計。元數據提供所有必需的有關已編譯代碼的信息,以供從用不同語言編寫的PE文件中繼承類。開發時可以創建用任何托管語言(任何面向公共語言運行庫的語言)編寫的任何類的實例,而不用擔心顯式封送處理或使用自定義的互用代碼。
對數據內容與其元數據進行封裝或關聯后得到的更高層次的數據——數據對象。數據對象和數據內容是相對的,下層數據是上層數據對象的數據內容,上層數據內容是下層數據內容的數據對象。例如,在R語言中,factor是字符數據的數據對象,同時又是list數據對象的數據內容。
2.4 數據敏感
數據分析應該是快樂的。但是現實中,對于很多從業者而言,數據分析是痛苦的。快樂都源于對數據敏感,來自于自己的無知。無知產生好奇,好奇心帶來驚喜,驚喜帶來快樂。舉幾個具體的例子。
1)對車聯網的無知,對車聯網數據進行相關分析帶給你的驚喜是:基于數據定義的急加速急剎車是如此有趣。
2)對互聯網征信的無知,對其數據挖掘告訴我,原來一個人的簡歷中就包含著信用信息,這是一個大大的驚喜。
3)對廣告行業的無知,刺激你去關心:廣告費到底浪費在哪里?而搜索引擎營銷的數據表明:搜索文本中,一個小小的空格,能夠產生巨大的廣告效果差異。
4)對社交網絡的無知,你會好奇,一個人的社交地位,會如何影響他的行為?基于SNS數據的數據表明,社交中處于重要位置的人,有可能更加忠誠。
這樣的例子可以舉出很多,對數據敏感不在數據,不在統計軟件,不在分析方法,而在于自己的無知,以及無知所產生的好奇心!
數據敏感度是一個人對數據的主觀感覺,能幫助你從眾多數據中挑選出想要的數據,甄別出不一樣的數據點。不妨做一個小測試,在空格內填補缺失的數據:
1,3,6,__,15,21 (答案:10)
1,3,7,__,31,63 (答案:15)
數字敏感度就是極短時間內看出空格應該填什么數字的能力。數據敏感度在數據分析中必不可少,不可或缺。如果對每天眾多的數據報表缺乏敏感度,最后只能淪為做做“報表”。
既然數據敏感度如此重要,那么數據敏感度能否培養呢?
舉一個例子:
表2.2所示為某公司1月A~H八個指標,請1分鐘內觀察表2.2,找出5個異常。
一眼看去密密麻麻全是數字,看著一定很頭暈,沒有結合實際業務的數據實在枯燥無味。仔細觀察可以發現這樣幾個問題:
1)A與B列除了1月19日缺失,其他日期全都有數值。
2)C與D、E與F、G與H,兩兩組合要么同時缺失,要么同時有效。
3)1月20日到1月31日的數值與1月1日到1月12日的相同。
4)A與B、C與D、E與F、G與H在90%情況下是相同的。
5)1月14、的各項指標明顯低于其他日期。
……
像上面的異常數據查找還可以很多,每個人從不同角度都可能有不同的發現,這里并沒有標準答案。同樣地,這里需要解釋一下,異常數據并不是說這個數據不正常,由于業務的交叉性和相互影響,異常的性質有可能是規律的性質。就好像在啤酒和尿不濕的案例中每次啤酒的銷量變好的時候尿不濕的銷量也變好,當我們看到這兩個產品的銷量時,這種規律性也可以被稱為異常變動數據。
表2.2 某公司1月數據

既然異常數據分析是從眾多的數據中找出規律和不同,那這件事情是不是人人可為,把數據拿過來看就好了?答案是否定的,這里涉及對數據敏感度的問題,什么是數據敏感度呢?數據敏感度可以類比一個人對音樂的感覺,有些人樂感好,什么歌一學就會唱,有些人樂感不好,學唱歌很困難。數據敏感度是一個人對數據的感覺,有些人對數據敏感度高,有些人對數據敏感度低。
任何人盯著表2.2一直看都會無所適從,其實這里也有替代的方案,那就是圖表。圖2.6顯示了指標A的取值分布。

圖2.6 指標A的取值分布
很容易看出1月7日、1月14日、1月19日、1月26日是異常還是隨機波動?判斷的依據一方面來自于對數據的敏感度,依照此項指標的歷史波動范圍,1月19日的波動遠超歷史波動范圍了。另一方面,更深一層次地使用六西格瑪理論,計算這項指標歷史正常波動均值μ和方差σ,如果當天的數據波動超過了μ±3σ,即可視當天數值為異常數值。
下面介紹一個統計學工具:控制圖與控制線。控制圖就是對生產過程的關鍵質量特性值進行測定、記錄、評估并監測過程是否處于控制狀態的一種圖形方法。根據假設檢驗的原理構造一種圖,用于監測生產過程是否處于控制狀態。它是統計質量管理的一種重要手段和工具。
控制圖上有三條平行于橫軸的直線:中心線、上控制線和下控制線,并有按時間順序抽取的樣本統計量數值的描點序列。中心線、上控制線和下控制線統稱為控制線,通常控制界限設定在±3標準差的位置。中心線是所控制的統計量的平均值,上下控制界限與中心線相距數倍標準差。若控制圖中的描點落在上控制線和下控制線之外或描點在上控制線和下控制線之間的排列不隨機,則表明過程異常,如圖2.7所示。

圖2.7 控制圖示意
提出疑問與發現問題和解決問題是極其重要的。對數據敏感的人,都具有善于提問題的能力,眾所周知,提出一個好的問題,就意味著問題解決了一半。提問題的技巧高,可以發揮人的想象力。相反,有些問題提出來,反而挫傷了我們的想象力。
常規的提問包括:為什么(Why);做什么(What);何人做(Who);何時(When);何地(Where);如何(How);多少(How much)。
如果提問題中常有“假如……”“如果……”“是否……”這樣的虛構,就是一種設問,設問需要更高的想象力。
對數據不敏感,看不出毛病是與平時不善于提問有密切關系的。對一個問題追根刨底,有可能發現新的知識和新的疑問。阻礙提問的因素,一是怕提問多,被別人看成什么也不懂;二是隨著年齡和知識的增長,提問欲望漸漸淡薄。如果提問得不到答復和鼓勵,反而遭人譏諷,結果在人的潛意識中就形成了這種看法:提問多、挑毛病是擾亂別人的行為,最好緊閉嘴唇,不看、不聞、不問,但是這恰恰阻礙了人的創造性的發揮。
2.5 數據質量
一般而言,可以把質量數據分析劃分為6個階段:
第1個階段是只依靠經驗,不考慮數據。很多發展還不錯的中小企業實際上并不依賴數據,主要依靠人員的經驗來處理生產中遇到的各種問題。這些中小企業往往很難擴大他們的市場,尤其是一旦資深員工退休或者辭職后,企業的質量往往出現大幅度的回撤。
第2個階段是單看數字。正如0.2節中看到的情書例子,單看數字并不能夠看清楚事情的本質,而如果解釋數字不恰當的話,數字往往還會誤導管理人員。
第3個階段是開始整合數據,使用圖表來解釋數據。相比于數字,大部分人對圖形更加敏感,如果使用合適的圖表來解釋數據,通常更能解釋問題的本質。大部分企業能做到第3個階段就已經很不錯了,但更進一步的是第4個階段。
第4個階段是加入統計調查的數據,采用描述性的統計量來刻畫數據。一個具體的例子是在工廠中主動去調查測量生產線中的良品率、停機率、產出比例等數據,這些數據只是用來描述生產過程的好與壞。
第5個階段是通過具體取樣數據,例如,如果遇到了若干個不良品,主動去測量不良品中的具體質量和特性,而不是通過計數的方式統計良品率,這樣采樣得到的數據相比于做加法的統計調查數據包含更多的信息量。
第6個階段是利用統計推斷,使用置信區間等統計方法來量化質量的好壞。通過統計預測的方法來實現質量的控制和預防不良品的出現等。大部分企業還沒有到達第6階段的層次。
在小數據時代,研究人員最困擾的問題往往是缺乏數據。但隨著傳感器、收集數據方法的進步,大量的測量數據自動地被計算機記錄下來,如何保證這些數據的質量,主要有以下幾個維度:
1)完整性(Completeness)。完整性用于度量哪些數據丟失了或者哪些數據不可用。
2)規范性(Conformity)。規范性用于度量哪些數據未按統一格式存儲。
3)一致性(Consistency)。一致性用于度量哪些數據的值在信息含義上是沖突的。
4)準確性(Accuracy)。準確性用于度量哪些數據和信息是不正確的,或者數據是超期的。
5)唯一性(Uniqueness)。唯一性用于度量哪些數據是重復數據或者數據的哪些屬性是重復的。
6)關聯性(Integration)。關聯性用于度量哪些關聯的數據缺失或者未建立索引。
2.6 理解數據要注意的問題
不要把分析質量建立在數據豐富的基礎上,實際工作中將會發現:
1)數據永遠不夠。
2)質量永遠太差。
3)需求永遠很急。
4)假設永遠很多。
想辦法利用手頭數據,結合業務場景才是有效的辦法。
2.6.1 不要對完美數據的盲目執著
當要做一個數據分析的時候,人們常常說:“你怎么沒有這個數據?你怎么沒有那個數據?你要是有XXX數據就好了”。這就是對完美數據的盲目執著,這不是說我們不需要努力獲得更多數據。而是說,我們必須了解,沒有任何實際問題的數據是“完美”的。所有的實際問題都是在“不完美”數據的支撐下完成的。我們必須要習慣于同不完美數據和諧相處,要學會欣賞不完美數據的完美。不要執著于對完美數據的妄想,而要享受不完美數據帶來的快樂。數據不完美的另一個原因是特征工程不到位。
2.6.2 小樣本數據也能做數據分析
我們知道樣本越隨機、樣本量越大,收集到的數據就越靠譜。但是,有的時候這并不容易做到。
如果沒法獲得大量樣本,就只能通過觀察來彌補不完美的數據;如果還無法控制這個數據收集的方式,實驗性研究能讓我們避免混淆因素的干擾,使統計結果更精確、更穩定。
(1)觀察性研究
這個例子叫作“消失的彈孔”,這是在抽樣技術里面一個比較著名的例子。在第二次世界大戰期間,美軍不希望自己的飛機被敵人的戰斗機擊落,因此,要為飛機披上裝甲。但是裝甲又會增加飛機的重量,飛機的機動性就會減弱,而且會更耗油。防御過度和防御不足都會帶來問題!
所以他們想找到一個最優方案,在飛機的某些部位使用裝甲。那么到底是哪些部位呢?軍方發現,美軍的飛機在歐洲上空與敵機交火后返回基地時,飛機上留有的彈孔分布得并不均勻,機身上的彈孔比引擎上的多。所以軍方的結論是,應該把裝甲放在彈孔多的機身部位。
最幸運的是,軍官們擁有一個統計小組,小組組長叫作Abraham Wald,也就是著名的Wald 檢驗的創造者。這個倔強的組長完全不同意軍官們的方案,他認為需要加裝甲的部位不應該是彈孔多的地方,而應該是彈孔少的地方,也就是引擎。后來美軍將Wald的建議迅速付諸實施,挽救了眾多的美軍戰機。
這也體現了本書一直在強調的讓數據產生價值的理念。打贏戰爭不能僅靠天時地利人和,如果你被擊落的飛機比對方少5%,消耗的油料低5%,補兵給養多5%,付出成本僅為對方的95%,那你就很可能成為勝利方。這個就是數據所產生的價值。
那Wald的高明的地方在什么地方呢?其實他的結論就基于一個理論:返航的飛機并不是能夠代表所有飛機的隨機樣本。這個樣本是有偏的,而且我們沒有辦法把它做到無偏。怎么辦呢?
既然這是一個有偏的樣本,那么它偏在哪兒呢?為什么會偏呢?理論上來講,一架飛機飛在空中,它各部分中彈的概率應該大體是均等的,但是能夠返航的飛機引擎罩上的彈孔卻比其余部位少,那么那些失蹤的彈孔去哪兒了?——沒錯,在那些未能返航的飛機上。這說明什么?說明引擎如果中彈將是致命的,很可能被擊中就墜落了,而機身被打得千瘡百孔的情況下仍能返回基地。這充分說明了機身可以經受得住打擊破壞,而引擎不行。
所以,即使樣本是不合理的,我們還是可以利用收集到的不完美的數據通過分析得出正確的決策。其實這種“消失的彈孔”的現象,在現實生活中無處不在,在統計上稱其為 “幸存者偏差”。但并不是所有的人都會像Wald一樣熟悉它,所以人們經常會憑直覺得到相反的結論。
(2)實驗性研究
上面的例子是一個觀察性研究,也就是說我們沒有辦法控制數據采集的方式,只能去觀測結果。換句話說,有些數據并不是能夠隨機得到的。遇到這種情況,在分析的時候就需要想辦法去處理這些不完美的數據。
而又有些時候,問題不出在無法隨機,而出在預算有限,沒條件得到很大的樣本量。這在工科領域比較常見,尤其是那種做一次實驗需要大型設備、消耗巨大的人力物力財力。這種情況應該怎么辦呢?下面來看一個非常淺顯的例子。
假設需要研發一種做運動鞋的新材料,看是否比舊的材料更耐磨損。又假設研發成本非常高,只能提供4雙樣品鞋,因此找來了8個孩子來試穿,4雙新材料4雙舊材料。讀者的第一反應是不是“這個樣本量太小了”?
也許有人會將孩子分成兩組,4個穿新材料的鞋,4個穿舊材料的鞋,讓他們天天穿,穿倆月,然后測量磨損程度。如果磨損程度不一樣,如何知道真的是新的材料耐磨損,還是分到新材料的那組孩子恰好比較不愛運動,所以沒有經常地用鞋呢?也就是說,“材料”這個因素很可能與這個“孩子的活躍程度”有關。這就是樣本太小所導致的潛在混淆因素,如果樣本夠大,就基本上不可能這么恰好了。
那么在樣本容量無法擴大的前提下,有沒有什么辦法來消除掉這個混淆因素呢?我們可以給每一個孩子選一只腳穿新材料的鞋,另一只腳穿舊材料的鞋,這樣每一組新舊材料的對比都是基于同一個孩子的,就不存在他喜不喜歡運動的問題了。這在統計上叫作“完全隨機區組設計”。
這個例子和上一個“消失的彈孔”案例之間的區別在于:在這個例子中,我們其實是有辦法去設計整個實驗,去控制收集數據的方式的,所以它不再是觀察性研究,而是實驗性研究。
在遇到這種問題的時候,可以從設計實驗的階段開始,在給定的預算條件下,看看怎么樣得到的數據不會存在或者盡可能少地存在混淆因素,這是我們首要考慮的問題。
- Redis應用實例
- iOS and OS X Network Programming Cookbook
- 達夢數據庫性能優化
- 企業級數據與AI項目成功之道
- 跟老男孩學Linux運維:MySQL入門與提高實踐
- 深入淺出 Hyperscan:高性能正則表達式算法原理與設計
- 金融商業算法建模:基于Python和SAS
- 信息學競賽寶典:數據結構基礎
- 淘寶、天貓電商數據分析與挖掘實戰(第2版)
- INSTANT Android Fragmentation Management How-to
- Gideros Mobile Game Development
- 數據庫查詢優化器的藝術:原理解析與SQL性能優化
- SQL Server 2008寶典(第2版)
- 數據中心經營之道
- 云工作時代:科技進化必將帶來的新工作方式