目錄

使用機器學習解決問題的五步驟:定義問題

在前幾篇文章中,我們談過「什麼是機器學習」,也談過模型、模型訓練與模型推論之間的關係,知道機器學習能處理傳統程式寫死規則處理不了的問題。但知道機器學習能做什麼,跟真的把一個問題交給機器學習來解,中間還隔了一段距離。

這篇文章要補上的就是這段距離:用機器學習解決問題時,實際上會走過哪五個步驟,以及第一步「定義問題」到底在做什麼。不管你面對的是房價預測還是圖片分類,模型換成什麼、訓練方式換成什麼,這五個步驟大致都跑不掉。心裡先有這張流程圖,動手做的時候比較不會迷失方向。

機器學習解決問題流程的五個步驟循環示意圖。
機器學習解決問題的五個步驟

用機器學習解決問題,通常會走過這五步:

  1. 定義問題 (Define Problem)
  2. 建立資料集 (Build Dataset)
  3. 訓練模型 (Train Model)
  4. 評估模型 (Evaluate Model)
  5. 使用模型 (Use Model)

實務上這不是走完一輪就結束的直線流程,而是反覆繞圈:模型評估的結果不如預期,往往得回頭補資料,甚至回頭重新定義問題。接下來的幾篇文章會逐一深入這五個步驟,今天先從第一步開始。

機器學習流程第一個步驟「定義問題」的示意圖。
機器學習解決問題的第一步:定義問題

「定義問題」就是字面上的意思:先把你想解決的到底是什麼問題講清楚。這一步有兩個目標要盡量達成。

假設我們正在做房地產投資,希望能有好的報酬。一開始腦中冒出來的問題可能是:「怎樣才能在房地產投資中獲利?」

這個問題太廣了。廣告投放、裝潢翻新、看準地段、挑對時機,每一條路都能算是答案,反而讓人不知道從哪裡下手。所以要把問題縮小。想在房地產投資中獲利,說白了就是希望以低於房屋實際價值的價格買進,那麼問題就可以收斂成:「如何預測房屋的價值?」

問題定義得越具體,就越清楚該用哪一種機器學習演算法來解它。這也是為什麼「定義問題」值得單獨拉成一個步驟:這一步偷懶,後面挑模型、準備資料都會跟著模糊掉。

在「什麼是機器學習」那篇文章中提過,機器學習的演算法可以分成三類:監督式學習 (Supervised Learning)、非監督式學習 (Unsupervised Learning) 與強化學習 (Reinforcement Learning)。每一種學習方法都有它擅長的任務類型,所以定義完問題之後,下一件事就是判斷這個問題屬於哪一類任務。這篇文章聚焦在監督式學習與非監督式學習各自適合處理的任務。

監督式學習與非監督式學習的差異對照示意圖。
機器學習中監督式學習與非監督式學習的差異

監督式與非監督式學習的關鍵差異,在於有沒有一個「監督者」站在電腦旁邊看它學習。當電腦答錯時,監督者會告訴它正確答案是什麼。

換成資料的語言來說,就是有沒有替資料準備標籤 (Label)。所謂標籤,就是這筆資料對應到的正確答案。每一筆資料都有對應標籤的,是監督式學習;沒有標籤、要讓模型自己從資料中找規律的,就是非監督式學習。

回到「房價預測」的例子。我們希望把「坪數」輸入模型,模型輸出對應的「價格」。訓練資料中會包含非常多的樣本 (Sample),每一個樣本代表「一間房子」,記錄了這間房子的坪數實際價格

樣本:(坪數、實際價格)

監督式學習的訓練過程中,針對每一個樣本會做四件事:

  • 把坪數輸入模型
  • 模型輸出一個預測價格
  • 比較模型輸出的價格與實際價格
  • 調整模型的參數,讓輸出更接近實際價格

樣本中的實際價格就是標籤,代表這個樣本的正確答案。而因為這個標籤是「數值型」的,這種由模型預測一個數值的任務又稱為**「回歸」(Regression)**。

標籤當然也可以是「非數值型」的,例如「類別型」標籤。想像我們要訓練一個模型,輸入一個人的基本資訊之後,模型輸出這個人的「性別」。此時每一個樣本代表一個人,記錄了這個人的資訊,例如身高、體重、年齡、年級、性別。

樣本:(身高、體重、年齡、年級、性別)

在這個情境下,「性別」就是每個樣本的標籤,也就是正確答案,可能是「男生」、「女生」或「其餘」。這種標籤屬於類別型,而由模型預測一個類別的任務又稱為**「分類」(Classification)**。

非監督式學習的資料裡沒有標籤,所以模型要做的事情也不一樣。一樣拿房子當例子:這次我們不是要模型預測每一間房子的實際價格,而是希望模型把一大堆房子「分群」。

手上的每個樣本一樣代表一間房子,記錄了房子的許多資訊,例如坪數、屋齡、房間數量、浴室數量、目前售價等等。

樣本:(坪數、屋齡、房間數量、浴室數量、目前售價)

我們希望模型把這些樣本分群,也就是替每個樣本指定一個群集。模型在分群的過程中,必須自己去理解樣本與樣本之間的關係,把相似度較高的樣本歸為同一群。整個過程中我們沒有提供任何標籤,最後分出幾群、每群長什麼樣子,都是模型自己從資料的結構中學出來的。這也意味著群集的「意義」得由人來解讀,例如某一群可能剛好都是市中心的小坪數老屋。

「分群」(Clustering) 是非監督式學習中最基本、也最常見的任務。

機器學習任務依監督式與非監督式分類的示意圖。
機器學習中任務的簡單分類

把前面三種任務放在一起對照,差別會更清楚:

任務屬於標籤型態模型輸出例子
回歸 (Regression)監督式學習數值型一個數值由坪數預測房價
分類 (Classification)監督式學習類別型一個類別由基本資訊預測性別
分群 (Clustering)非監督式學習無標籤樣本所屬的群集把房子分成幾種類型

定義問題時真正要回答的,其實就是這張表最左邊那一欄:你手上的問題,最後要模型吐出一個數值、一個類別,還是一種分群結果?

這篇文章介紹了用機器學習解決問題必經的五個步驟,並深入談了第一步「定義問題」:把問題縮得夠具體,再辨識它屬於機器學習中的哪一種任務。我們也看到監督式學習底下有「回歸」與「分類」兩種任務,非監督式學習則有「分群」。

下一篇文章會接著介紹流程中的第二個步驟:「建立資料集」。