機器學習入門 - 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)


wKioL1k0Ei6RuxWkAARctL5L4e4616.png



其核心思路是,從剩餘的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.機器學習一般方法


  1. 將數據分成 70% 的訓練數據,10% 研發數據, 20% 測試數據

  2. for loop 所有的 hyperparameter (超級參數)

    1. 使用訓練數據,訓練模型 f

    2. 使用 研發數據 計算 Expected Loss (平均損失)

  3. 從上面所有的 超級參數中,選擇平均損失最低的那組作爲最終模型

  4. 使用 測試數據對最終模型進行評估





Reference

Hal, Daumé III. A Course In Machine Learning. 2nd ed. Self-published, 2017. Print.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章