大數據與機器學習(1)

前面簡單介紹了一些統計學的簡單概念與基本理論,雖然統計學的應用範圍很廣、理論很多,但總的來說,統計學產生的結果非常依賴能夠採集到保質保量的數據、以及採用了優良的統計模型。那麼問題是,如果因為現實條件限制,採集到的數據質量不高怎麼辦?統計學理論短時間不可能有革命性的突破,那如果統計模型效果不夠好怎麼辦?

大數據,正是因為其可以彌補這方面缺點,而成為最近幾年開始流行的思維和方法。


1、經典統計與大數據

我們先來看經典統計,它的基本邏輯是:既然現實世界是沿著一定的規律運行的,那麼只要想辦法把這些規律找出來進行建模,這個問題就迎刃而解了。這其實是機械思維的邏輯,雖然能夠解決很多問題,但也有很多問題解決不了。

比如,如果想要根據某個國家某年的情況,預測來年的 GDP,能不能找到一個類似牛頓經典力學這樣的模型,放之四海而皆準地準確計算來年 GDP?做不到,因為現實世界太複雜了,即使這裡存在各種變數和 GDP 存在一個機械邏輯關係,現在的統計數據的能力、計算的能力也不可能找到這樣的模型。

因此,我們需要改變思維方式。設想一下,雖然人類很多行為背後都是有規律的,但是我們並不會把所有的這些規律都進行拆分、建模才能解決實際問題。比如一個人打籃球,能不能投進肯定和站的位置、出手高度、速度快慢、籃球形狀、風速大小等等都有關係,但沒有誰會在投籃之前窮盡所有這些變數計算一遍再出手。可見,很多問題並不只通過機械建模才能解決。

於是,人類避免了複雜的計算,而是通過自身很多次投籃得到的數據,通過大腦和肌肉記憶,歸納分析得到了如何出手比較容易投進的規律,並通過「直覺」反映到投籃行為上。其實,小到投籃運動、大到國家決策,不可能事事都依賴精確的模型計算來給出結論。能夠抓住主要矛盾,快速得出儘可能準確的結果,才是主要的目的。

這就是大數據的主要應用場景。在很多場景下,我們並不需要把事物背後的機械因果關係了解得那麼精確,而可以通過很多現象之間的聯繫來尋找答案。這就需要對儘可能多、儘可能全面的數據進行分析,所以從方法上,大數據方法需要改變傳統的依賴模型假設進行分析的模式,而轉向基於數據驅動去尋找規律的模式。

總的來說,有些場景下,我們會避免去尋找一個複雜的機械模型來儘可能解釋所有現象;而是在一定的範疇內,儘可能通過收集數據、綜合多個簡單的數據模型來得出一個儘可能準確的結論。這是經典統計方法和大數據方法背後更深層次的思維方式的區別。

這兩種方法各有各適用的場景,是一個互補的關係。


2、什麼是機器學習

在處理大數據的場景下,很多時候涉及的數據種類、維度會很多,那麼從中去提取有效信息就變得越來越困難。

為什麼 1997 年深藍電腦就擊敗了人類國際象棋高手,而直到 2016 年,機器才能夠戰勝人類圍棋高手?主要原因是計算複雜度的區別,國際象棋棋盤是 8x8 的,每一步的可能性相對較少;而圍棋的棋盤是 19x19 的,如果每個落子點可能有黑子、白子、空三種狀態,那麼所有棋盤狀態的可能性會有 3361 種,大概是 10 的 170 多次方,這個數據量如果用遍歷的演算法,根本不可能計算出來。因此,演算法的改進才至關重要,正是由於最近幾年在深度神經網路演算法方面的突破,才讓 AlphaGo 可以戰勝人類圍棋高手。

機器學習,主要包括各種從數據中有效提取信息的演算法,這些演算法的特點是可以通過對數據進行「學習」,自行歸納數據模型。這個過程很像人類學習的過程,比如現在應用很廣泛的圖像識別,大多使用深度神經網路演算法,給演算法提供很多圖片數據,告訴演算法這個圖片是貓、那個圖片是狗,當數據量越來越多的時候,演算法就能從中學習到很多規律,告訴你一張新的圖片到底是貓還是狗。

可以說,沒有機器學習,大數據的理念和方法很難落到實處,畢竟處理大量數據,從中尋找規律是一件非常困難的事情。你可以思考一下這個問題:只採用經典統計的方法,如何從很多圖片中,把貓和狗區分開?


3、學習結果的評估

機器學習演算法的結果是「模型」,這個模型是對數據中隱含規律的總結(注意這個「模型」和統計模型、機械模型的區別)。

很顯然,不同的學習演算法、或者學習演算法不同的參數,都可能產生不同的模型。我們希望模型儘可能地符合普遍的規律,這就要求模型最好不要「過擬合」,也不要「欠擬合」。

如果模型過擬合,那麼相當於模型為了儘可能靠近學習的數據(稱為訓練數據),而把很多可能不是泛化的特徵學習了進來,就好比訓練數據里的天鵝都是白色的,結果模型就認為天鵝應該是白色的,結果給了一張黑天鵝的圖片,就誤以為這是鴨子,這就是過擬合。而欠擬合則相反,表明模型中包含的數據規律不足,比如給了一張白鴨子的圖片,就誤以為這也是天鵝,這就是欠擬合。

評估方法

為了評估學習的結果是不是儘可能地符合了普遍的規律,就需要對模型進行評估,常用評估模型的方法有以下幾種:

  1. 留出法:從所有數據中隨機取出 2/3~4/5 作為訓練數據,用來生成模型;餘下的數據作為測試數據,用來評估模型。
  2. 交叉驗證法:把所有數據隨機分成 k 份,每次取其中 k-1 份數據作為訓練數據,用來生成模型;餘下的一份數據作為測試數據,用來評估模型。
  3. 自助法:對數據進行 m 次隨機採樣,將所有採樣到的數據作為訓練數據,用來生成模型;其餘數據作為測試數據,用來評估模型。

評估指標

通過這些方法,用學習得到的模型對測試數據進行計算,可以得到測試數據的計算結果。將計算結果和測試數據的真實值進行比較,有這樣四種可能的情況(這是拿一個二元分類問題作為例子,連續型的數據也可以類比,比如大於某個值即為真,反之為假)

  1. 真實值是真,計算值是真
  2. 真實值是真,計算值是假
  3. 真實值是假,計算值是真
  4. 真實值是假,計算值是假

這四種情況可以歸結到兩個指標:

查准率(Precision) P = ① / ( ① + ③ )

查全率(Recall) R = ① / ( ① + ② )

其實,查准率 P 表達的是「計算值為真的情況下,實際值的確為真的比例」,而查全率 R 表達的是「實際值為真的情況下,計算值為真的比例」 ,這兩個指標某種程度上是矛盾的,但我們又希望可以兼顧查全率 P 和查准率 R,這個時候可以用一個兼顧兩者的指標 F1 值,這個值越大代表模型性能越好:

F_1=frac{2PR}{P+R}

另外一種評估演算法效果的方法是通過考察在計算值為真的情況下,真實值到底是真還是假的概率大小,來進行綜合評估,這種方法使用這兩個指標:

真陽性率 TPR = ① / ( ① + ② )

假陽性率 FPR = ③ / ( ③ + ④ )

將這兩個指標繪製到一張圖上可以直觀地反映模型效果的好壞,這個圖稱為 ROC 曲線圖:

圖中的紅色直線是假設模型就是一個隨機猜想的模型,從而得到的結果。藍色曲線就是 ROC 曲線,代表了對模型的整體評價,ROC 曲線下的面積(ROC-AUC, Area Under Curve)越大,模型的效果越好。


推薦閱讀:

自黑,怎麼少的了我們搞人工智慧的
機器學習數學:最小二乘法
1-5 Unsupervised Learning
機器學習的定義

TAG:大數據 | 機器學習 |