《Pattern Recognition and Machine Learning》第一章

哲遠發表於2012-01-04

enter image description here

最近一直在研讀Pattern Recognition and Machine Learning 這本書,因為今年九月份就要去臺灣讀書,但是感覺自己的數學水平實在是太糟糕,特別是我們在軟體學院的,技術的學一大堆,但是對於數學方面則是一竅不通,這對於未來的研究生生涯實在是太不利,所以我挑選了Pattern Recognition and Machine Learning這本書來進行學習,一方面提高自己對於模式識別領域的認知,因為以後在研究生的時候會用到相關的內容(雖然不一定知道有沒有用,但是看一下也是好的)。 模式識別對於新聽到這個名詞的人來說,好像是一個非常神祕的領域,但是每個人日常生活中都有了解,例如說,我們可以非常清楚的分辨出一個人是男人,還是女人,男人和女人就是模式,人從出生開始,逐漸地意識到性別的差異,從而在成長的過程中,逐漸知道哪些特徵是男人的特徵(例如鬍鬚,喉結),哪些是女性的特徵(例如長髮,胸部等),當然,並不是每一個人都可以分辨清楚的,例如春哥,著姐等長的像其他性別其實是相反性別的。這個就導致了我們對於這些人的識別的困難。從某種意義上來說,這種故意混淆對自身識別的方法,卻引領了一段時間的新的文化現象。 所以我們可以看見,模式識別不是一個十分新鮮的領域,他應用與每個人生活的方方面面,正因為人類有對模式進行識別的能力,我們才能夠周圍識別事物的本質(至少是表象)。 要了解模式識別的理論基礎,我們必須對一下的幾個數學領域進行綜合應用和深入的探討:

1、線性代數:模式識別中首先運用到的,就是大量的供機器進行學習的的樣本,然後才能夠讓機器認知新的樣本內容,因此,使用線性代數,能夠表達所需要的資料。

2、概率論:概率論在模式識別中同樣也是相當重要的,我們在判斷一個事務時,通常很難給出某一個事物的性質是:“絕對的”,就像我們推測一個性別特徵不明顯的人一樣,會給出一個結論說這個人"大概"是男的或者是女的,這個就是概率論在模式識別中的應用基礎。

要了解模式識別的一個具體的應用,我們可以舉一個簡單的例子:

多項式曲線擬合:

我們已知有N組輸入資料x,代表[x1,x2,x3...xN],和對應的結果t:[t1,t2,t3...tN],然後繼續給出另外一個資料(x',t')判斷它是否在測試資料的趨勢之內,我們必須要對原先的資料進行擬合,得到一個曲線,然後用該曲線對新的資料進行匹配。

enter image description here

那麼我們如何得到這個式子中的值呢,而且根據M(維度不同大小)我們可以得到不同的w的個數,而在M提前確定的情況下,我們需要有一個數量指標來確定w,這就是目標值到擬合曲線的誤差之和: enter image description here

所以影響引數w的兩個因素,一個是M,另外一個則是誤差E(w),對於一般的對數學有概念的人來說,M越大,越能降低E(n)的值,因為擬合的引數越多,對這些資料的擬合程度越高,但是這裡需要提出的是,如果我們過度地對引數進行擬合,則會導致對輸入資料反應過度敏感,反而導致結果擬合效果下降。這裡舉一個例子:

enter image description here

由上圖可見,我們通過對M設定不同的值進行擬合,藍線為擬合的趨勢圖,紅線為實際的趨勢圖,可以看見,雖然當M=9時,E(x)=0但是卻違背了實際的數的趨勢,相反,M=3時,趨勢確是最為符合的。 但是,毫無疑問,這樣會帶來一個很大的問題,我們真正在應用的時候,如何才能夠將M也作為一個考慮的物件,即究竟取一個怎樣的M值才算是一個合理的量,這裡我們引入另外一個公式,稱作修正誤差公式

enter image description here

這個公式將向量w的值也涵括在內,這樣,在剛剛的例子中,如果M的值為9,雖然原來的E(n)為0,但是由於w的值增大導致修正的E(n)值增大,從而使得目標錯誤值增大。

2.概率論

概率論在模式識別領域的應用其實也並不複雜,主要有以下幾點

  1. 概率密度(Probability densities)
  2. 期望值和方差值(Expectations and covariances)
  3. 貝葉斯概率(Bayesian probabilities)
  4. 高斯分佈(Gaussian Distribution)

通過以上的兩個作為模式識別的概率論和線性代數的理論基礎,我們可以對其加以知識的整合來達到模式識別的方法,這裡我們首先從貝葉斯公式開始: enter image description here

p(Ck)被成為先驗概率,p(Ck|x)為後驗概率,後驗概率被應用於已知x而求出他所在的類Ck,這個明顯就可以分析出來,在已知x的前提下,他分組在Ck的概率的可能性。

最小化分類錯誤的機率,要把分類錯誤的可能性降到最小,我們可以以從兩個類開始C1,C2: enter image description here

但是,這個只是兩個類的情況下,若是要表述為多個類,要使得分類合理化,則應當提高分類的正確率,即提高下面的值:

enter image description here

但是,我們必須瞭解,該引數指標p(correct)並非是在真正應用中所考慮的物件,我們可以考慮下列問題:

在對病人進行癌症體檢時,我們如果能夠真正地對病人和非病人進行正確的檢測和分類,那麼這個檢測造成的後果為0(因為正確分類了),若將非病人診斷為病人,那麼這個非病人最多可能也就緊張一下,最可能的想法就是:“這該不會是假的吧!”,於是又去檢查一次,那麼把非病人的後果為1,但是如果把病人診斷為非病人,所造成的結果就嚴重了,因為這個病人肯定非常高興,再也不會去檢查了,我們可以得到一個代價矩陣:

enter image description here

那麼我們將這種問題擴充套件到N個類之後,可以得到代價矩陣L,那麼誤差會變為:

enter image description here

因此,以剛剛的癌症診斷為例,前一種方法誤差指標和後一種誤差指標的差別,會導致原來一部分本來被診斷為正常的人會被診斷為癌症(因為將癌症診斷為正常的導致的代價太大)。

那麼,我們總結一下解決這種模式識別的三種方法: 1. 我們根據貝葉斯公式,首先決定對每一個Ck的類求出 p(x|Ck)同時分別根據已知的歷史資料得到p(Ck),那麼我們根據貝葉斯公式 enter image description here

再加上:

enter image description here

即可求出之前所提出的p(Ck|x)

2.首先解決決定後驗概率p(Ck|x)的推理問題,然後應用決定理論(decision theory,上式)來將每一個新的x值分到對應的類中,這種方法被稱作discriminative models.

3.找到一個discriminative function函式f(x),將每一個輸入值x分配到一個類中,例如,在兩個類的選擇問題中,f()可能是非1即0,則當f=0代表分到C1類中,f=1代表分到C2類中。

相關文章