1. 程式人生 > >機器學習基石 Lecture8: Noise and Error

機器學習基石 Lecture8: Noise and Error

機器學習基石 Lecture8: Noise and Error

Noise and Error

前面講的機器學習的學習流程如下圖所示:
在這裡插入圖片描述
但是這個流程裡假設的都是有一個真實的函式 f f

來生成樣本,但是現實中很有可能樣本里帶有一些噪音,也就是無法單純用一個函式 f f 來刻畫 y y x
x
的關係。比如在信用卡問題裡有以下幾種噪音:

  1. y的噪音:對錶現良好的使用者標記為-1(不發信用卡)
  2. y的噪音:同樣的使用者不同的標籤
  3. x的噪音:不準確的使用者資訊

在有噪音的情況下,VC bound的不等式是否依然成立呢?我們可以從頭開始推導,但是要包含有噪音的情況。建模成每個樣本 x x

服從一個概率分佈 P ( x ) P(x) ,而對於一個給定的 x x ,對應的 y y 也服從一個條件分佈 P ( y x ) P(y|x) 。這樣就包含了噪音的存在。最終的結果是VC bound的結果依然類似的成立:
在這裡插入圖片描述
這時候我們機器學習的目標就從學習一個目標函式 f f 變成了學習一個概率分佈 P ( y x ) P(y|x) 。而對一個給定 x x 有確定性結果 y y 的目標函式 f f 是這樣一個概率分佈的特殊情況。因此我們得到了一個新的機器學習的流程:
在這裡插入圖片描述

Error Measure

當我們得到一個最終的學習結果 g g 的時候需要將其與真實函式 f f 作對比,這樣才能夠知道最終學習到的效果如何。比如之前在PLA裡考慮的在取樣集合之外函式 g g 的錯誤率 E o u t ( g ) = ϵ [ g ( x ) f ( x ) ] E_{out}(g) = \epsilon [g(x)\neq f(x)] 就是一種比較方式。更一般的說,這種方式叫做error measure E(g,f)。一般評估錯誤有幾個自然的想法:

  1. 在資料集外未知的x上測試錯誤率(out-of-sample)在這裡插入圖片描述
  2. 在每個單獨的x之上評估再進行平均(pointwise)在這裡插入圖片描述
  3. 使用簡單的是否預測正確來判斷(classification,0/1 error)
    在這裡插入圖片描述
    0/1 error一般使用在分類中,還有一種重要的error叫做平方誤差,一般用在迴歸中:
    在這裡插入圖片描述
    比如對於一個簡單的問題而言,使用不同的error就可以針對不同的“最優”的目標函式 f f
    在這裡插入圖片描述
    這樣error measure在機器學習的過程中就能對演算法起到一個引導的作用,引導演算法得到不同的最終結果:
    在這裡插入圖片描述

Algorithmic Error Measure

上面的0/1 error中對於不同型別的判斷錯誤同等對待,但是實際應用中不同的錯誤型別可能導致的嚴重後果完全不同。比如如下一個指紋識別的例子。當用在超市會員打折時,false reject可能會導致使用者非常生氣,而false accept導致的結果也沒有很壞。因此可能對不同的錯誤型別賦予不同的權重:
在這裡插入圖片描述
但如果是CIA的指紋識別機,不同的錯誤導致的後果又是與超市完全相反:
在這裡插入圖片描述
因此對於不同的應用場景而言我們會為演算法定義一個新的err來表達對不同錯誤的容忍程度,用 e r r ^ \widehat{err} 表示(因為和問題裡實際的err有可能還是不一樣)。當定義 e r r ^ \widehat{err} 時我們需要考慮兩方面,一個是合理性,一個是是否易於實現:
在這裡插入圖片描述
於是對於演算法而言就有了新的 e r r ^ \widehat{err} 來指導其選擇假設函式,新的機器學習流程如下:
在這裡插入圖片描述

Weighted Classification

對於不同的錯誤分類需要有一個權重來表示它的重要程度,因此新的計算錯誤率的時候需要將係數也加入其中:
在這裡插入圖片描述
於是我們新定義了一個帶權重的集合內錯誤率:
在這裡插入圖片描述
這對於PLA演算法而言沒有影響,因為對於線性可分的資料集,最終得到的結果集合內錯誤率應該是0。但是對於非線性可分的資料集的pocket PLA演算法而言就需要進行對應的修改。修改出現在使用剛更新的 w t + 1 w_{t+1} 判斷是否需要替代當前最好的係數 w ^ \widehat{w} 的時候。初始的判斷方式是使用集合內的錯誤率 E i n E_{in} ,現在替換為 E i n w E_{in}^{w} 即可。

但是對於pocket PLA演算法而言,我們能夠保證使用 E i n E_{in} 能得到較好的結果,但是使用 E i n w E_{in}^{w} 呢?

這個時候只需要將對應錯誤型別的樣例進行正比於係數的虛擬賦值,這樣就將這個使用了 E i n w E_{in}^{w} 的問題轉化為了一個使用了 E i n 0 / 1 E_{in}^{0/1} 錯誤的問題:
在這裡插入圖片描述
轉化之後的問題是當前已經解決的問題,因此對於這個形式的err,pocket PLA演算法的結果也能得到保證。轉化後的問題為:
在這裡插入圖片描述

最後注意一個習題,習題表明了對於正負例比例嚴重失調的時候,使用帶權重的錯誤能夠用來避免演算法只返回一個不變的結果:
在這裡插入圖片描述