你绝对能懂的“机器学习”(四)
我們知道,人類在發展、成長、生活的過程中積累了很多的經驗。通過定期的對這些經驗進行總結,獲得了一些規律,這就叫“歸納”。利用這個“歸納”出來的“規律”,對類似的情況進行決策判斷,從而指導我們的行動,這就是“演繹”。
例如人類通過觀察季節、農作物生長的變化,總結出歷法、四季、24節氣等規律來指導農業生產,這樣,每到新的一年,我們就知道要春播,夏種,秋收,冬藏。當然,還有一些諺語像“朝霞不出門,晚霞行千里”,“春捂秋凍”等,也是對經驗進行歸納總結出來的規律,并演繹指導我們春天要多穿衣服,秋天少穿衣服等等。用一張圖表示就是:
以前提過:機器學習就是讓計算機學會利用過往的經驗完成指定任務。其工作原理與人類的歸納演繹過程是一致的,也就是說:
機器學習只不過是在計算機中對人類歸納演繹過程進行的模擬。
對比上面2張圖,是不是一樣的。對于機器學習,過往的經驗就是存儲下來的數據,因為有很多數據,所以稱為數據集(data set),通過對這些數據進行訓練(training)或者學習(learning),這兩種叫法都可以,對應的是人類的“歸納總結”,然后得到一個模型(model),對應人類的是“規律”,然后對于一個新數據/新情況,通過這個模型來預測(predict)其結果,對應人類的是“演繹”。
這就是機器學習的工作原理。首先,我們需要有存儲的歷史數據。然后,我們對這些數據通過機器學習算法進行處理,這個處理的過程叫做訓練。再然后我們通過訓練得到一個模型。最后根據這個模型,我們可以輸入新數據,得到預期的結果,這個過程叫做預測。以上就是機器學習的全過程。我把它稱之為:
一個數據集,一個模型,兩個過程
其中訓練這個過程是核心所在,機器學習所有的精華和主要內容都在這個過程中。
我們舉個例子說明下。假設你是一家大型互聯網公司的人力資源經理,每年都要招聘大量的程序員。你手頭上有歷年來公司招聘的錄用數據,我們假設應聘者能否錄用只與筆試成績和面試成績這2項有關。數據如下:
| 1. | 6.0 | 5.0 | 否 |
| 2. | 8.0 | 4.0 | 否 |
| 3. | 9.0 | 2.5 | 否 |
| 4. | 9.0 | 7.2 | 是 |
| 5. | 9.5 | 9.5 | 是 |
| 6. | 7.0 | 7.0 | 是 |
| 7. | 8.5 | 3.2 | 否 |
| 8. | 7.0 | 6.5 | 是 |
| 9. | 5.4 | 8.7 | 是 |
| 10. | 5.7 | 7.8 | 否 |
| ……………… | ……………… | ……………… | ……………… |
這里有幾個概念術語需要說明下。
這組記錄的數據集合稱為“數據集(data set)”。
數據集中每一條記錄稱為一個“樣本(sample)”或叫“示例(instance)”。
樣本中的結果信息“錄用與否”稱為“標記(label)”,好理解的話你可以叫它“目標結果”。
描述樣本的“筆試成績”、“面試成績”稱為“特征(feature)”或“屬性(attribute)”,叫“特征”也行,叫“屬性”也行,都可以。
屬性(或者叫特征)的個數稱為“維度(dimensionality)”,上面這個數據集就是2個維度,因為只有“筆試成績”、“面試成績”這2個屬性。
我們把數據集用圖表的形式繪制出來。如下圖所示:
紅色的點是未錄用的數據,橙色的點是錄用的數據。我們仔細觀察下這些數據,發現好像有一條直線把這些數據分開了。如下圖所示:
如果機器學習能找出這條直線,那么得到新的應聘者筆試成績和面試成績后,如果新數據落在直線左邊,就可以決策不錄用,如果新數據落在直線右邊,就決策錄用。這條能輔助決策的直線,我們稱之為“決策邊界”或叫“決策面”。為什么又叫“決策面”,因為三維空間中,決策邊界可能是個平面,如果是更高維度的空間,決策邊界可能是個超平面。
看到這,有人就會說,這還用得著機器學習啊?這個圖我看一眼就能看出來這條直線。確實,這個例子很簡單,人用肉眼就能判斷。但是,我們還是要用到機器學習。為什么?
首先,計算機的強項在于計算和批量處理。你看,你能寫出這條直線的方程嗎,中學階段我們學過直線方程為y = kx + b,那這里的k和b各是多少?你很難馬上手工算出來吧。即使你能算出來,如果你需要處理5萬個樣本數據,決策今年的3000個應聘者的錄用與否,你能手工一個個的處理嗎?
其次,這個決策邊界不一定是一條直線,可能是多條直線,甚至可能是曲線。更多的可能性是根本無法描述。在這個例子中,樣本數據只有2個屬性,筆記成績和面試成績,這恰好是2個數值數據,現實中樣本數據可能是數值數據,也有可能是類別數據,例如這個數據集再添加應聘者的畢業院校、所學專業2個屬性,有這樣4個屬性的樣本數據的決策邊界就無法直觀描述了。
一般的數據維度都高于2維,甚至4維、5維……。在3維數據中看出決策邊界就很難了,而4維及以上維度根本就畫不出圖來,生活在3維空間的我們不可能感知4維及以上的空間,也就是說你不可能感知到超平面。
所以,這也是我們需要機器學習的主要原因。讓我們看看怎樣找出這條直線。我們假設這個直線為y=kx+b,先隨機設定參數值k=1,b=1。如下圖所示:
我們將數據集中的訓練樣本數據與這條直線比對,發現效果很差,大部分都分錯了。那么,我們調整下k,b的值。見下圖,這次效果好多了,但還是差不多錯了一半。
然后再調整下k,b的值。見下圖,這次效果又好多了,接近最優解了。
就這樣不斷找下去,就可以找到這條直線了。那么問題來了,這跟不斷試錯有什么區別?有區別的,因為這里調整k,b的值是有方向的調整,而不是隨機的調整,這其實是一個求解k,b參數最優化的問題,對于最優化問題,這本身就是一個大的領域。常用的最優化問題求解算法有梯度下降法、牛頓法、遺傳算法、粒子群算法等,在機器學習中梯度下降法用的較多。需要注意的是這里的梯度下降法、遺傳算法等不是我們通常說的機器學習算法,而是在大的機器學習算法過程中,用于求解像k,b這些參數的最優化問題求解算法。而邏輯回歸、決策樹、樸素貝葉斯、支持向量機、神經網絡等,才是我們通常說的機器學習算法,這個以后在講具體的機器學習算法時再談。
在求解出這條直線后,也就是機器學習訓練出一個模型后,那么現在,有一個應聘者的筆試成績是6.5,面試成績是7.2。你認為應該是錄用還是不錄用呢?直接判斷點(6.5,7.2)在這條直線的左邊還是右邊就可以了。
此外,很多時候,我們需要了解和測試機器學習的效果,并評估其精確度,這就是預測精確度,一般用百分比表示。這種情況下我們通常準備2套獨立的數據集,或者將一個數據集分割成2部分,例如上面的數據集,假設有5萬個樣本。我們采用前4萬個樣本進行訓練。那么這4萬個樣本的集合我們稱為“訓練集”。剩下的1萬個樣本用于對訓練出來的模型進行測試,這1萬個樣本的集合稱為“測試集”。測試后獲得的預測結果與測試集中的實際結果信息進行比對,就可以得出機器學習的精確度。例如測試集中的1萬個樣本預測的結果與實際結果比對,匹配一致的有9500個,不匹配的有500個,這樣我們就知道訓練出來的模型的大致效果了。
至于為什么要分成訓練集和測試集,其實很好理解,從一些現象推導出的任何嚴謹結論,都需要進行驗證,這也是科學方法論遵循的基礎。就像大科學家愛因斯坦提出的質能方程E=MC2,也需要通過進行核試驗來驗證其正確性。
總結
以上是生活随笔為你收集整理的你绝对能懂的“机器学习”(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你绝对能懂的“机器学习”(三)
- 下一篇: 你绝对能懂的“机器学习”(五)