林軒田-機器學習基石 課堂筆記(八) Noise and Error

1、Noise and Probabilistic Target 


經過之前一段時間的學習,機器學習流程圖如上,之前的數據集沒有noise存在,那麼我們現在考慮樣本數據中存在噪音與錯誤的情況。 


同樣結合之前銀行辦理信用卡的例子,當銀行錯誤的估計了是否爲客戶辦理信用卡的情況時;當對應同一個客戶產生了不同的輸出時;當銀行記錄了錯誤的客戶信息時等都會產生噪音。

再結合之前的罐子和彈珠的例子,我們知道VC bound的實質是罐子中橘色彈珠的數量(目標函數推導出的值與實際值不一樣),這時罐中的彈珠顏色一定,即不存在噪音,我們稱爲deterministic marbles,那如果例子中存在噪音(樣本的輸出與目標函數的輸出並不完全一致)要怎麼辦呢。

我們想象一種特別的彈珠,其顏色不固定,會不斷的變化。此時罐中每時刻仍然會有一定數量比例的橘色彈珠。如果在某一瞬間我們抽出一堆彈珠,記錄下那個瞬間彈珠顏色的比例,那麼這個比例仍然能估計罐中彈珠顏色的比例。這種會變色的彈珠我們稱爲probabilistic(noisy) marbles,對應到機器學習上,就是可能會有noise的發生的樣本。

此時y服從概率分佈P(y|x),這一形式被稱爲目標分佈(target distribution)而不再是目標函數,它告訴我們最好的選擇是什麼,同時在這個分佈上存在多少的noise。這種方法稱爲生成方法。



例如在某個樣本點,y=+1的概率爲0.7,y=-1的概率爲0.3,我們一定會選擇錯誤率小的目標,即y=+1,那麼y=-1的概率就是噪音。數學上可以證明如果數據集按照P(y|x)

概率分佈且是iid的,那麼以前證明機器可以學習的方法依然奏效,VC Dimension有限即可推斷Ein和Eout是近似的。不存在噪音的數據集可看作特殊的目標分佈,其概率僅爲0和1,即y=f(x)和y!=f(x)。 



所以現在我們learning的有兩個部分了,第一個部分是P(x),它告訴我們哪個點是重要的,如果某個點的P(x)很大,就代表它常常會被sample到,常在Ein中看到,此時在算Eout時它也會比較重要一點;另一個部分是P(y|x),我們的目標是找到最理想的(錯誤率最小)目標分佈(mini-target)。至此總結一下我們的學習目標:在最常見的樣本點上儘可能分類正確。 



現在我們可以在存在noise的情況下重新畫出learning的流程圖: 



2、Error Measure

我們前面的推導幾乎都在證明g跟f到底一不一樣,但是之前我們都是通過Eout來衡量誤差,下面說明更一般的錯誤衡量有哪些方式。我們之前使用的g有以下三個特性: 



PS:分類錯誤又叫0/1錯誤。


之前我們都是考慮每個點上的對或錯然後做一個加權平均,這種方式我們稱爲pointwise error,用err表示。


 

在未來的學習中我們主要會考慮這種pointwise的錯誤衡量方式,雖然有很多其他的錯誤衡量的方式但他們通常比較複雜,因此需要從pointwise的方面出發作簡化。

我們現在想想,有哪些pointwise的方法呢?之前已經學習過一個0/1 error(f(x)與g(x)是否一樣),通常用於分類;未來還會學習另一種錯誤衡量方法— —squared error(f(x)與g(x)差的平方,即表示誤差的距離),通常用於迴歸。這是兩個基本的錯誤衡量的方法,未來我們會學習更多的方法。 



mini-target與err有關,也與P(y|x)有關,舉個例子: 



我們現在知道有了錯誤衡量,會影響到最好的f長什麼樣子,所以今天我們learning的流程圖中不能只有我們不知道的p或f,實際上我們必須要告訴演算法我們要用什麼樣的錯誤衡量。

我們需要知道VC的整個推導,對很多的hypothesis set和很多的err都會work。例如今天我們不是做分類而是做迴歸分析,那麼我們將VC的推導做一些定義上的修改(例如我們在實數輸出上的VC Dimension怎麼算),我們是可以得到幾乎一樣的VC bound。 




3、Algorithmic Error Measure

對於二元分類,其Error有兩種:false reject(誤將正類認爲是負類)和false accept(誤將負類認爲是正類)。 



對於不同的機器學習問題,這兩種錯誤的權重也不同。

例如對於超市給經常消費的會員折扣,如果出現false accept(給第一次來的用戶折扣),超市只是少賺一點錢;如果出現了false reject(拒絕給常來的用戶折扣),用戶可能非常生氣導致超市失去顧客。因此超市對於false reject的錯誤的權重應該比較高,相對來講false accept的錯誤的權重就不那麼高了。 



另外一個例子,如果CIA 的員工要查看某資料,如果出現false accept(給權限不夠的員工查看的資格),那麼可能會導致信息的泄露;如果出現了false reject(拒絕有資格的員工查看權限),員工最多隻是抱怨一下。因此這種情況下false accept的錯誤的權重就更高一些了。 



錯誤是基於應用情況和用戶依賴進行考慮的,所以在我們設計演算法的時候,就應該想辦法把錯誤衡量的方式用進去。當然最好的方法是按照各種錯誤的具體損失情況來設計錯誤衡量,但是很多時候我們沒有辦法確定錯誤對應的損失具體的值是多少(比如詢問CIA在false accept的情況下損失值到底是1000還是2000還是5000是不確定的)。所以在設計演算法時我們常常會用到替代的方法。目前主要有兩種替代的原則(基於):


 

當加入err之後,機器學習的流程圖如下: 



4、Weighted Classification

下面錯誤表示方式稱爲成本矩陣(cost matrix)或損失矩陣(loss matrix)或錯誤矩陣(error matrix)。



這種錯誤矩陣分別表示如下的Ein(h)和Eout(h),我們稱爲Weighted Classification。 



由於VC bound在各種算法中都可以起作用,因此只要使Ein儘可能小,就能保證Eout是小的。我們把權重考慮進來後,Ein表示如下: 



我們怎樣讓Ein越小越好呢?

如果數據是線性可分的情況,在PLA算法中我們只要不停運行下去,就能找到最小的Ein。

如果數據是線性不可分的情況,對於pocket算法,當初我們的設想是如果我們新找到更好的w比口袋裏的好,那麼我就把口袋裏的w換掉。pocket算法可以讓0/1情況下的Ein儘可能小,但是對於加權情況下是是否能使Ein儘可能小卻沒有被證明。

一種想法是將加權情況下的Ein轉化成與0/1情況下的Ein等價的問題。對於CIA那個例子,-1情況下權值爲1000,那麼我們在xi=-1時,將資料複製1000倍,再將錯誤矩陣表示爲不含加權情況的錯誤矩陣。這種錯誤矩陣與0/1情況下的pocket算法的錯誤矩陣一致,唯一的區別就是當某個樣本出錯時,會複製出1000倍的損失,後面的步驟與傳統的pocket算法一致,這樣就可以設計出一個新的pocket算法來適應加權情況。 



當然我們不會真的將數據複製1000倍,實際上我們常採用“virtual copying”的方式。但是在這種情況下,算法搜尋過程中碰到-1的數據樣本的概率也增大了1000倍,因此我們要保證抽查-1錯誤的概率比是抽查+1錯誤的1000倍。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章