第一章 從小數據到大數據

過去很長時間,我們習慣采用問卷調查、現場采訪等方式去采集一些有代表性的數據,借以分析我們要解決的問題。這些方法在過去取得了很不錯的效果。隻是,隨著科技的迅猛發展,我們對數據處理和分析的要求越來越高,這些方法慢慢變得不太適合了,此時大數據應運而生,逐漸展示出驚人的力量。

一、大數據的過去

給你一個超市

如果現在你是一個超市的經營者,你會怎麼讓超市的利益最大化呢?

隨便想想都有很多辦法,如降低進貨成本、降低物流成本、精簡不必要的人員、優化銷售團隊、策劃必要的營銷活動、分析其他超市的策略、分析消費者需求……這些舉措中,有的可以直接降低成本提高利潤率,有的則間接地提高銷售數據。而其中最重要的,肯定是分析消費者需求。你會怎麼分析消費者的需求呢?

先看一個銷售的例子吧。

一個老太太走到路邊的水果攤,想買一些杏子,她先到了第一個水果攤。

老太太上前,問攤主:“你這個杏子怎麼樣?”攤主熱情地說:“我的杏子又大又甜,保證好吃啊。”老太太想了想,搖搖頭走了。攤主一臉失望,不知道為什麼老太太沒買他的杏子。

老太太走到了第二個水果攤,問道:“你這個杏子怎麼樣?”這位攤主也很熱情地回答說:“都挺好的啊,您想要什麼樣的?”老太太回答:“我想要那種比較酸的。”攤主很詫異,酸杏子誰吃啊。他眼珠一轉,笑眯眯地說:“大媽,您這是故意套我話的吧?我這兒絕對都是個賽個的甜,保證您買了不吃虧。”老太太回答說:“你這兒真沒酸的?”攤主信心十足地說:“有一個酸的我賠您一筐!”老太太搖搖頭,歎了口氣,又往前走了。自己這麼保證了老太太還是沒買,攤主別提多失落了。

老太太又走到了第三個水果攤。攤主一見到老太太便上前問道:“您想買點什麼?”老太太說:“我想買點酸的杏子。”攤主說:“我這兒倒是有酸杏子,可是我覺得您這樣年紀的人,吃得太酸了不太好呢。您保重身體啊!您要不搭配著買點兒別的,比如香蕉什麼的。”老太太高興地答複道:“不是我要吃,是我兒媳婦要吃。”攤主又問:“您兒媳婦要吃酸杏子啊,您這是要抱孫子了吧?”老太太高興地說:“是啊是啊,她剛懷孕沒多久,就想吃點酸的。”攤主笑著回答說:“酸兒辣女,您肯定能抱個大胖孫子!我這還有獼猴桃,含各種維生素,特別適合孕婦吃。您要不也來點?”就這麼一句又一句,老太太特別開心,最後老太太買了很多攤主推薦的水果走了。

在這個例子裏,很明顯,第三個攤主是最成功的。他的成功在哪裏呢?在於他問清楚了老太太的需求。在他與老太太的對話裏,他獲得了幾個信息:老太太需要酸杏子;酸杏子是給兒媳婦吃的;兒媳婦懷孕了。由這幾個信息,他便能從營養搭配等角度去推薦,既滿足了消費者本身的需求(酸杏子),又挖掘出消費者潛在的其他需求(各種營養)。

這樣的場景,我們在生活中可能經常遇到。可是在大型超市,商家並不是一對一地跟消費者溝通。更多的情景是,商家把物品放到貨架上後消費者自行選擇。在這種情況下,怎麼能夠知道消費者潛在的需求呢?

在一家超市中,人們發現了一個特別有趣的現象:尿布與啤酒這兩種風馬牛不相及的商品居然被擺在了一起。但令人不解的是,這一奇怪的舉措居然使尿布和啤酒的銷量大幅增加了。這可不是一個笑話,而是一直被商家所津津樂道的發生在美國沃爾瑪連鎖超市的真實案例。實際上,這不是美國人的幽默細胞所致,而是數據的魔力。這個發現為商家帶來了大量的利潤,但是沃爾瑪是如何從多如牛毛卻又雜亂無章的數據中發現啤酒和尿布銷售之間的聯係的呢?這又給了我們什麼樣的啟示呢?

沃爾瑪的商品種類非常多,它有一套非常複雜的方法對所有商品的銷售情況進行統計。沃爾瑪通過對每件商品每天的銷售數據統計發現,每到周末啤酒和尿布的銷量就異樣的好,這兩者之間似乎有什麼關聯。但是,沃爾瑪並沒有去找這兩個銷售數據之間的聯係,而是立即做出決定,將這兩樣商品擺放在一起,結果這兩樣商品銷售量都大幅增加。顯然,這個決定是正確的。那麼原因是什麼呢?

有人分析稱,因為在美國,周末電視台一般會轉播球賽,而看球賽的大部分是男人。男人們都會在家看球賽的時候拿上一罐啤酒,受到冷遇的妻子會出門逛街或和閨密小聚,照料小寶寶的重擔就留給了留守的丈夫。就這樣,沃爾瑪把嬰兒尿布放在啤酒銷售區旁,男人往往會在超市買啤酒的時候順手拿起尿布。

也有人說,是因為在美國家庭裏,一般都是丈夫掙錢養家,妻子照顧孩子。忙於照顧孩子的妻子經常會囑咐丈夫在下班回家的路上為孩子買尿布,而丈夫在買尿布的同時又會順手購買自己愛喝的啤酒。

這兩個原因都說得通。那麼,真正的原因是什麼呢?

你是不是開始思考這個問題了?打住!別忘了,我們假設的是你是一個超市的經營者,你要解決的是讓超市利益最大化,達到這個目的就行了,你不是研究這些現象的科研人員,沒有必要去搞清楚這些問題後麵的複雜原因。如果你有一輛汽車,你更需要學習的是駕駛而不是汽車製造及修理。同樣,如果你有足夠多的數據並分析出結果,你需要做的是利用結果去提高盈利而不是搞清楚結果背後的原因。

作為一個超市的管理人員,你肯定會對沃爾瑪如何進行統計分析各類銷售數據感興趣。可是,數據到底是什麼呢?我們不妨回顧一下數據的曆史。

19頭牛的難題

數據是什麼?

一年有365天;真空中的光速是299792458米每秒;正常人心跳每分鍾大約75次(60~100次);2013年11月15日國內汽、柴油標準品最高供應價格每噸分別為 8715元和7890元;2012年度北京市職工月平均工資為5223元,比上年增長11.8%……

可以說,我們的生活裏到處都是數據。

數據是對客觀事物的符號化的表示,是未經加工的、用於表示客觀事物的原始素材,如圖形符號、數字、字母等。換句話說,數據是通過物理觀察得來的事實和概念,是關於物理世界中的地方、事件、其他對象或概念的描述。在計算機科學裏,數據被定義為所有能輸入到計算機並被計算機程序處理的符號的介質的總稱。

數據具有數值屬性、物理屬性,這一點和數字是不同的。很多人會把數據和數字混為一談,其實,可以這麼說,數字是一種沒有物理屬性的數據。

比如,1+1=?是數字計算,結果是2,這個是沒有問題的。如果我們加入物理屬性,1個土豆+1頭牛=?由於土豆和牛的物理屬性不同,我們沒法求出它們的和,總不能說答案是土豆燒牛肉吧?

在計算機問世之前,人們處理的數據一般都是有關數字的數學問題,比如家喻戶曉的分牛問題便是一個很經典的例子。

一位老人養了19頭牛。臨終前,他對3個兒子立下遺囑:“家中有19頭牛,老大可以分一半,老二可以分得1/4,老三則隻能分到1/5。牛不得殺死分肉,不得賣錢後分錢。”說完老人便去世了。3個兒子犯愁了,19頭牛怎麼分一半、1/4、1/5啊?每個人都想多分一點兒,每個人又不肯吃一點兒虧,於是爭吵了起來。

一位智者想到了辦法,他笑眯眯地對老人的3個兒子說:“我有辦法。”然後他把自己家的一頭牛牽來,和19頭牛放到一起,又對他們說:“現在這裏有20頭牛,老大分一半,也就是10頭;老二分1/4,也就是5頭;老三分1/5,也就是4頭。剩下還有一頭是我牽來的,我牽回去好了。”3個兒子終於解決了這個問題,喜笑顏開,重歸於好。

這是一個很小的有關數據的故事,日常生活中,我們經常會遇到各種數據。一般來說,我們都是通過數學來解決這些問題的:五險一金的計算問題;話費套餐的計算問題;銀行利息的計算問題……我們每天都在和各式各樣的數據打交道,也許我們對此已經習以為常、熟視無睹。

最開始,我們的生活裏都是很小的數據:部落裏20頭獵物如何分給50個人;采集的200個漿果一半給部落首領家族後其他人怎麼分;兩個部落間的土地如何平分……這一類的問題,隨著人類數學水平的提高,慢慢地得到了解決。同時,人們也遇到越來越棘手的問題:一個人每周買一注彩票,20年內中500萬的概率有多大;一個人父母都是A型血,孩子是O型血的可能性有多大;一塊完全不規則的土地,如何劃分成5等份,等等。比如中國古代就有一些很經典的數學題:

1.八萬三千短竹竿,將來要把筆頭安,管三套五為期定,問君多少能完成?

用現代的話說就是:有83000根短竹竿,每根短竹竿可製成3個筆管或者5個筆套。怎樣安排筆管或筆套的短竹的數量,使製成的筆管和筆套正好數量匹配。

2.有井不知深,先將繩三折入井,井外繩長四尺,後將繩四折入井,井外繩長一尺。問井和繩長各幾何?

3.今有門廳一座,不知門廣高低,長杆橫進使歸室,無奈門狹四尺,隨即豎杆過去,也長二尺無疑,對角斜進恰好齊。請問高寬各幾?

4.100個大人和小孩共吃100個饅頭,已知大人每人吃3個,小孩3人合吃一個。大人和小孩各有多少?

5.今有蒲生一日,長三尺;莞生一日,長一尺。蒲生日自半,莞生日自倍。問幾何日而長等?

6.甲趕群羊逐草茂,乙拽肥羊一隻隨其後;戲問甲及一百否?甲雲所說無差謬,若得這般一群湊,再添半群小半群,得你一隻來方湊,玄機奧妙誰猜透?

7.遠望巍巍塔七層,紅光點點倍加增。共燈三百八十一,請問各層幾盞燈?

可以說,這些數學題很多都是古人遇到的各種問題的再現。

我們不僅發明了數字用以儲存數據,還發明了不同的計量單位、不同的進製。一分鍾有60秒,一天有24小時,一秒等於100毫秒,等等。在不同的領域裏,二進製、八進製、十進製、十六進製、六十進製等發揮著不同的作用。

在十進製的世界裏,人們用以記錄數字大小的數字符號有10個,分別是從0到9,數數的方式是0、1、2、3、4、5、6、7、8、9、10……而在計算機裏使用的是二進製,記錄數字大小的符號隻有0和1,數數的方式是0、1、10、11、100、101、110、111、1000……再比如,中國有個成語叫作“半斤八兩”,用以表示旗鼓相當,水平差不多,這是因為中國古代的秤采用的是十六進製,一斤等於十六兩。半斤和八兩,確實是旗鼓相當的。

從古至今,數學的發展一直伴隨著數據處理的問題成長著。

數學,起源於人類早期的生產活動,為中國古代六藝之一,亦被古希臘學者視為哲學的起點。史前的人類除了學會以數字統計物品的數量外,也學會了數一些抽象的東西的數量,比如天數、季節、年數。古代的許多文物如石碑、石刻、泥版都證實了這種說法。更進一步則需要寫作或其他可記錄數字的係統,如符木或印加帝國用來儲存數據的奇普。曆史上曾有過許多有分歧的記數係統。

從曆史時代的一開始,數學的主要原理是為了做稅務和貿易等相關計算,為了了解數字間的關係,為了測量土地,以及為了預測天文事件而形成的。這些需要可以簡單地被概括為數學對數量、結構、空間及時間方麵的研究。

到了16世紀,算術、初等代數以及三角學等初等數學已大體完備。17世紀變量概念的產生使人們開始研究變化中的量與量的相互關係和圖形間的相互變換。在研究經典力學的過程中,微積分的方法被發明。隨著自然科學和技術的進一步發展,為研究數學基礎而產生的集合論和數理邏輯等也開始慢慢發展。

數學從古至今便一直不斷地延展,且與科學有豐富的相互作用,並使兩者都得到好處。數學在曆史上有著許多的發現,並且直至今日都還處在不斷的發現中。

數學本身作為一種工具,對數據問題的解決起到了最關鍵的作用。隨著數學的發展,以前不能夠解決的數據問題逐漸得到了解決。

從現場調查說起

英國曆史上爆發過幾次瘟疫。一個半世紀前,英國接二連三地暴發霍亂,成千上萬人被瘟疫奪去了生命。倫敦的布勞德大街(現在的布勞維克大街)附近,3天內有127人被瘟疫奪走了生命,霍亂暴發後的前10天就有500人喪生。

霍亂在當時是致命的疾病,人們既不知道它的病源,也不了解它的治療方法。因此,每次一爆發霍亂,就有成百上千的人死去。那個時代,人們普遍認為霍亂是“癘氣”(或稱“惡氣”)所致。有位年輕醫生親眼目睹了這一幕幕慘劇,憂心如焚。這位醫生叫約翰·斯諾,他醫術精湛,在倫敦非常有名,以至於維多利亞女王都請他當私人醫生。約翰·斯諾想要挑戰並解決這個問題,他知道,在找到病源之前,霍亂是無法控製的。

霍亂之所以能致人死亡,當時有兩種看法,斯諾對這兩種推測都很感興趣。第一種看法是霍亂病毒在空氣中繁殖,它像一股危險的氣體到處漂浮,直到找到病毒的受害者為止。第二種看法是人們在吃飯的時候把這種病毒引入體內。病毒從胃裏發作而迅速殃及全身,患者會很快死去。

約翰·斯諾推測第二種說法是正確的,但他需要證據證明自己的推斷。因此,在1854年倫敦再次爆發霍亂的時候,他開始著手準備他的調查。當霍亂在貧民區迅速蔓延的時候,他就開始收集資料。在兩條特定的街道上,霍亂病情很嚴重,以致10天之內就死去了500多人。他決心要查明其中的原因。

首先他在一張地圖上標明了所有死者居住的確切地方。這給他提供了一條說明霍亂起因的很有價值的線索。許多死者是在寬街的水泵附近(特別是這條街上的16、37、38和40號)居住。約翰·斯諾還注意到有些住戶(如寬街上的20號和21號以及劍橋街上的8號和9號)卻並沒有感染霍亂而死亡。他沒有預料到這一點,於是他做了進一步調查。他發現,這些未被感染的人都在劍橋街7號的酒館裏打工,而酒館為他們提供免費啤酒喝,因此他們沒有喝水泵抽上來的水。就這一點來看,霍亂的流行要歸罪於飲用水了。

其次,約翰·斯諾調查了這兩條街的水源情況。他發現,水是從河裏打來的,而河水被倫敦排出的髒水汙染了。約翰·斯諾馬上叫寬街上驚慌失措的老百姓拆掉水泵的把手。這樣,水泵就用不成了。民間的說法是當人們把抽水機的手柄移走後霍亂就隨之停止了。約翰·斯諾在此之前就曾經表明,霍亂是由病菌而不是由氣團傳播的。

在倫敦市的另一個地方,他從兩個與寬街爆發的霍亂有關聯的死亡病例中找到了證據。有一位婦女是從寬街搬來的,她特別喜歡寬街的水,每天都要派人從水泵打水運到家裏來。她和她的女兒喝了這種水,都得了霍亂而死去。有了這個額外的證據,約翰·斯諾就能夠肯定地宣布這種被汙染了的水攜帶有致病病菌。

為了防止這種情況的再度發生,約翰·斯諾建議所有水源都要經過檢驗。自來水公司接到指令,不再讓人們接觸被汙染的水。最後,霍亂就這麼消失了。

斯諾醫生所開創的現場調查方法標誌著傳染病流行病學的開始。後來,亞曆山大·朗繆爾醫生把這門學問引入美國。作為美國疾病預防與控製中心的首席流行病專家,朗繆爾在1951年創建了流行病學情報所,用於訓練“疾病偵探”。他把這個項目設計成一種“國民防禦”的形式,並向外界兜售,用以抵製冷戰期間生物武器的威脅。流行病學情報所在許多如脊髓灰質炎、鉛中毒等疾病的預防、控製方麵發揮了主導作用。該組織的成員自豪地戴著一枚翻領別針,上麵有一個穿孔的皮鞋圖案,象征著疾病監測活動的汗水與艱辛。

朗繆爾的辦公室裏懸掛著他所敬仰的3位偶像的肖像:約翰·斯諾、埃德溫·查德威克爵士和查爾斯·蔡平。查德威克爵士跟斯諾一樣,是英國19 世紀推動公共衛生改革的先驅。他提倡居民們用水管將水輸送到家裏,這種觀念在當時是很新鮮的。蔡平在羅得島州普羅維登斯市當了48 年的衛生員,被大家稱為“城市衛生官員主任”。他在19 世紀80 年代推動了美國的公共衛生運動,而且擁護在公共衛生管理中使用科學原則。

朗繆爾到處宣講合作的價值,鼓勵那些來自心理學、人類學、社會學及其他學科領域的人參加流行病學情報所培訓。到今天為止,已有3000多名官員畢業於此;最近的班上大約有30% 的學員不是醫生。流行病學情報所培養出來的官員不僅以分析的細致見長,而且具備實際的眼光,他們因集兩種優點於一身而著稱於世。

約翰·斯諾的現場調查方法和朗繆爾的“疾病偵探”其實是小數據時代使用的典型方法,長期以來,人們使用類似的方法成功地解決了各種問題。直到現在,這些方法依然在各個領域廣泛應用。

二、大數據的曆史背景

小數據的失敗

數據分析這種辦法許多人都用過,效果卻各有差別。同樣是數據挖掘,很多案例顯得很成功,而失敗的例子也不少。曆史上,龐涓也是一個足智多謀的將領,但最終他的數據分析讓他在孫臏麵前一敗塗地。這又是怎麼回事呢?

龐涓和孫臏都是戰國時期著名人物鬼穀子的學生。相傳鬼穀子學問淵博,見解高超,兵書戰策無不通曉,對星象相術極有研究,龐涓和孫臏都在他那裏學到了不少東西。後來,自覺學成的龐涓下山後在魏國當上將軍,不料魏王得知孫臏的才能,讓龐涓請孫臏下山一同輔佐他。

心胸狹窄的龐涓知道自己才能遠在孫臏之下,於是在請孫臏來魏國之後,設下毒計陷害孫臏,讓魏王相信孫臏私通齊國,結果使孫臏淪為階下囚,還身受髕足之刑。最後,孫臏靠裝瘋賣傻和一係列計策終於脫身到了齊國,以自己卓越的軍事才能大敗龐涓,並將龐涓亂箭射死。

在最後一戰裏,龐涓率兵攻打韓國,弱小的韓國向齊國求救。齊王采納了孫臏的建議:“深結韓之親,而晚承魏之弊。”意思就是首先向韓表示必定出兵相救,促使韓國竭力抗魏。當韓處於危亡之際,再發兵救援,從而“尊名”“重利”一舉兩得。韓國得到齊國的允諾後,人心振奮,竭盡全力抵抗魏軍進攻,雖然是五戰皆敗,但也讓魏國軍隊吃虧不少。韓國再次向齊國告急,齊王看準時機,派出大軍援助,孫臏則擔任軍師,居中調度。魏國本來勝利在望,結果遇到齊國來救援,於是龐涓一生氣,決定暫時放過韓國,轉身來打齊國軍隊。龐涓帶著10萬軍隊氣勢洶洶地撲向齊軍,企圖同齊軍一決勝負。

那時的魏國軍隊是非常強大的,無論是軍隊規模還是單兵作戰能力都比齊國強大,連荀子都說過:“齊之技擊不可遇魏之武卒。”麵對強敵,孫臏胸有成竹,針對魏兵強悍善戰,素來蔑視齊軍的實際情況,判斷魏軍一定會驕傲輕敵、急於求戰、輕兵冒進。很顯然,孫臏對龐涓是很了解的。在認真研究了戰場地形條件之後,孫臏定下減灶誘敵,設伏聚殲的作戰方針。

戰爭的進程完全按照齊軍的計劃展開。齊軍與魏軍剛一接觸,就立即佯敗後撤。為了誘使魏軍進行追擊,齊軍按孫臏預先的部署,施展了“減灶”的高招,第一天挖了10萬人煮飯用的灶,第二天減少為5萬灶,第三天又減少為3萬灶,製造在魏軍追擊下齊軍士卒大批逃亡的假象。不知情的龐涓似乎很喜歡進行數據分析,根據灶的數目,他自然認為齊軍已經少得不堪一擊。

接連3天追下來以後,根據灶數的數據分析結果對龐涓越來越有利。龐涓認定齊軍鬥誌渙散,士卒逃亡過半,於是丟下步兵和輜重,隻帶著一部分精銳騎兵,晝夜兼程追趕齊軍。

孫臏根據魏軍的行動,判斷魏軍將於日落後進至馬陵一帶。馬陵一帶道路狹窄,樹木茂盛,地勢險阻,實在是打伏擊戰的絕好處所。於是孫臏利用這一有利地形,選擇齊軍中一萬名善射的弓箭手埋伏於道路兩側,規定到夜裏以火光為號,一齊放箭,並讓人把路旁一棵大樹的皮剝掉,在上麵書寫“龐涓死於此樹之下”字樣。