Posted on

二元分類器 (binary classification) 介紹

甚麼是二元分類器

二元分類 (binary classification) 是一種機器學習中常見的任務,其目的是從兩個不同類別中將每個數據樣本歸類為其中之一。這種分類方式只有兩個類別,因此其結果是二元的。例如,對於圖像分類問題,二元分類可能用於識別猫和狗的圖像,或者用於識別垃圾郵件和非垃圾郵件的電子郵件。

在二元分類中,我們通常使用一些算法來建立一個模型,如 logistic regression, decision tree, SVM, Random forest, neural network等 來預測每個輸入數據樣本屬於哪個類別。 當我們對新數據進行預測時,該模型將輸出預測類別 (0 或 1)。

在訓練階段,通常需要提供已經標註好類別的數據來訓練模型。並在測試階段使用該模型來預測新的數據的類別,並使用常見的度量指標來評估模型的效果如精確度, AUC-ROC, F1 score等

如果您需要分類多於兩個類別的數據,則需要使用多元分類 (multiclass classification)。

和多元分類器的不同

在 TensorFlow 中,實現二元分類和多元分類器主要有兩個不同之處:

  • 損失函數: 二元分類器通常使用二元交叉熵 (binary cross-entropy) 作為損失函數。而多元分類器則常使用交叉熵 (cross-entropy) 作為損失函數。
  • 輸出層的激活函數: 二元分類器的輸出層通常使用 sigmoid 激活函數。而多元分類器的輸出層則通常使用 softmax 激活函數。

除了上述兩點的不同之外,實現二元分類器和多元分類器在 TensorFlow 中沒有太大差別。
如果使用Keras, 可以直接使用其封裝好的model,
例如:
keras.models.Sequential() 中的binary_crossentropy適用於二元分類問題

model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy']) 

而 categorical_crossentropy則適用於多元分類問題.

model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy']) 

但是要注意在訓練和測試階段,多元分類需要對每個類別進行單熱編碼 ( one-hot encoding)。在 TensorFlow 中,可以使用 tf.keras.utils.to_categorical() 函數將標籤轉換為 one-hot 編碼。

優缺點比較

使用二元分類器和使用多元分類器並將其限制為兩個類別的方式之間有以下優缺點:

優點:

  • 使用二元分類器可以較為簡單地對兩個類別進行分類,而無需考慮額外的類別。
  • 如果模型使用二元交叉熵作為損失函數,則可以較容易地解釋分類結果,因為輸出層輸出的值是概率值,可以用來表示一個類別的可能性。

缺點:

  • 如果類別數量超過兩個,則無法使用二元分類器。
  • 將多元分類器限制為兩個類別可能會使模型的複雜度增加,因為必須考慮額外的類別,即使這些類別不需要分類。
  • 如果將多元分類器限制為兩個類別,則無法充分利用模型的能力,可能無法在更大范圍內解決問題。
  • 在某些情況下,使用二元分類器可能不能提供足夠的信息來解釋分類結果,因為只提供了兩個類別之間的信息。

總之, 如果您有兩個類別並且需要將數據標記為其中之一,則使用二元分類器可能是最佳選擇。如果類別數量超過兩個或者需要更多的信息來解釋分類結果,則使用多元分類器可能是更佳選擇。