1. 程式人生 > >加州理工學院公開課:機器學習與資料探勘_誤差和噪聲(第四課)

加州理工學院公開課:機器學習與資料探勘_誤差和噪聲(第四課)

這一課的主題是:誤差分析與噪聲處理。

該課時的主要內容如下:

1、Nonlinear Transformation(Continue)(非線性轉換(續))

2、Error Measure (誤差度量)(重點)

3、Noisy Targets(噪聲指標)(重點)

4、Preamble to the Theory(理論熱身)

1、Nonlinear Transformation:

在上一節課的最後,作者舉了一個關於非線性轉換的例子。通過該例子我們可以直觀的看到非線性的資料可以被轉化成線性的資料並且利用線性模型進行處理,但是我們缺乏理論的指導,在這節課中,作者補充上了理論的指導,主要回答的問題是轉換什麼?

首先我們觀察轉換的流程:

首先我們通過觀察原始資料,找到轉換函式,然後對原始資料進行轉換,接著對轉換後的資料應用線性模型進行求解,得到 W 然後通過求逆就可以得到原始資料的模型,如下:

  

2、Error Measure

什麼是誤差度量?

誤差度量就是要找出衡量 h(假設集)與 f(目標函式)之間的差距,即找到度量 h 與 f 之間距離的方法。定義為:E(h,f)。

由於真實的 f 我們無法知道,但是我們手上有一些資料,這些資料是 f 的一部分,因此我們在度量誤差的時候就利用我們已經擁有的這些資料進行度量。這些資料都是離散的,我們必須得一個點一個點的經行度量,然後求這些點的距離平均值,把該平均值作為 E(h,f)的結果。所以定義 e(h(xn),f(xn)) 為現實中某個點的誤差。所以我們有:

其中 Ein 為樣本內誤差,Eout 為樣本外誤差(未知),Ex 表示求期望值。 

所以現在問題變為如何度量:e(h(xn),f(xn)) ?

在上一節課中我們求解線性迴歸的誤差的時候用到的方法是:平方差:(h(xn)-f(xn))^2.。

然而,現實中並沒有這麼容易就可以得到誤差的度量方法,有時候你的誤差度量方法可以決定你的結果的好壞!

在提出理論性的解答之前,我們先看一個例子:

假設現在要開發一款指紋儀,那麼我們需要考慮四種情況:

a、理論上你應該被成功識別(+1),事實上你被成功識別(+1)

b、理論上你不應該被識別(-1),事實上你沒有被成功識別(+1)

c、理論上你應該被成功識別(+1),事實上你沒有被成功識別(-1)(誤拒絕)

d、理論上你不應該被識別(-1),事實上你被成功識別(+1)(誤接受)

a、b 的行為跟預測一致,是我們需要的,現在誤差出現在 c、d 中。理論上,c、d 都是失敗的例子,它們的代價應該是一致的吧?因此它們產生的誤差應該是一致的吧?

考慮把該指紋儀投放在市場裡面使用,會員通過指紋儀確定身份,從而享受優惠,而非會員不享有該優惠。這時如果誤拒絕了一個會員,他按了幾次指紋都沒有識別成功,他因此感到很尷尬,很氣憤,並且決定以後不再到這裡購物了,該商場因此損失了一名顧客。相反,如果一個大膽的傢伙冒充會員進行指紋識別,很意外的他盡然被誤接受了,於是他這次購物享有優惠價。這對於商場來說,損失並不大,而且這種大膽的傢伙也不多!在這種情況下,我們可能會認為誤拒絕的損失比誤接受要大,所以我們給誤拒絕一個更大的誤差,期望能夠減少誤拒絕的發生。

此外,如果考慮把指紋儀用在美國中情局中情況會是怎樣的呢?情況可能要反過來了,這時認為誤接受是非常大的損失,相反誤拒絕則不會損失什麼,那些僱員頂多就抱怨一下,然後多按幾次手指而已罷了,畢竟他們是在上班,不是在購物。這時候你可能定義誤接受的誤差值要大於誤拒絕。

因此,結論是:誤差測量應該由使用者決定。可問題是並不是任何問題都能由使用者提供一個誤差度量方法,這個時候我們可以有以下的折中方案(記住,以下方案是第二選擇,任何時候,如果有使用者提供的誤差測量,都應該取用使用者的!)

a)還算合理的方案,比如:線性迴歸中的方差

b)比較友好的方案,比如:closed-form solution(閉合解也叫解析解,對應的是數值解

其中 b 方案是為了使計算更加方便而已。

3、Noisy Targets

理想是豐滿的,但現實是骨感的!我們的第一手資料不可能全部都是有用的,其中包括很多的噪聲,因此我們需要對噪聲進行處理,否則學習的結果將是不可靠的!

之前我們的目標是從假設集中找到一個能最好逼近目標函式的函式,然而,目標函式並不是真正意義上的函式,根據數學的定義,函式是一個自變數只能對應一個因變數,而在我們的目標函式中,一個自變數卻可以對應多個因變數。比如:銀行貸款時間中,我們的輸入資料是年薪,即我們根據使用者的年薪決定是否進行貸款。但是現實中可能會出現兩個使用者他們的年薪相同,但是其中一人拖欠貸款,另一個人沒有。所以我們認為這裡面出現噪聲,如果不對這些噪聲進行處理則可能會帶來不可靠的結果!

為了處理噪聲,我們將要改變目標函式,使得 f(x) = E(y*P(y|x)),即我們取的是一個數學期望值。考慮到樣本資料也會影響學習的結果,我們最後修改 f = E( P(x)*y*P(y|x) )。我不是很理解為什麼要加入 P(x),可能是因為當我們的的資料集都比較集中,比如都是高薪人群,而其中有小部分是低薪人群時,那麼得到的結果更應該有更多的關注點在高薪人群這裡,所以給高薪人群一個較高的權值(P(x)).

(注:在作者的 PPT 中, f(x) = E(y|x) ,不知道是不是像我上面那樣理解,還望指教! )

然後作者得出:Noisy Targets = { f(x)再加上噪聲;y - f(x) }。

最後作者說到 f(x) 是一個特殊的噪聲目標,除了 y = f(x) ,其它時候都有 P(y|x)  = 0。這裡十分不明白!

原文:

下面是無監督學習的流程圖:

      

4、Preamble to the Theory

這部分主要是介紹接下來兩週的課程安排,作為一個熱身運動。

回顧歷史,才能展望未來。我們之前學習過機器學習的可行性。

我們有 Ein ~ Eout(~ 表示約等於)

我們的目標是 Eout ~ 0

我們能做的是盡力使 Ein ~ 0

然而在現實中有些東西是不可預測的,比如股市,你無法使你的 Eout ~ 0 ,因為環境因素太複雜,我們沒辦法進行很好地預測。當我們的 Ein 在 47% 的時候就已經很了不起了,這時你就應該出手了。反而,如果我們的 Ein ~ 0,則你應該謹慎,因為這個可能是一個虛偽的資料!!!這時你會發現 Ein 已經不能代表 Eout 了,它們的差距已經非常大了!這也是我們接下來將要學習的理論知識:描述有限假設集下學習的可能性


根據上圖可知,當模型的複雜度不斷增大的時候,我們的輸入引數也相應的變多,當引數變多的同時,我們得到的結果的可能性也會變大,因此 Ein 更容易出現接近 0 的結果,同時,Ein 與 Eout 的差距也變大了。

複雜度上升 ----> Ein 下降

複雜度上升------> Ein - Eout 上升

面對真實的問題,複雜度一般都很大,不然也不會用到機器學習了,這是不是說明機器學習不能勝任了?

非也!在接下來的課程裡面我們將會學到很多的技巧來解決上面的矛盾,比如正規化。因此機器學習能勝任!

結論:

該課時主要講解了非線性轉換的目標問題、如何計算誤差(由使用者決定)、如何處理噪聲的問題(數學期望值)及對將要學到的理論知識做了個熱身運動。是一們承上啟下的課時。期待下一課時!

如有理解不到位的地方還望指教!