R中的混淆矩陣:如何製作和計算[附例子]

已發表: 2021-03-09

R 已成為當今用於數據和統計分析的領先軟件包之一。 它因其強大的計算、視覺和圖形功能而成為首選的開源環境。 如果您是工程專業的學生、商業分析專業人士或對數據科學有濃厚興趣的人,那麼學習 R 編程語言可以在很多方面為您提供幫助。

在本文中,我們將通過這個集成套件介紹機器學習的一些基本概念。 更具體地說,我們將討論如何在 R 中計算混淆矩陣

但在我們繼續討論技術細節之前,讓我們首先了解為什麼我們為此目的選擇了 R。 正是由於以下優點,這種編程語言在全世界的統計學家和數據科學家中越來越受歡迎:

  • 可重現:使用 R,您可以重現報告並編寫可重用的代碼
  • 可共享:它的學習曲線較低,為協作開闢了道路
  • 可重複:任何人不僅可以理解您所做的事情,還可以重複這些步驟以在他們的機器上創建相同的功能

由於上述原因,R語言在機器學習領域的使用也有所回升。 您無需成為專家級程序員即可理解其語法。 因此,我們將在下一節中向您介紹一些基礎知識。

目錄

什麼是混淆矩陣?

混淆矩陣或誤差矩陣處理統計中的標準分類問題。 它包含一個特定的表格佈局,便於數據分析師可視化算法的執行方式。 這尤其適用於監督學習算法。

為了進一步闡述,混淆矩陣遵循 N x N 格式,其中 N 是指目標類別的數量。 您可以使用此表或矩陣來評估分類模型的性能。 這是可能的,因為矩陣將預測值與目標值進行比較。

簡而言之,您可以描述您的機器學習模型(在這種情況下為分類器)如何處理一組測試數據(您已經擁有真實值)。

要理解此方法,您需要熟悉以下術語:

  • True Positive (TP):正確預測正值
  • 誤報 (FP):負值被錯誤地預測為正值
  • 假陰性 (FN):預測為負的正值
  • True Negative (TN):負值預測為實際負值

讓我們看一些例子以獲得更多的清晰度。

混淆矩陣示例

  • 真陽性

當您預測印度將贏得板球世界杯時,它贏了。

  • 假陽性

當您期望印度會贏時,它卻輸了。

  • 假陰性

當你預測法國不會贏時,它贏了。

  • 真陰性

當您預測印度將“不會贏得”板球世界杯時,它在現實生活中輸掉了系列賽。

隨著我們進一步前進,您應該記住所有預測值都被描述為:正、負、真和假。

如何計算R中的混淆矩陣?

考慮一個場景,您有一個預期或已知值列表以及來自機器學習模型的另一個預測列表。 在 R 中,您可以使用插入符號庫中的一個簡單函數來計算混淆矩陣:confusionMatrix()。 它不僅可以計算矩陣,還可以返回結果的詳細報告。

您可以按照以下步驟來練習數據挖掘的過程:

  • 用預期的結果測試給定的數據集。
  • 預測測試數據集的行。
  • 確定每個類別的正確和錯誤預測的總數。

完成此操作後,您會發現按以下方式組織的數字:

  • 矩陣的每一行都對應一個預測的類,每一列都鏈接到一個實際的類。
  • 表中反映了正確和錯誤分類的總數,以及每個類別的總和。

假設您有 10 個人,分為男性和女性兩類。 當您知道 2 名男性被歸類為女性,而 1 名女性被歸類為男性時,您必須將信息排列為混淆矩陣。

女性男性

婦女 3 1

男子2 4

在這裡,正確的值排列在矩陣的左上角到右下角的對角線上 (3 + 4)。 結果告訴我們,將男性成員預測為女性比將女性預測為男性存在更多錯誤。 該算法在 10 個可能的結果中做出了 7 個正確的預測,這意味著它有 70% 的準確率。

在 R中製作和計算混淆矩陣的指南

如您所見,混淆矩陣函數是檢查預測可能結果的有用工具。 因此,在開始創建矩陣之前,您首先需要對概率值進行“切割”。 換句話說,您需要標記一個閾值以將您的概率轉化為類別預測。

為此,您可以使用 ifelse() 函數。 例如:

類預測 <-

ifelse (probability_prediction > 0.50,

“正類”,

“負類”

)

您還可以編寫 table() 函數以在基數 R 中製作列聯表。但是,confusionMatrix() 函數已知會產生有價值的輔助統計信息。

下一步是計算混淆矩陣和其他相關統計數據。 在這裡,您需要預測結果和實際結果。 舉個例子,下面給出的陳述:

混淆矩陣(預測的,實際的)

現在,您應該繼續將您的數字預測轉換為類別預測向量 sat p_class。 假設您想使用 0.50 的截止值。

此外,在進行預測時,不要忘記用單獨的指標命名正類和負類。 我們將正類稱為“T”,將負類稱為“L”。 這樣做是為了將類與原始數據匹配。

現在你在測試數據集中有了 p_class 和實際值,你可以開始製作你的混淆矩陣,調用confusionMatrix() 函數。

或者,您可能希望確定數據挖掘模型的準確性。 在這種情況下,建議使用 0.10 而不是 0.90 的閾值。 此後,您可以繼續執行與之前練習中相同的步驟。

使用您的新預測類,您可以重複此調用:

pred <- ifelse(概率 > 閾值,“T”,“L”)

最後,您可以在插入符號中使用confusionMatrix() 函數:

混淆矩陣(預測的,實際的)

至此,我們結束了本教程,了解 R 中機器學習的混淆矩陣函數。希望對您有所幫助!

結論

如果您想了解 R(數據科學),請查看我們的 PG 數據科學文憑,該文憑專為在職專業人士而設,提供 10 多個案例研究和項目、實用的實踐研討會、行業專家指導、一對一1 與行業導師,400 多個小時的學習和頂級公司的工作協助。

創建混淆矩陣的需要是什麼?

以下原因向我們介紹了使用混淆矩陣的好處以及它如何處理性能問題。
1. 需要混淆矩陣來消除分類準確性的問題。 分類率經常通過隱藏模型的必要細節而導致一些問題。
2. 混淆矩陣可以深入了解分類模型中的預測和錯誤類型。 正確和錯誤的預測以總結的方式呈現。
3. 對錯誤及其類型進行分類,以便您了解模型的性能。

如何計算R中的混淆矩陣?

R中的混淆矩陣可以通過使用插入符號庫的“confusionMatrix()”函數來計算。 該函數不僅計算矩陣,還返回矩陣的詳細報告。 您必須按照一些步驟來計算您的混淆矩陣。
1. 測試你的數據集。
2. 預測它的總行數。
3. 預測每個類的正確和錯誤預測總數。
挖掘數據後,您將獲得按行組織的數字。 行將連接到預測類,而列將連接到實際類。 正確的值將在對角線上。 添加所有值,您將獲得矩陣的準確度百分比。

如何衡量混淆矩陣中的性能?

您可以使用 2x2 混淆矩陣來計算模型的準確率。 以下公式將為您提供成功率或準確率:
準確度 = (TP+TN)/(TP+TN+FP+FN)
其中,TP = 真陽性,TN = 真陰性,FP = 假陽性,FN = 假陰性
您的模型的錯誤率也可以使用比率計算公式計算,即:
準確度 = (TP+TN)/(TP+TN+FP+FN) = 1-準確度
錯誤率的概念很簡單。 假設您的模型的準確率為 80%,那麼您的模型的錯誤率為 20%。