《機器學習實戰》作者Peter Harrington:如何成為一位資料科學家(圖靈訪談)

盼盼姐發表於2013-09-23

Peter Harrington,擁有電氣工程學士和碩士學位,他曾經在美國加州和中國的英特爾公司工作7年。Peter擁有5項美國專利,在三種學術期刊上發表過文章。他現任HG Data首席科學家。如果說LinedIn跟蹤的是人和人之間的商務往來,HG Data則是致力於挖掘公司間的商業往來。他曾是Zillabyte公司的創始人和首席科學家,在此之前,他曾擔任2年的機器學習軟體顧問。Peter在業餘時間還參加程式設計競賽和建造3D印表機。

enter image description here

English version

機器學習似乎比其他電腦科學學科都要難,特別是對於數學不太好的程式設計師而言。你對這些程式設計師有什麼樣的建議呢?

我建議應該先自學基本的概率、統計,以及線性代數。你不需要學一個學期那麼長的課,這些基礎知識就會讓你有很大收穫。有很多線上資源,比如Kahn academy視訊。(我在56.com和Kahn academy找了一下有很多英文的,也有一些中文的。)也有一些比較容易起步的書,我比較熟悉有美國英文版的“teach yourself”(自學)系列, “statistics for dummies”(傻瓜統計), “probability refresher”(概率補習),“statistics demystified”(統計解惑)等等。

我其實認為這裡面其實很有商機。Kahn academy視訊很不錯,因為它們都很短,但遺憾的是這些視訊都是英文的。我看見的中文線性代數視訊都很長。如果你能做出像Kahn academy那樣的中文視訊,我覺得是會非常受歡迎的。

如何進階學習機器學習?對於初學者是否有一個類似於路線圖的東西?你有什麼推薦書單嗎?

我會讀Witten 和 Frank所著的《資料探勘:實用機器學習工具與技術》,這裡面涉及的數學很少,但是又對普通演算法做了很好的介紹。我覺得緊接著就該讀Tan, Steinbach, 以及Kumar的《資料探勘導論》

當然,這些書都很厚,如果你想馬上就搞明白一些東西,估計就不想讀這些大部頭了。如果要把某個演算法弄明白,我會在網上找很多教程。比如Adboost演算法,我認為多讀一些不同的教程比只讀一個,深入鑽研要好很多。

最後我覺得應該多動手玩玩例項。問問你自己:如果我改變這個資料,結果會是怎麼樣的呢?

在真實案例中,資料預處理可能要比演算法還要重要,你要不要考慮在新版《機器學習實戰》加入資料預處理技巧和例項?

我完全同意,我的大部分時間都是用來做資料預處理。我會在未來加入資料預處理的內容。我不知道這裡面會不會有什麼神奇的捷徑,有時候我面對的就是一堆苦活兒。我還要說:你一定要把能自動化的都自動化,這樣就會節省很多你未來的工作量。

對於有些人來說“演算法”才是機器學習真正有趣的地方,但是機器學習裡面總有一些苦活累活不那麼有意思,比如資料預處理。你是怎麼完成這些“不那麼有趣”的工作的?

當然,肯定有無聊的工作,所以你一定要把這部分工作自動化,這樣你就不需要重複做這些無聊的工作了。這樣做也會讓你變成一個更好的軟體開發者。

能向我們介紹一些機器學習方面的開源專案嗎?

我現在能想到最好的就是Scikit-learn (http://scikit-learn.org/stable/) 了。這是用Python寫的專案,用到了Scipy 和 Numpy。

資料科學家被評為世界上最火的工作之一,你認同嗎?您本人作為一個資料科學家,有什麼可以和我們分享的經驗嗎?要成為一個資料科學家需要有什麼條件?

我認為資料科學家現在確實很好找工作。什麼是資料科學家呢?我認為資料科學家是介於統計學家和軟體工程師中間的一種工作。公司、個人、NPO,甚至運動隊都需要根據資料來做決策。他們需要可以分析資料的人。這需要我之前提過的兩種條件。人們不需要單純的統計學家,這些人可能對於爭論自己到底用不用貝葉斯定理更感興趣,人們需要的是真正能做實事的人。

所以我也建議大家多動手一些東西。這是什麼意思呢?創造一些專案,收集資料,預處理資料,然後做一些資料分析,展示資料,最後向公眾展示這些資料。如果你做了很多這樣的事情,那麼你就有一個可以用來向你未來老闆或者其他人展示的檔案夾。幾乎我書裡的每個例子都可以用來做成一個網站或者智慧電話app,這些都是你可以示人的資本。

人工智慧的發展到了瓶頸期,而機器學習似乎是可以打破這個僵局的領域。你認為是什麼原因造成了機器學習這樣的發展步伐?

相比於物理學或者電氣工程這樣的學科,人工智慧可能是很年輕的。一個年輕的學科中的很多課題和原則都是被不斷發現和精煉的。很多時候,研究專案被當做事實一樣擺出來,我認為這就是“人工智慧承諾得太多,實現得太少”的真正原因。

我覺得這裡面一個很好的例子就是很多學者想要用神經網路再造哺乳動物大腦。這讓我想起來早些時候人們試圖通過造出外形很像鳥翅膀的翼來製造飛機,其結果只能是飛起來把自己的骨頭砸碎了。我不是要批判任何在做神經網路方面工作的人:這就是個試驗,有一些有用的應用,但是這些解決不了我們的問題也沒法造出有感知的機器。問題是這些試驗被當做了事實放在教科書裡、電影裡,以及新聞裡,但它們還僅僅是試驗。

回到那個飛機的例子。當人類第一次知道動力飛行時,他們是因為要解決一個小任務而做出來的,而不是要建造什麼機器鳥。我覺得同樣的方法也促成了人工智慧上的一些成功。2010-2011年的大突破:IBM的Watson計算機、Google的自動駕駛汽車,以及iPhone的Siri語音識別,甚至還有一個公司成功地用人工智慧寫出了新聞報導。這些都不是試驗,這些都是生產線上的商品,被無數的人所使用。人工智慧純化論者會認為這些只是被用來完成明確任務的工具,而不是智慧機器。

回到我們的問題,我認為機器學習是很實用的工具,可以用來解決很具體的問題,但是人工智慧是一個高高在上的目標,很難達到。這也就是人工智總讓人感到失望,而機器學習總會為我們帶來驚喜的原因。

很多大(資料)公司,比如Google, Facebook 和 Baidu都投入很多精力在深度學習上。你認為深度學習會在未來取代“人工特性+機器學習”的方法嗎?

不,我不認為深度學習會取代人工特性+機器學習。有很多領域,深度學習確實很擅長,比如識別圖片。但是仍然有很多領域現存演算法的表現更勝一籌。

在深度學習之後,機器學習的下一個熱點是什麼?

我不知道,也許你可以基於學術或者技術會議的論文提交來創造一個預測模型來告訴我下一個與研究熱點。

很多人認為語言會是大資料和機器學習的未來主要功用。讓我們舉一個具體的例子,如果要預測一個公司的收入,你會用什麼模型?

這點說得很對。我知道大的零售商會有一整個團隊來做銷售的預測。如果他們真能準確預測銷量,那他們就會省下一大筆錢。如果要預測一家公司的收入,我會首先用迴歸+邏輯迴歸。邏輯迴歸讓我們可以隨時開啟或關閉操作,這對於相關事情發生以及金錢入賬這樣的事來說都是一個很好的模型。

請問7.3節的著名的45問題到底是什麼?

不好意思,我應該在書中說明地更清楚來著,這也來自於一個英文論壇上的問題。

45問題指的就是資料都在一條呈45°角的線上,或者以y=x的形式存在。這是關於如何為這類資料製造一個簡單分類器的問題。

這為什麼會是一個問題呢?如果我們有一個類:在y = x這條線上的1,我們還有第二個類:在y = x + 6這條線上的0。

那麼現在在X軸(垂直軸)上選擇一個值,這個值可以讓所有屬於1類的數值在其一邊,而所有屬於0類的數值在其另一邊。再試著在Y軸(水平線)上找一個值。你無法找到一個簡單的 X &Y組合把點分成兩類,這就是45問題。

一個支撐向量機,或者邏輯迴歸對於這樣的資料不會有什麼問題。你也可以用一個資料轉換,和一個決策殘根來輕鬆應對這個資料。

你打算想讓《機器學習實戰》變得更加有趣嗎?比方說,可以在每一章中加入一個日常生活中的例子。

這聽起來是個不錯的主意。


《機器學習實戰》作者Peter Harrington:如何成為一位資料科學家(圖靈訪談)

番外:
Peter除了在業餘時間參加程式設計競賽和建造3D印表機,他現在的主要業餘生活都獻給了這個可愛的寶貝。他向生活在九月的北京的朋友們問好。他即將開始《機器學習實戰》第二版的寫作,這本書的中文版本將有望和英文同步出版。


更多精彩,加入圖靈訪談微信!

相關文章