通過性能對比來選擇機器學習模型

通過性能對比來選擇機器學習模型

對於剛開始進入機器學習之旅的人來說,瞭解所有機器學習模型及其之間的差異似乎是一項艱鉅的任務。在我們瞭解模型如何工作以及如何利用它之後,我們將需要進入現實世界並將我們學到的知識應用到現實世界中。對於現實世界的問題,我們沒有給出一個特定的模型來調整。我們必須評估一組模型,然後決定我們想要使用哪種機器學習模型。

問題:

當我們開始考慮解決機器學習中的問題時,我們必須考慮以下幾點:

  • 問題定義
  • 數據集的可用性
  • 預期的解決方案
  • 業務限制

鑑於上述所有信息,我們作為AI開發人員的工作是在給定數據集上設計和訓練機器學習模型以獲得預期結果。一旦我們知道要構建哪個模型,構建模型就會變得微不足道。有大量資源可以幫助我們。python構建簡單機器學習模型的最佳庫之一是scikit-learn。使用scikit-learn(scikit-learn.org),我們必須編寫的代碼量顯著減少。我們可以在scikit-learn中找到幾乎所有流行模型的實現,因此我們的工作現在已經簡化並減少到只為我們的任務選擇最佳模型並調整一些參數。這可以通過幾行代碼完成。

我們的目標是衡量不同分類模型的性能,並嘗試為我們的任務挑選最佳分類模型。為此,我們將看到我們的模型在同一數據集上的表現。

數據集:

我們選擇的數據集是Kaggle的汽車評估數據集(https://www.kaggle.com/elikplim/car-evaluation-data-set)。數據包括許多特徵

  • 相對購買成本
  • 維修費用
  • 門的數量
  • boot space等

我們的任務是預測某輛車是否處於可接受的狀態。

汽車可能屬於4類:unacceptable, acceptable, good 和 very good。所以我們的問題變成了一個有4個類的分類問題。現在我們將嘗試選擇能夠告訴我們汽車是否狀況良好的最佳模型。

我們如何選擇正確的模型?

我們可以通過多種方式衡量模型的表現。性能測量的核心思想是我們的模型能夠準確地預測給定的數據點。還有其他考慮因素,如延遲,內存使用等,但本文中我們只討論模型的預測準確性。

在本文中我們選擇評估的指標是:

  1. 準確性
  2. 精度
  3. 召回
  4. F1得分
  5. ROC(AUC)
  6. 對數損失

所有這些度量將給我們一種不同的性能感覺。儘管一個好的模型在這些度量標準中表現良好,但是我們應該根據我們的問題陳述來選擇度量標準。

混淆矩陣 :要理解大多數這些指標,我們首先需要了解混淆矩陣是什麼。假設我們有一個2級分類問題。我們將一個類稱為“YES”,將另一個類稱為“NO”。現在我們有一組給出的實際分類作為我們的測試數據。我們還有一組相同測試數據點的預測值。

通過性能對比來選擇機器學習模型

混亂矩陣

該圖像描述了具有165個點的數據集的混淆矩陣。

  • TN - 真陰性(實際數據集中的YES點數)
  • TP - 真陽性(實際數據集中NO點數)
  • FN - 假陰性(錯誤預測為NO的點數)
  • FP - 誤報(錯誤預測為YES的點數)

我們來看看這些指標的含義:

如果n =我們的測試數據集中的總點數

1.準確度:準確度衡量預測總數的正確預測數,即模型正確預測的次數。這是一個數據點。當我們有多個要測試的數據點時,準確度由整個測試數據集上模型的平均準確度給出。

通過性能對比來選擇機器學習模型

(準確度公式)

準確度也可以用混淆矩陣定義為

Acc =(TP + TN)/ n

2.Precision:我們得到正確的Yes預測的次數

Precision = TP / predicted Yes

3.Recall:正確預測Yes的次數

Recall = TP/ actual Yes

4.F1分數:F1分數同時考慮精度和召回率

通過性能對比來選擇機器學習模型

5.ROC(AUC):FPR(X軸)到TPR(Y軸)的圖。其中:

FPR = FP rate = FP / actual No

TPR = TP rate = TP / actual Yes

6.對數損失:它也是預測值與實際值之差的度量。

測試我們的模型:

現在我們已經定義了我們的指標,讓我們試著看看我們在不同模型上得到了什麼結果。

我們將在分析中使用以下模型:

  • Logistic迴歸
  • 決策樹
  • 隨機森林
  • K最近鄰
  • 樸素貝葉斯(多個類的多項式)

我們一個接一個地嘗試一下。

Logistic迴歸:

通過性能對比來選擇機器學習模型

混淆矩陣

通過性能對比來選擇機器學習模型

決策樹:

通過性能對比來選擇機器學習模型

混淆矩陣

通過性能對比來選擇機器學習模型

隨機森林:

通過性能對比來選擇機器學習模型

混淆矩陣

通過性能對比來選擇機器學習模型

K最近鄰:

通過性能對比來選擇機器學習模型

混淆矩陣

通過性能對比來選擇機器學習模型

樸素貝葉斯:

通過性能對比來選擇機器學習模型

混淆矩陣

通過性能對比來選擇機器學習模型

比較我們的所有指標,我們得到如下圖表:

通過性能對比來選擇機器學習模型

觀察:

根據我們在數據集上運行不同模型所收集的數據,我們可以看到Accuracy,Precision,Recall和F1 Scores都是相互成比例的。這意味著對於我們的情況,我們可以使用其中任何一個來評估我們的模型。

這些指標中表現最好的模型是簡單的決策樹,其次是隨機森林和邏輯迴歸。

Confusion Matrices讓我們更清楚地瞭解性能。我們必須看一下對角線上的高數字。對角線以外的數字越高,說明分類錯誤。我們可以看到決策樹的錯誤分類最少。

如果我們查看對數損失比較,情況就會大不相同。這裡決策樹比我們所有的模型都要糟糕得多,而Logistic迴歸給我們帶來了最好的結果。

這些差異違背了我們的直覺,因為我們期望更準確的模型具有最小的損失。這需要進一步調查我們為什麼會在決策樹中獲得如此高的損失。

但對於我們的案例,決策樹分類器似乎表現最好。如果我們想要穩紮穩打(這在現實生活中總是一個很好的策略),我們會選擇隨機森林或邏輯迴歸。

在查看這些結果時,我們需要記住以下幾點:

  • 我們的數據集僅包含大約1700個點,這遠遠不足以令人滿意地訓練我們的模型。在現實生活中,我們將擁有更大的數據集,因此在幾個模型中具有不同程度的性能。
  • 我們需要通過更嚴格的調整來評估我們的模型,以確定哪一個最擬合我們的數據。我們可以使用scikit-learn的模型選擇庫(https://scikit-learn.org/stable/modules/classes.html#module-sklearn.model_selection)來查找調整模型的最佳參數。

結論:

我們可以使用不同的度量標準來比較不同的模型,並選擇最適合我們需求的模型。這些度量標準很重要,但是還有其他考慮因素。通常都有延遲性需求,最低準確度要求,更注重減少假陰性結果,等等。


分享到:


相關文章: