iT邦幫忙

2022 iThome 鐵人賽

DAY 9
4
AI & Data

OH~ AI 原來如此,互助就此開始!系列 第 9

Day 8. 機器學習模型 - 監督式學習(二)

  • 分享至 

  • xImage
  •  

決策樹(Decision Tree)

根據過去的資料來預測決策的樹狀圖,因為決策過程被視覺化,常被用來解釋決策的原因。

比如說租屋公司想要靠過去的資料預測怎樣的公寓條件比較容易租給年輕人。

部分資料:

公寓樓層 房間大小(坪數) 幫收垃圾服務 租或不租
5 15 不租
5 12 沒有 不租
3 10
1 8 沒有 不租

程式依照給的資料畫出的決策樹。

https://ithelp.ithome.com.tw/upload/images/20220824/201506229caC1ZRc2d.png

可以看到沒有幫收垃圾服務就不租,有幫收垃圾,但在5樓要爬樓梯就不租,得出有幫收垃圾服務且低於5樓比較容易出租的結論。

不過當資料越多,決策樹做越多層,會有過度擬合的狀況發生,這邊用圖示來示範比較好理解。
決策樹限制深度為2層時分類結果長這樣,看起來雖然有一點分類錯誤,但整體的分類看起來是合理的。
https://ithelp.ithome.com.tw/upload/images/20220825/20150622XajbMDPdyn.png
但是做到6層的話,如同下面的圖,變成硬要把已知的分類都分清楚,反而導致對未知資料的分類準確度下降。
https://ithelp.ithome.com.tw/upload/images/20220825/20150622uqKSDQ2BuY.png

單個決策樹的預測率通常只有60%~80%的準確率,被稱為弱學習器。所以不常使用單個決策樹,而是採用集成學習,使用複數個弱學習器組合成一個準確率較高的強學習器來預測。

集成學習(Ensemble Learning)

使用複數模型來學習的方式。通常會比使用單個模型的預測效果要好
下面的隨機森林和梯度提升都是集成學習的一種。

隨機森林(Random Forest)

由很多決策樹隨機組成的森林

隨機森林的步驟如下:

  1. 從資料隨機抽取資料建立數個樣本,抽取過的資料可以重複抽取。
  2. 從樣本資料建立數個決策樹。
  3. 新資料的分類由每個決策樹的分類結果採多數決定。

https://ithelp.ithome.com.tw/upload/images/20220827/20150622zd4z5459bc.jpg
之所以只取一部份資料是因為可以隨機避開錯誤的資訊。讓整體的分類更精確,比較難發生過度擬合的問題。而隨機森林屬於集成學習袋裝法

袋裝法(Bagging)

只取一部份資料讓複數模型做學習。而取出來的樣本會放回去讓其他模型可以重複使用叫做自助法(Bootstrapping)。所以袋裝法又被稱為自助聚合法(Bootstrap Aggregation)。

梯度提升(Gradient Boosting)

屬於集成學習的提升法。最佳化則是使用梯度下降法所以叫梯度提升。模型通常也是使用決策樹。

梯度提升的步驟如下:

  1. 建立一個模型然後學習。
  2. 這個模型預測的誤差會被提高重要度(權重),傳給下一個模型透過梯度下降優先讓誤差變小。
  3. 重複2.,最後結合所有的結果做預測。

https://ithelp.ithome.com.tw/upload/images/20220830/20150622xMVwEHlcE8.jpg

提升法(Boosting)

提升法和袋裝法很像,都是使用多個模型然後只使用一部份的資料做學習。差別在於提升法的模型有先後順序,一個計算完換下一個,而袋裝法的模型可以同時並行做計算。所以袋裝法速度較快,提升法速度較慢。但相對地提升法有持續做修正預測比較精準。

梯度下降(Gradient Descent)

梯度下降是一個對機器學習和深度學習都非常重要的演算法,主要是用來做最佳化,也就是最小化損失(Loss),達到讓誤差最小。

前面有說到線性回歸做最佳化是使用最小平方法,但是大多數的時候不是像線性回歸這麼簡單靠公式就能找到最小誤差。所以這時候就會使用梯度下降來找出最佳解。為了簡單解說我們先假設只有一個參數 w 來求最小損失,我們怎麼知道找出讓 Loss 最小的 w?以下面的圖而言就是求斜率。

你可以想像成登山者去山谷下的營地(Loss=0)。可以透過山坡的斜率知道朝哪個方向是下山的路。

斜率>0:往負的方向走 斜率<0:往正的方向走
https://ithelp.ithome.com.tw/upload/images/20220830/20150622KkCNS2WMkh.png https://ithelp.ithome.com.tw/upload/images/20220830/20150622oRo4Nw6yV3.png

求一個參數的最小化損失是使用2維平面求斜率,那多個參數呢,就是多維空間求梯度,梯度一樣是斜率,只是下山的方向變成不是只有一種。像這個3D圖一樣一直下降找到山谷的最低點。所以叫梯度下降

https://ithelp.ithome.com.tw/upload/images/20220830/20150622kOHDpD5amW.png

那怎麼求斜率呢?其實就是作函數的微分

隨機森林和梯度提升的差異列表

隨機森林 梯度提升
集成學習 集成學習
使用決策樹 使用決策樹
袋裝法(並列) 提升法(順序)
速度較快 速度較慢
精準度較低 精準度較高
不容易過擬合 容易過擬合

支持向量機(SVM,Support Vector Machine)

深度學習出現之前非常流行的方法。
基本思想是邊距(Margin)最大化。先來看一下下面這張圖,紅黃綠哪條分界線做分類比較好呢?

https://ithelp.ithome.com.tw/upload/images/20220831/20150622t1aVh8RMfi.jpg

很明顯紅色的分界線比較好,因為它比較有餘裕,和資料點還有一段距離,用來預測未知資料時比較不會有錯誤分類的問題。所以支持向量機就是找到一個比較有餘裕的分界線,該分界線與每個資料點的距離最大。而離分界線最近的資料點叫支持向量(Support Vector)。如下圖所示。
https://ithelp.ithome.com.tw/upload/images/20220831/20150622ijN4uXAsyg.jpg

實際試著分類看看。
https://ithelp.ithome.com.tw/upload/images/20220831/20150622l7oaVQ3QcL.png

支持向量機之所以非常流行是因為可以處理無法線性分離的問題,使用 核函數(Kernel)將資料映射到更高的維度,達到線性分類的目的,同時可以透過核技巧(Kernel Trick)這個方法解決維度爆炸的問題。

https://ithelp.ithome.com.tw/upload/images/20220831/20150622abPrNyRb86.jpg

球都在桌子上無法用一條線做分類,用力拍桌子讓球通通浮在空中,就可以用一條空中的斜線做分類!

補充資料

立即複習

  1. 決策樹是弱學習器,透過很多個弱學習器組合成一個強學習器的學習方法叫做?
  2. 隨機森林是屬於集成學習的什麼方法,是否容易過度擬合?
  3. 梯度提升是屬於集成學習的什麼方法,速度比隨機森林快還慢?
  4. 支持向量機之所以能夠處理無法線性分離的問題,是因為使用了什麼技巧?

參考資料


上一篇
Day 7. 機器學習模型 - 監督式學習(一)
下一篇
Day 9. 機器學習模型 - 非監督式學習
系列文
OH~ AI 原來如此,互助就此開始!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言