機器學習入門 - 1. 介紹與決策樹(decision tree)
機器學習(Machine Learning) 介紹與決策樹(Decision Tree)
機器學習入門系列 是 個人學習過程中的一些記錄與心得。其主要以要點形式呈現,簡潔明了。
1.什麽是機器學習?
一個比較概括的理解是: 根據現有的數據,預測未來
2.核心思想 : Generalization
可以理解為,歸納、概括。就像是人的學習一樣,找出一件事物與與一件事物的聯系
3.歸納性的機器學習(Inductive machine learning)
其核心思想是使用訓練數據,並從其中摸索出一套適用於現實中的公式 f。然後用這個公式來預測現實中的結果
其分為四種類型
Regression 回歸類型: 主要適用於預測真實數據
Binary Classification : Yes 和 No 的分類問題
Multiple Classification: 一對多的分類問題
Ranking:相關性的排序問題
4.第一個模型:決策樹
決策樹的核心思路:divide and conquer。 相信大家在學習 遞歸編程(recursion)的時候已經很熟悉了這個概念了,那就是將問題拆分到足夠簡單,然後解決掉它。
為了將現實中的問題轉化為我們可以使用的模型,在這裏我們提出幾個概念
feature(特性):每次決策樹在做決定時要問的問題
feature value (特性值):簡單理解為問題的回答
training data : 訓練數據 > > 即有很多個例子的集合。每個例子 通常以 (x,y)形式形式出現,x 是輸入數據,y是實際的結果
5.決策樹的工作原理
例如下面的決策樹虛擬代碼取自《A Course in Machine Learning》(Hal)
其核心思路是,從剩余的feature 中選擇一個最有用的來提問,如果答案可以直接決定最終結果那麽,跳出遞歸。如果沒有剩余的feature 來提問那麽返回默認答案。否則將整個數據一分為二,分別是yes 組合 no 組,然後分成兩個分支繼續遞歸(16,17行)。
6.Loss Function,L(y , y*)
y 是真正的結果,y* 是機器預測的結果 L 代表 loss 函數。所以loss function 是用來量化錯誤的。
根據不同類型可以分為:
Regression 回歸類:
Square loss: 平方損失: L(y , y*) = (y - y*)2
Absolute loss: 絕對損失: L(y , y*) = |y - y*|
Binary 是和否的問題 以及多組分類問題 :
L(y , y*) = 0 , if y = y* (零損失)
L(y , y*) = 1 , if y <> y*
7. 平均損失 Expected Loss
Expected loss = Sum(x,y)( D(x , y) * L(y , y*) )
D(x,y) 是 (x,y) 發生的概率分布,這裏可以理解為(x,y)發生的概率。 所以就是期望值的一般算法, 把概率乘以損失 然後求和。
所以對於我們機器學習推導出來的方程式 f,需要Expected Loss 越低越好。
8.Inductive Bias 歸納偏見
不同的模型或者方法的選擇會產生不同的偏見。例如決策樹會比較擅長處理單獨的一個一個的問題,但是對於幾個feature相互作用的問題就收效甚微。
在後續文章會繼續介紹不同模型的偏見,這裏先提出來。
9. Shallow Decision Tree
即有最大深度的 決策樹,我們可以用一個深度 d 來限制決策樹的最深層數
10. Underfitting 和 Overfitting
這是兩個非常重要的概念, Underfitting 是指的,學的不夠多,例如學生什麽都不學就去考試,自然不會考的好。
Overfitting 是指,學生學成了書呆子,只會死記硬背,考試的題目改幾個數字就完全不會做了。
在決策樹裏面,如果一個feature 都不問,那麽就是 underfitting ,什麽都不學,每次只返回訓練數據裏面的多數答案。
如果問很多個feature 把 所有的feature都問一邊就有可能 overfitting, 完全的照著訓練數據在記憶而不是歸納學習。
11.數據分配
數據 | 說明 | 百分比 | |
Training Data 訓練數據 | 學習並總結 方程式 f | 70% | |
Development Data 研發數據 | 調整超級參數(Hyperparameters) 來避免 underfitting 和 overfitting。 | 10% | |
Test Data 測試數據 | 用來評估最後的學習效果。永遠不要偷看測試數據!偷看測試數據就好像偷看了考試答卷,只會導致程序有針對性的編程。但是一旦到了真正的運行環境,效果就會十萬八千裏。 | 20% |
超級參數(Hyperparameters) 是指的可以影響普通參數的參數。例如 剛剛最高詢問深度 d,就是一個超級參數。
12.機器學習一般方法
將數據分成 70% 的訓練數據,10% 研發數據, 20% 測試數據
for loop 所有的 hyperparameter (超級參數)
使用訓練數據,訓練模型 f
使用 研發數據 計算 Expected Loss (平均損失)
從上面所有的 超級參數中,選擇平均損失最低的那組作為最終模型
使用 測試數據對最終模型進行評估
Reference
Hal, Daumé III. A Course In Machine Learning. 2nd ed. Self-published, 2017. Print.
本文出自 “SummerTime的博客” 博客,請務必保留此出處http://summertime.blog.51cto.com/4412692/1932137
機器學習入門 - 1. 介紹與決策樹(decision tree)