1. 程式人生 > 其它 >機器學習中分類與迴歸的差異

機器學習中分類與迴歸的差異

在分類(Classification)問題與迴歸(Regression)問題之間,有著一個重要的區別。

從本質來說,分類是對標籤(Label)作出的預測,迴歸則是對於量(Quantity)的預測。

我時常看到有如下的問題:

我要如何計算我的迴歸問題的準確率?

提出諸如此類的問題,是因沒有真正理解分類和迴歸之間的區別,以及所謂的準確度(Accuracy)是對什麼進行測量。

在本教程中,您將瞭解到分類和迴歸之間的差異。

學習完本教程後,您將知道:

  • 預測建模,是關於學習從輸入到輸出的對映函式的問題,它被稱為函式逼近(Function approximation)。
  • 分類問題,就是要為樣本預測一組離散類標籤的輸出。
  • 迴歸問題,則是為樣本預測一組連續數量的輸出。

我們開始本次學習之旅吧!

機器學習中分類與迴歸的差異

圖片由 thomas wilson 拍攝,保留部分版權。

教程概述

本教程共分為 5 個部分,分別是:

  1. 函式逼近
  2. 分類
  3. 迴歸
  4. 分類與迴歸之間的比較
  5. 分類與迴歸之間的轉換

函式逼近

預測建模問題,是基於歷史資料來開發一個模型的問題,這個模型可以對新資料(我們沒有相應的答案)進行預測。

要了解關於預測建模的更多資訊,請參閱以下文章:

預測建模問題可以這樣來描述:對從輸入變數(X)到輸出變數(y)對映函式(f)進行逼近。這被稱為函式逼近問題。

建模演算法的任務是:基於我們所能提供的時間與資源,找到最佳的對映函式。

要了解機器學習應用中的函式逼近的更多資訊,請參閱以下文章:

通常情況下,我們可以將所有函式逼近任務劃分為分類任務以及迴歸任務。

分類預測建模

分類預測建模的任務,是逼近一個對映函式(f),它能將輸入變數(X)對映到離散的輸出變數(y)。

輸出變數通常被稱為標籤或類別(Categories)。對映函式則預測給定觀測值的類或類別。

例如,我們可以將文字郵件歸為兩類,即 “垃圾郵件“ 和 “非垃圾郵件”。

  • 分類問題要求將樣本分為兩類(或更多類)中的一類。
  • 對於分類,它的輸入可以是實值,也可以是離散變數。
  • 分為兩個類的問題,通常被稱為兩類或二元分類問題。
  • 多於兩個類別的問題通常被稱為多類分類(Multi-class classification)問題。
  • 一個樣本屬於多個類別,這樣的問題被稱為多標籤分類(Multi-label classification)問題。

分類模型通常預測得到一個連續值,該值作為給定樣本屬於輸出的各個類別的概率。這一概率可以理解為樣本屬於各個類別的置信度(或者說可能性)。我們可以選擇具有最高概率的類別標籤,從而將預測概率轉換為類別值。

舉個例子,可能有某個文字郵件被指定是 “垃圾郵件” 的概率為 0.1,而是 “非垃圾郵件” 的概率為 0.9。此時通過選擇 “非垃圾郵件” (因為它對應著最高的預測概率)標籤,我們就可以將這些概率轉換為一個類標籤。

對分類預測模型進行能力評估的方法有很多,其中最常見的大概就是計算分類的準確率。

分類準確率是所有預測結果中,屬於正確的分類例項的百分比。

比如說,如果一個分類預測模型作出了 5 個預測,其中 3 個是正確的,另外 2 個是錯誤的,那麼基於這些預測的模型分類準確率將是:

accuracy = correct predictions / total predictions * 100
accuracy = 3 / 5 * 100
accuracy = 60%

能夠對分類預測模型進行學習的演算法被稱為分類演算法。

迴歸預測建模

迴歸預測建模的任務,是逼近一個對映函式(f),它能將輸入變數(X)對映到連續的輸出變數(y)。

連續的輸出變數是一個實數值(例如整數,或浮點值)。這些值往往是數量,比如金額和尺寸。

舉個例子,我們可能會預測一套房子可能以某個特定的美元價值進行出售,而這個值可能會在 $100,000 到 $200,000 的範圍內。

  • 迴歸問題需要預測一個數量。
  • 對於迴歸,它的輸入可以是實值,也可以是離散變數。
  • 我們通常將具有多個輸入變數的問題稱為多元迴歸(Multivariate regression)問題。
  • 具有時序輸入變數的迴歸問題稱為時間序列預測(Time series forecasting)問題。

由於迴歸預測模型預測了一個數量,模型的能力必須根據這些預測的誤差進行評估報告。

我們有許多方法能夠評估迴歸預測模型的能力,但最常見的方法可能就是計算均方根誤差(Root mean squared error,根據首字母縮寫為 RMSE)了。

比如說,如果一個迴歸預測模型作出了 2 個預測,其中預測值 1.5 的期望值是 1.0,另一個預測值是 3.3,期望值是 3.0,那麼 RMSE 則是:

RMSE = sqrt(average(error^2))
RMSE = sqrt(((1.0 - 1.5)^2 + (3.0 - 3.3)^2) / 2)
RMSE = sqrt((0.25 + 0.09) / 2)
RMSE = sqrt(0.17)
RMSE = 0.412

RMSE 的優點在於其誤差值的單位與預測值的單位是相同的。

能夠對迴歸預測模型進行學習的演算法被稱為迴歸演算法。

有一些演算法的名稱中包含 “迴歸” 這個詞,譬如說線性迴歸和邏輯迴歸,這可能會使人混淆。此處線性迴歸是一種迴歸演算法,然而 Logistic 迴歸則是一種分類演算法。

分類與迴歸之間的比較

分類預測建模問題不同於迴歸預測建模問題。

  • 分類的任務是預測離散的類標籤。
  • 迴歸的任務是預測連續的數量。

分類和迴歸演算法之間有一些重疊的部分,比如說:

  • 分類演算法可以預測連續值,這個連續值是以相應類標籤的概率的形式表現出來的。
  • 迴歸演算法可以預測離散值,這個離散值是以一個整形量的形式表現的。

通過進行一些小的修改,某些演算法可以同時用於分類和迴歸(例如決策樹演算法和人工神經網路)。另外的一些演算法則不能(或者說不能輕易地)同時用於兩種問題型別(例如用於迴歸預測建模的線性迴歸,和用於分類預測建模的 Logistic 迴歸)。

重點是,我們評估分類和迴歸預測的方式各不相同,毫無重疊部分:

  • 分類預測可以使用準確率進行評估,而回歸預測則不能。
  • 迴歸預測可以使用均方根誤差進行評估,而分類預測則不能。

分類和迴歸之間的轉換

在某些情況下,我們可以將回歸問題轉換為分類問題。比如說,要預測的數量可以轉換成離散的桶(Buckets)。

例如,$0 到 $100 的連續範圍內的金額可以轉換為 2 個桶:

  • 類別 0:0 到 49 美元
  • 類別 1:50 美元到 100 美元

這通常稱為離散化,得到的輸出變數是具有一個有序關係(稱為序數)的分類。

在某些情況下,分類問題可以轉化為迴歸問題。比如說,一個標籤可以轉換為一個連續的範圍。

一些演算法已經通過預測每個類的概率來實現這一目的,預測得到的概率可以擴充套件到特定的範圍:

quantity = min + probability * range

或者,可以對類別值進行排序,並對映到一個連續的範圍中:

  • $0 至 $49 範圍內的值屬於類別 1
  • $0 至 $100 範圍內的值屬於類別 2

如果分類問題中的類標籤不具有自然的序數關係,則將分類轉換為迴歸也許會導致模型具有使人訝異或低下的效能,因為模型可能會從輸入到連續的輸出範圍中學習到錯誤或著並不存在的對映。

擴充套件閱讀

如果您想繼續深入瞭解相應的內容,本節將提供更多有關該主題的資源。

總結

通過學習本教程,您瞭解到了分類和迴歸問題之間的差異所在。

具體說來,你學到了:

  • 預測建模問題,是關於學習從輸入到輸出的對映函式的問題,我們稱其為函式逼近。
  • 分類問題,就是要為樣本預測一組離散的類標籤輸出。
  • 迴歸問題,就是要為樣本預測一組連續數量的輸出。