分類問題(六)誤差分析

2022-06-22 23:48:11 字數 4275 閱讀 7202

誤差分析

如果上一章中的分類器是乙個真實的專案,則我們最好是要遵循機器學習專案步驟:探索資料、準備資料、嘗試多個模型、列出表現最好的幾個模型、使用gridsearchcv對超引數進行調優、盡可能實現自動化。現在,假設我們已經有了乙個效能還不錯的模型,接下來我們要找一些辦法去優化、提公升它。其中乙個辦法是就分析這個模型產生的各種不同型別的誤差、差錯。

首先我們看一下混淆矩陣,我們需要先使用cross_val_predict() 做**,然後呼叫confusion_matrix() 計算:

數字5的在資料集中較少

模型在數字5上的表現不如在其他數字上好

事實上我們可以確認這兩種問題都存在。

下面我們將關注點放在誤差上。首先我們需要將混淆矩陣中的每個值均除以對應類別的總數,用來對比誤差率(之前的混淆矩陣中,全部是精確的錯誤數,並不容易進行觀察與判斷):

row_sums = conf_mx.sum(axis=1, keepdims=true)

norm_conf_mx = conf_mx/row_sums

然後我們將主對角線填充0,僅保留誤差,最後畫出結果:

現在我們可以明顯地看到分類器產生的誤差。這裡回顧一下,行代表的是實際類別,列代表的是**類別。可以明顯地看到第8列非常亮,它告訴我們的是:很多被錯誤地分類成了數字8。然而,第8行卻並不差,說明:數字8一般都被正確地分類為了數字8。在圖中還可以看到混淆矩陣並不一定對稱。還可以看到數字3與數字5經常被混淆(行列均是),將數字3**為數字5,並將數字5**為數字3。

通過分析混淆矩陣,經常可以給我們提供乙個更深層的視角觀察模型表現,並提供我們提公升模型的思路。在上圖中,我們似乎需要將更多的精力花在減少錯誤**的數字8(false 8)。例如,我們可以獲取更多的看起來像數字8但不是數字8的訓練資料,這樣可以讓分類器學習如何將它們與真正的數字8區分開來。或者也可以構造一些新的屬性幫助分類器,例如,寫乙個演算法,計算回環的數目(例如,8有兩個,6有乙個,5沒有)。或者可以對進行預處理(例如用sk-image,pillow,或opencv),讓一些模式更突出的顯示出來(例如回環)。

分析單獨的各個誤差也是乙個很好的辦法,它可以告訴我們分類器做了什麼,並且為什麼分類失敗。不過這個過程會更難,並且更耗時。例如,我們可以畫出一些數字3與數字5:

左邊的兩個5×5 的圖展示的是被**為「數字3「的圖,右邊的兩幅5×5的圖顯示的是被**為」數字5「的圖。左下角與右上角的兩幅5×5的圖均是分類錯誤的。從這些圖可以看出,分類器在分類某些的時候,確實受到了手寫不規範的影響(例如左下角第1行第2列那個5,即使是人為分辨,也難以分辨為5還是3)。然而,除了少部分手寫的不清晰外,其他大部分的數字是能夠人為分辨的,所以光看圖很難理解為什麼分類器在這些數字上分類錯誤。其實它的原因是由於我們使用了乙個簡單的sgdclassifier,它是乙個線性模型。它做的事是:給每個畫素點分配乙個權重,在它看到一張新時,它僅會將所有帶權的畫素點強度累加起來,最後會為每個類別生成乙個分數。所以,由於數字3與數字5的畫素點相差的不多,這個模型會很容易將它們混淆。

3與5的主要區別是連線上方橫線與下方灣溝的那條**。如果我們在寫乙個3時,把這條**稍微靠了左邊,那這個分類器可能就會將它分類成5,反之亦然。換句話說,這個分類器對的平移與旋轉非常敏感。所以其中乙個減少3與5混淆不清的方法是預先處理,並確保它們在正中間,且沒有旋轉。這個可能會對減少誤差有所幫助。

數值分析 誤差分析

方法誤差與捨入誤差 方法誤差 在用數學模型去 某個值的時候,由於選取的數學模型產生的誤差 例如使用泰勒展開式求取近似f x 時,其對應的拉格朗日餘項即為方法誤差 捨入誤差 計算機進行數值計算時產生的誤差,然後計算時產生的新誤差 比如用計算機用3.14去近似pi 誤差限對於某個演算法或者說數學模型,我...

陣列問題分類之六

不包含本位置值的累乘陣列 陣列的partition調整 最短通路值 陣列中未出現的最小正整數 陣列排序之後相鄰數的最大差值 給定乙個n n的矩陣matrix,在這個矩陣中,只有0和1兩種值,返回最大正方形的邊長長度。如 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 ...

數值分析 2 誤差

在計算中,計算結果的精確度十分重要,誤差就是影響精度的東西 數學模型,即表示計算的公式或方程,本身就是近似的,就不就不精確,這種情況導致的誤差,就叫模型誤差。對物理世界中的引數進行觀測時產生的誤差,比如測定乙個人的身高,無論用多麼精密的工具,肯定都會存在誤差。用近似方法所產生的誤差,也叫方法誤差,比...