iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
AI & Data

AI、機器學習以及深度學習的語言學應用系列 第 12

Day 12 - Decision Tree(決策樹)

  • 分享至 

  • xImage
  •  

前面幾天都在講一些處理語料的技術跟概念,一直講到模型,今天終於要邁入模型這一階段~(雖然之後可能還是會講到一些語料處理的東西😳)

模型也是有分不同的類型,今天要跟大家介紹的是一種傳統機器模型 — 決策樹(Decision Tree)


決策樹是什麼?

顧名思義,它就像一棵「樹」,一層一層向下分支(所以其實有點像倒著的樹...? 或是像聖誕樹的樣子🌲)

  • 每個節點(Node):代表一個判斷條件或是或是特徵(例如:郵件標題裡有沒有「免費」這個詞?)

  • 每個分支(Branch):根據條件的不同答案,走向不同的路

  • 每個葉子(Leaf Node):就是最終的分類或預測結果

這邊放一個示意圖:
https://ithelp.ithome.com.tw/upload/images/20250926/20178748k3f7FzIeyM.png

決策樹訓練、預測舉例

舉例來說,今天我們要來預測一封信是不是垃圾郵件,

首先我們就會先建立郵件相關的特徵,這些特徵可能是:

  • 郵件標題裡有沒有「中獎」或「免費」?
  • 郵件寄件人是否是陌生的?
  • 郵件內容有沒有連結?
  • 郵件內容的字數?

這邊要提醒的是,我們餵給模型的資料是有正確答案的,因為要這樣,模型才能夠學習並做預測。

在建立完特徵之後,模型就會開始訓練。

訓練的過程其實就是:

  • 根據資料特徵進行分割,找出最能把資料分成「垃圾郵件」和「正常郵件」的條件。

  • 逐層往下分支,直到能把郵件分得比較清楚。

  • 最後長出一棵決策樹,讓我們可以用來預測新郵件。

在 python 裡面我們主要是用 scikit-learn 這個套件來執行 Decision Tree

這邊不會帶各位實作,但是引入套件的程式碼大概會長這樣:

from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

但是一定會想說,那要怎麼做預測呢?

一般來說,我們會先把大約 80% 的資料拿來訓練模型,剩下 20% 的資料拿來測試。

  • 在訓練階段,模型會學習這些特徵與結果的關係。

  • 在測試階段,模型會根據從未看過的資料做預測。

最後,我們就可以透過 準確率(Accuracy) 來檢驗模型的表現。
如果準確率很高,就代表這些特徵(例如:標題有沒有「免費」、寄件人是不是陌生人、內容有沒有連結、字數多少)確實對於判斷垃圾郵件有幫助;反之,如果準確率很低,就代表我們可能需要重新設計或增加其他特徵。


優點

  • 他的規則就像人類思考的邏輯。
  • 我們可以知道模型為什麼做出某個決定(不像大型語言模型那麼難去做詮釋)。
  • 在小到中等規模的資料上表現不錯。

缺點

  • 容易過度擬合(Overfitting):如果樹分得太細,模型就會記住訓練資料,導致他不會應用,無法有好的預測結果。

上一篇
Day 11 - Lesk Algorithm:讓我們來一起消除歧義
系列文
AI、機器學習以及深度學習的語言學應用12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言