ML01 機器學習后利用混淆矩陣Confusion matrix 進行結果分析


 

目標: 快速理解什么是混淆矩陣, 混淆矩陣是用來干嘛的。

  

首先理解什么是confusion matrix

看定義,在機器學習領域,混淆矩陣(confusion matrix),又稱為可能性表格或是錯誤矩陣。它是一種特定的矩陣用來呈現算法性能的效果,通常是監督學習(非監督學習,通常用匹配矩陣:matching matrix)。

大白話來講,就是對機器學習算法的運行結果進行評價,效果如何,精確度怎么樣而已。

舉個例子,在什么場景下需要這個confusion matrix

假設有一個用來對貓(cats)、狗(dogs)、兔子(rabbits)進行機器學習分類,預測結果(Predicted class)如下圖所示。

而實際上共有 27 只動物:8只貓, 6條狗, 13只兔子,如(actual class)所示。


從上表中能看出機器學習預測后的結果了吧, 

Cat的正確率: 5/8,  3只貓誤判成狗了。

Dog的正確率: 3/6,  2只當成貓,一只誤判成兔子。

Rabbit 的正確率:11/13, 准確率還不錯,只有2只誤判成狗

場景弄明白了,接下來,confusion matrix的介紹真正開始了。

confusion matrix 的組成

混淆矩陣是由false positivesfalsenegativestrue positivestrue negatives組成的兩行兩列的表格。它允許我們做出更多的分析,而不僅僅是局限在正確率。准確率對於分類器的性能分析來說,並不是一個很好地衡量指標,因為如果數據集不平衡(每一類的數據樣本數量相差太大),很可能會出現誤導性的結果。

例如,如果在一個數據集中有95只貓,但是只有5條狗,那么某些分類器很可能偏向於將所有的樣本預測成貓。整體准確率為95%,但是實際上該分類器對貓的識別率是100%,而對狗的識別率是0%

對於上面的混淆矩陣,其對應的對貓這個類別的混淆表格如下:

大白話有來了,其實這個矩陣就是告訴你一下信息:

總共8只貓給你預測:

5只貓都對了(true positive)              2只狗錯當成了貓

3只貓錯當成狗了(false negative)   剩下的(27-5-2-3)=17 都對啦。

 

 如何使用confusion matrix

直接利用Accord 提供的類進行統計。

using Accord.Statistics.Analysis 

// 機器學習的預測結構
 bool[] expected = Classes.Decide(table.GetColumn(2));

// 實際結果
 bool[] output = svm.Decide(inputs);

 // Use confusion matrix to compute some performance metrics
dgvPerformance.DataSource = new [] { new ConfusionMatrix(output, expected) };

 

reference:https://en.wikipedia.org/wiki/Confusion_matrix

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM