機器學習:探索雜亂無章的世界
版權聲明
本文首發於微信公眾號
沁機邁可思(zw_life-long_doing)
無需授權即可轉載
轉載時請註明出處
說到機器學習(Machine Learning),我相信對多數人是比較陌生的。
直到前兩年,在AlphaGo接連打敗圍棋界的頂尖棋手李世石和柯潔之後,機器學習才逐漸熱了起來。但同時,也有很多人疑問:機器學習僅僅是運用在下棋上嗎?
當然不是。機器學習能運用的領域太多了,其中最著名的一個事件就是「啤酒與尿布」的故事,在1998年的《哈佛商業評論》上面可以找到詳細的報道。
故事產生於20世紀90年代的美國沃爾瑪超市中,當時的超市管理人員在分析銷售數據時發現了一個令人難以理解的現象:在某種特定的情況下,「啤酒」和「尿布」兩件看上去毫無關係的商品會經常出現在同一個購物籃中。而且,經過調查發現,這種現象多出現年輕父親的身上。
這是因為美國有嬰兒的家庭中,一般是母親在家中照看嬰兒,年輕的父親前去超市購買尿布。在購買尿布的同時,往往會順便為自己買一些啤酒。倘若這位父親在賣場只能買到兩件商品中的其一,那他很有可能會跑到另一家賣場,直到同時買到啤酒和尿布為止。恰巧,這一獨特的現象被沃爾瑪發現,開始在賣場嘗試將啤酒與尿布擺放在相同的區域,意外讓這兩項產品的銷售量提升了30%。
當然,這個故事也是有技術的支撐。
1993年,美國的學者Agrawal提出通過分析購物籃中的商品集合,從而找出商品關聯關係的關聯演算法——Aprior演算法。這個演算法可以根據商品之間的關係,找出客戶的購買行為。
除此之外,在我們生活中的垃圾郵件過濾、購物推薦、圖像識別等方面,機器學習也是有不小的應用空間。
既然應用這麼廣泛,那什麼是機器學習呢?
從上圖,我們不難看出,機器學習不是直接作用在事物上的。比如我們現在有一堆郵件(場景),如果我們想要過濾出垃圾郵件(目標)。那麼我們一定是先將郵件信息用數據的形式表現出來,輸入給某機器學習演算法。而後通過這個演算法,輸出相應的判斷結果,最終過濾掉垃圾郵件。同時,這個演算法也同樣適用於另一堆郵件。
那,為什麼機器學習可以做到這一點呢?還是拿垃圾郵件為例。我們知道,一封郵件之所以會被稱為垃圾郵件,是有其既定特徵的,並且符合一定的判斷規律。而,機器學習就是從數據中自動分析獲得規律,然後利用這個規律對未知數據進行預測的方法。在Wikipedia上面這樣定義:
如果計算機在任務「T」中的性能表現由指標「P」來估量,並隨著經驗「E」而提升,那麼就可以說機器學習是一個針對某系列任務「T」和性能指標「P」,從經驗「E」中去學習的計算機程序。
上圖便是機器學習運行的一般流程。左邊是我們希望機器學習做的事情,即機器學習從未知的數據,經過自動分析,給出預測的結果。右邊呢,則是機器進行學習的過程。即機器從訓練數據中學習,再得出我們想要的預測模型。
現目前,較為常見的機器學習方式有4種:監督學習、非監督學習、半監督學習和強化學習。
所謂的監督學習,指的是計算機可以從訓練數據中學到或建立一個模型,並依此模型對測試樣本進行預測的一種機器學習方法。但由於訓練數據集中我們已知了x的屬性和與之相對應的y,因此被稱為監督學習。常用的演算法 包括回歸分析和統計分類。
而非監督學習與監督學習相反,我們只知道x的屬性,但是並不清楚與之相對應的y,常用的演算法有聚類分析和生成對抗網路等。
半監督學習則位於監督學習和非監督學習之間,即我們知道一部分x對應的y,但是不知道另一部分x對應的y。
強化學習比較特殊,主要體現在兩個方面:
它的訓練數據和測試數據不是明確區分的。
每一次新的預測都可以持續更新演算法模型,從而使之更加強大。AlphaGo就是強化學習的典型代表。
既然有了學習方法,那也肯定少不了機器學習一般要面對的問題。我們常見的問題有分類、回歸和聚類三大類。
分類:類別的區分。比如說判斷某朵花屬於哪類花種。
回歸:主要針對數值型數據,目的是為了預測。比如說股價預測、房價預測等等。
聚類:通過數據的潛在特徵,把相似或接近的數據歸類到一起。
到這,可能你會想問,解決問題的方法有且只有一種嗎?
這自然不是。當我們選擇了一個模型訓練了數據之後,我們還需要評估這個模型是否達到了我們預期的效果。如果沒有的話,那麼自然得換一個模型。因為,當我們用機器學習解決問題的時候,可不要想著用模型解決了問題就完事了,還需要有評價模型的意識。
所以,在通常情況下,我們訓練模型和選擇模型是一個循環的過程,直到我們找到最合適的模型為止。為什麼需要有這一步呢?
我們知道,我們訓練模型的本意,其實是想要它從數據中學習到規律。既然是規律,那麼就不僅僅是描述所有的用本,還要對未知的數據有較好的預測效果。
在這個時候,我們就不得不說一個概念:過擬合。即當我們擬合一個模型的時候,因為使用了過多參數,而導致這個模型太適應訓練所使用的現有數據,而不適用與一般的情況。即在計算未知數據的時候,準確率表現太差。
看吧,在面對未知數據的時候,A模型訓練出的結果,明顯比B模型的誤差要大多。因此,我們在選擇模型的時候,會考慮使用B模型,而不是A模型。
既然在訓練數據的時候,我們可能出現過擬合的現象,那我們應該怎麼處理呢?加入評價的步驟。
通常情況下,分類和回歸模型的評價是不同的。回歸模型一般用均方差、偏差等指標來評價,而分類模型的評價則分為準確率、召回率和精確度三個指標。
正確率:它表示在預測為正的樣本中,有多少是真正的正樣本,主要是針對預測結果而言,因此也稱之為查准率。
召回率:它表示在樣本的實際正例中,有多少被預測正確了,主要針對原有樣本而言,因此也被稱為查全率。
精確度:指的是分對的樣本數與所有樣本數的比值。一般情況下,數值越高,精確度越高。
但我們知道了評價指標還不夠,我們還得知道評價方法不是?常用的方法有兩個:
留出法:即把訓練數據中的一部分數據留出來,作為模型訓練後的測試數據,用來檢驗模型。
交叉驗證:常用的事K-fold驗證。即把數據分為K份,分別試驗K次。但是在訓練模型的時候,每次均取出其中一組數據作為最後的測試數據,只訓練其餘的K-1份數據,最後根據K次試驗的平均水平來評價模型的好壞。
總結的說,機器進行學習的過程,就是其自動分析數據規律,並解決實際問題的過程。很多看起來沒有任何聯繫的事物,極有可能會因為某種規律使得我們錯過很多美好的東西。就如前面說的啤酒和尿布一樣。
但從本質上來講,機器學習也只是我們解決問題的其中一個手段。也正因為是一個手段,所以我們需要對最後的結果進行評價,以求更準確的認識未知事物
※當 Google 談論機器學習時,它在談論什麼?
※機器學習:從入門到絕不放棄!
TAG:機器學習 |