【譯】每個管理者都應該了解的機器學習
本文翻譯自Mike Yeomans(哈佛大學經濟學系的博士後研究員)發表在《哈佛商業評論》的What Every Manager Should Know About Machine Learning,僅作交流學習,如需轉載請與我私信聯繫!
或許最近你聽過一種新演算法,可以控制汽車或發明菜譜,抑或是掃描圖片然後在人群中識別你的臉?似乎每周都有企業發現這種演算法的新用途,並能適用於他們遇到的新數據。去年Wired(譯者註:Wired是指美國《連線》雜誌)引用了前Google員工的說法「公司里的每件事都是由機器學習驅動」。
機器學習有著顛覆企業的巨大潛力,但主要是在機器人駕駛員和廚師中進行實踐應用。可以簡單的把機器學習看成統計學的一個分支,為大數據時代而生。那些想要從企業數據中獲取更多信息的管理層必須理解它是什麼,能做什麼,以及當用到它時應該注意什麼。
不僅是大數據,而是泛數據
海量數據要對企業起作用還是有一些挑戰。當然,大數據可能需要先進的軟硬體設備來管理和存儲。但機器學習是關於如何對數據進行分析的技術,並且需要適應數據集的大小。因為大數據不僅是「冗長的」,也是「廣泛的」。舉個例子,在一個電子表格里分析一個在線零售商的顧客資料庫。每個顧客有一行數據,如果有大量顧客,那麼這個數據集就會很長。然而,在這個數據集里的每個變數都有自己的屬性,我們在每個顧客身上都可以搜集到非常多的數據——支付歷史,瀏覽歷史,點擊量,評論內容——從列項甚至比行項更多的角度來說,這些數據通常也是廣泛的。大多數機器學習工具都被設計成能更好運用泛數據。
預測不是因果關係
最常見的機器學習工具應用是預測。這裡是一些商業預測的例子:
- 為顧客做個性推薦
- 預測顧客忠誠度
- 預測員工的未來表現
- 貸款申請人的信用風險評估
這些應用所處的環境都有共同特徵點。其中一個是,他們都是基於大量的變數(意思是他們需要泛數據)做出正確決策的複雜環境。他們也有一些成果可以證明預測有效——比如某個人是否點擊了被推薦的商品,或者一個顧客是否產生再次購買。總之,這是一個訴求精確預測的重要商業結論。
與傳統統計學不同的是,在機器學習中無需關注因果關係。這就是說,你並不需要知道當你改變環境時會發生什麼。取而代之的是你需要關注「預測」,這意味著你只需要一個可以做出正確決策的環境模型。就像是決定出門時是否需要帶傘:在我們決定是否帶傘之前必須預測天氣情況。天氣預報非常有用,但也有局限;天氣預報可能不會告訴你雲團如何工作,或者雨傘如何發揮作用,也不會告訴你如何改變天氣。對機器學習來說也是同樣的,個性推薦是預報人們的行為,這有一定的幫助,即使這些預報不會告訴你為什麼人們喜歡做這些事,或者如何改變他們的喜好。如果你記住這些局限,機器學習的價值就會更加明顯。
從噪音中分離出信號
目前我們探討了在什麼情況下機器學習會起作用。但在實踐當中它是怎樣被應用的呢?在一篇文章中概括這個問題是不可能的,但粗略來講有三個廣義的概念能涵蓋在機器學習演算法面紗下的大部分東西:「特徵提取」,決定在模型中使用什麼數據;「正則化」,決定在模型中數據如何加權;「交叉驗證」,測試模型的準確性。每一個因素都將幫助我們定義和從「噪音」(我們想要避免的,在未來可能不會再次發生的隨機關係)中分離「信號」(有價值的,我們想要學習的一致關係)。每一個數據集都混雜著信號和噪音,這些概念能幫助你從數據集中進行歸納,從而做出更好的預測。
特徵提取
「特徵提取」可以看做是找出模型變數的過程。有時也可以簡單理解為將所有原始數據轉儲,但事實上很多機器學習技術可以建立新的變數,這些變數被稱為「特徵」,「特徵」能夠在原始數據里,把分散在眾多變數中的重要信號聚集起來。在這個例子中,信號可能會被過度稀釋而沒有特徵提取的效果。面部識別就有特徵提取的例子,這些「特徵」是真實的面部特徵——鼻子長度,眼睛顏色,膚色,等等——這些都是通過圖像中的不同像素信息來計算的。在一家音樂商店,你可能會有不同(音樂)類型的特徵。比如你能夠將所有搖滾音樂組合成一個特徵,所有古典音樂組合成另一個特徵等等。
提取特徵有很多不同的方法,最有用的通常都是自動化的。這意味著不用手動挑選出每一張唱片的類型,你可以找到那些常常被相同人群購買的唱片「聚類」,然後從數據中學習它的「類型」(你甚至可能會發現原來不知道的新類型)。在文本數據中這樣的方法也很常見,基於出現在同一文檔中的單詞和短語,提取潛在主題。然而在建議特徵以及定義機器發現的「聚類」中,行業專家仍然非常有幫助。
(聚類是一個複雜的問題,有時工具只是被用來組織數據,而不是做預測。這種類型的機器學習被稱作「無監督學習」,因為沒有被用作為預測目標的測量結果。)
正則化
如何知道你已提取的特徵反映的是信號而非噪音呢?直觀講就是,你想讓你的模型安全的運轉,不要隨便下結論。這就叫做「正則化」。(同樣的理念反映在「剪枝演算法」,或是「特徵縮減」,或是「特徵選擇演算法」)為了說明我的觀點,可以想像一個最保守的模型:它可能會給每個人做出一樣的預測。舉個例子,在一家音樂商店裡,這意味著給每個人都推薦最流行的唱片,不管他們喜歡什麼類型。這種幾乎就是信號和噪音都不用理會。另一種極端是,我們可以建立一種複雜靈活的模型,能夠嘗試去包容用戶數據中的每一個小巧合。這個模型能夠同時從信號和噪音中學習。問題是如果在你的數據中有過多的噪音,這種柔性模型可能會比保守型更糟糕。這被稱為「過度擬合」:模型的學習模式在未來難以支撐下來。
正則化是一種分離柔性模型與保守模型之間的差異的方法,通常是通過增加「複雜化懲罰項」以防止模型過於簡單化來計算的。在一個模型中,這種懲罰項有兩種影響。一個影響是,「選擇器」,即演算法聚焦在少數包含最佳信號的特徵上,過濾掉其他信號。另一個影響是,「特徵縮減」,即演算法減少每一個特徵的影響,以便預測不會過分依賴任何可能是噪音的特徵。正則化的分支有很多,但最流行的一個被稱為「LASSO」,是一種結合了「選擇器」和「特徵縮減」的簡單方法,可能是大多數應用的最佳默認選項。
交叉驗證
一旦創建了模型,你如何確保它能做出正確預測呢?最重要的測試就是這個模型能夠精確計算樣例以外的數據,即這個模型能夠為以前從未見過的數據做出預測。這非常重要,因為即使你想用這個模型去做新的決策,也必須先保證它能做出可靠的決策。然而,在該領域做測試的代價可能會很高,通過使用你已經模擬好的預測精準度的測試數據,將會更加高效。在機器學習中使用「交叉驗證」的流程已經非常普遍。
想像一下我們正使用10000條顧客數據來建立一個預測模型,同時我們想知道對未來的顧客來說,這些預測將會有多精確。驗證精確性的一個簡單方法是將樣本隨機分為兩份:一份是9000條建立模型用的「訓練集」數據和一份1000條「測試集」數據,剛開始先放到一邊。一旦我們通過「訓練集」完成建模,作為熱身,我們可以看看這個模型在「測試集」中的預測結果如何。最重要的是,這個模型在建模完成之前從未見過測試集的結果。這才能保證測試集是真正的「held-out」數據。如果你不能區分這兩種數據,你將會高估你的模型,並且造成代價極高的錯誤。
使用機器學習時需要避免的幾個錯誤
機器學習中最常見的一個陷阱就是混淆預測模型和因果模型。人類幾乎無法知道如何改變環境來得到想要的結果。但是在預測問題中,因果關係不是優先考慮的:取而代之的是我們嘗試依靠一個穩定的環境去優化決策。事實上,環境越穩定,預測模型越有用。
區分「out-of-sample」(樣本外)和「out-of-context」(環境外)非常重要。測量出樣本外的精確性意味著如果我們從同一環境中挑選新數據,那麼模型就會很好地預測結果。但是如果是在新的環境中,就不能保證這個模型會一樣有用。舉個例子,一家線上商店可能會用在線支付的資料庫去為新用戶創建一個有用的模型。但是同樣的模型對實體店的用戶可能就沒有任何幫助了——即使是同樣的產品線。
光是想想龐大的數據能夠解決這個問題就非常吸引人。這不是假設。記住,通過將新案例與過去相似案例的大型資料庫作對比,這些演算法就能獲取他們的能量。當你嘗試在一個不同的環境中運行一個模型時,在資料庫中的案例也許不再相似,並且原始環境中什麼是優勢成了一個障礙。這個問題沒有簡單的答案。只要能考慮到限制因素,out-of-context(環境外)模型仍然比沒有模型要好。
雖然建模的部分工作能夠自動化,但仍需要人類適當的判斷輔助找出模型有用的部分。此外,也仍需大量批判性的思維去確保正則化和交叉驗證這類內置安全機制能被正確使用。
不過,記住備選方案(純粹的人工判斷)也有它自身的偏見和錯誤。綜合正確的科技和人工判斷,對嘗試解決大數據固有問題的決策者來說,機器學習能夠成為一種新的、有用的工具。希望在這條道路上不會再出現新的問題。
推薦閱讀:
※機器學習-異常檢測演算法(二):Local Outlier Factor
※【ML筆記】零基礎學懂機器學習(一)
※非監督學習演算法--K均值聚類
※視頻有哪幾種——大量高維稀疏數據聚類分析實戰