多類別分類

已完成

多類別分類是用來預測觀察所屬多個可能類別的哪一個。 作為監督式機器學習技術,其會遵循與迴歸和二元分類相同的反復定型、驗證和評估流程,在其中保留定型資料的子集以驗證定型模型。

範例 - 多類別分類

多類別分類演算法可用來計算多個類別標籤的機率值,讓模型能夠預測指定觀察的最可能類別。

讓我們探索一個範例,其中有一些企鵝的觀察,其中會記錄每隻企鵝的鰭肢長度 (x)。 針對每個觀察,資料包括企鵝物種 y (y),其編碼方式如下:

  • 0:阿德利
  • 1:巴布亞
  • 2:南極

注意

如同本課程模組先前的範例,實際案例會包含多個特徵 (x) 值。 我們將使用單一特徵來保持簡單。

Diagram of a measuring ruler. Diagram of three penguins.
鰭肢長度 (x) 物種 (y)
167 0
172 0
225 2
197 1
189 1
232 2
158 0

定型多類別分類模型

若要定型多類別分類模型,我們需要使用演算法,將定型資料放入計算每個可能類別機率值的函式。 您可以使用兩種演算法來執行此動作:

  • 一對多 (OvR) 演算法
  • 多項式演算法

一對多 (OvR) 演算法

一對多演算法會為每個類別定型二元分類函式,每個都會計算觀察為目標類別範例的可能性。 每個函式都會計算與任何其他類別相較之下,觀察為特定類別的可能性。 針對我們的企鵝物種分類模型,演算法基本上會建立三個二元分類函式:

  • f0(x) = P(y=0 | x)
  • f1(x) = P(y=1 | x)
  • f2(x) = P(y=2 | x)

每個演算法都會產生 sigmoid 函式,計算介於 0.0 到 1.0 之間的機率值。 使用這種演算法定型的模型會預測產生最高機率輸出之函式的類別。

多項式演算法

另一種方法是使用多項式演算法,這會建立傳回多重值輸出的單一函式。 輸出是一個向量 (值陣列),其中包含所有可能類別的機率分佈 - 每個類別的機率分數,總計最多為 1.0 時:

f(x) =[P(y=0|x), P(y=1|x), P(y=2|x)]

此類函式的範例是 softmax 函式,可能會產生類似下列範例的輸出:

[0.2, 0.3, 0.5]

向量中的元素分別代表類別 0、1 和 2 的可能性;因此,在此情況下,機率最高的類別為 2

不論使用哪一種演算法類型,模型都會使用產生的函式來判斷指定一組特徵 (x) 的最可能類別,並預測對應的類別標籤 (y)。

評估多類別分類模型

您可以計算每個個別類別的二元分類計量,以評估多類別分類器。 或者,您可以計算將所有類別納入考慮的彙總計量。

假設我們已驗證多類別分類器,並取得下列結果:

鰭肢長度 (x) 實際物種 (y) 預測的物種 (ŷ)
165 0 0
171 0 0
205 2 1
195 1 1
183 1 1
221 2 2
214 2 2

多類別分類器的混淆矩陣與二元分類器的混淆矩陣類似,不同之處在於其會顯示每個預測 (ŷ) 和實際類別標籤 (y) 的預測數目:

Diagram of a multiclass confusion matrix.

從這個混淆矩陣中,我們可以判斷每個個別類別的計量,如下所示:

類別 TP TN FP FN 準確率 重新叫用 精確度 F1 分數
0 2 5 0 0 1.0 1.0 1.0 1.0
1 2 4 1 0 0.86 1.0 0.67 0.8
2 2 4 0 1 0.86 0.67 1.0 0.8

若要計算整體正確性、叫用率和精確度計量,您可以使用 TPTNFPFN 計量總計:

  • 整體正確性 = (13+6) ÷ (13+6+1+1) = 0.90
  • 整體叫用率 = 6÷(6+1) = 0.86
  • 整體精確度 = 6÷ (6+1) = 0.86

整體 F1 分數是使用整體叫用率和精確度計量來計算:

  • 整體 F1 分數 = (2x0.86x0.86) ÷ (0.86+0.86) = 0.86