轉載請注明源地址:http://www.cnblogs.com/xbinworld/archive/2013/04/21/3034300.html
Pattern Recognition and Machine Learning (PRML)書學習,章節1.1,介紹與多項式曲線擬合(Polynomial Curve Fitting)
博士也快念完了,明年畢業,今年開始准備畢業相關的東西,感覺自己做machine learning 的research做的很散,論文發了些,卻不系統。決心在畢業前好好補一下基礎知識,我相信離開大學就很難有這樣的機會了。以前我入門機器學習是看的《The Elements of Statistic Learning》書,(剛開始半本書看了半年,呵呵,比較累),書很不錯。一直聽說國外很多學校是用PRML這本書做教材的,自己一直當工具書翻,沒有仔細看過,因此就打算看PRML這本書了。
盡量把看的內容寫到blog中,我打算前面寫的章節可以密集一些,當作基礎復習,后面的topic可能會適當精選一些。下面的文字有一些是用原書中的句子翻譯來的,但很多是我自己的話,畢竟我不是在翻譯;其中的公式和圖標,基本上會來自原書,畢竟我寫只是blog,全自己寫太消耗時間了。
章節1.1多項式曲線擬合(Polynomial Curve Fitting)
很多ML的介紹都是從regression(回歸)這個問題開始的,PRML也一樣。回歸問題是很多現實問題的基本解決方法,比如各類預測問題。不過本書第一張並不涉及具體的算法,不是一上來就說線性回歸,而是介紹了很多基礎概念,我覺得是本書的一大優點。
,我們的目標是在給定訓練集合的情況對一個新來的樣本,預測他的目標值
。事實上,我們是不知道數據本身是否是產生於某種形式的函數方程的,比如正玄函數sin(),而要從觀測數據去發現隱含的方程是很困難的。因為數據本身存在了不確定性(uncertainty)。(注:uncertainty的理解將會貫穿本書。)
我們先試圖用多項式函數來擬合數據,形式為:
其中y為預測值,x是輸入,w是參數。M是多項式的階(最大次方)。 注意,雖然多項式對x來說是非線性,但是對於所有參數w來說是線性的。線性方程是M=1的情況。這種對w線性的函數稱之為線性模型,linear model,將會在第3-4章介紹。
擬合的一種直觀做法是去最小化誤差函數,error function, 其中一種最常見的error function叫做sum of the squares:
這個式子的特點是非負,只有當所有點都被正確預測時,error為0。式子中的1/2是為了以后推導時候的方便。(對的,你是對的,很多時候是為了求導后把2去掉- -)。
圖1.3簡單說明了誤差函數的值,圖中藍點是訓練數據,y是預測模型,綠線的長度之平方和(減半)就是誤差函數的值。要估計w的最優值來得到y(x,w)這個函數做預測,我們需要最小化E(W),因為E(W)是關於w的一個二次方程,是存在全局最優解的,這里可以記最優解的w為。好了,現在剩下的最后一個問題是我們因該怎么確定M,也就是用幾階的多項式來擬合數據呢?
我們來看圖1.4, 如果數據本身是通過正玄函數加上一點高斯噪音得到(圖中藍點),當然數據怎么來我們是不知道的。我們用多項式來擬合數據,可以看到,當M從0逐漸增大的時候函數的擬合能力越來越強,也就是說在training set中錯誤的結果越來越小,當M=9的時候我們發現所有的點都被正確的擬合了。那么是不是我們找到了一個最好的結果呢?其實不然,擬合training set只是我們的手段,我們的目標是得到一個具有很好泛化能力的函數,來預測新的數據點。由圖1.4的M=9可以看到,和真實曲線(綠線)相差很遠,這里就是一個過擬合的問題(over-fitting),可以說是機器學習里面非常重要的一個問題。
如果記錄下均方根誤差,root-mean-square error
可以得到圖1.5的示例,M到了一定階段以后在test數據上的error就會顯著增大了,我們理解成過擬合了!
我們再來簡單討論一下over-fitting的問題。造成over-fitting的因素很多,我個人理解有兩點是很重要的,(1)模型太復雜;(2)數據太少。
上面的例子說明了,當我們用M=9的時候,模型對於原始數據來說研究太復雜了,但是也可用是因為數據點太少造成過擬合的。看圖1.6,當數據點顯著增多時,過擬合問題減少了很多!所以,很重要的一點是,訓練樣本的足夠多以及模型的合適。不過訓練樣本太多也有其他我問題,比如欠擬合,以及訓練不動(- -),這些這里就不談了。
Machine Learning方法中很重要的一類是正則化,regularization,具體會在以后的章節中仔細介紹。這里給一個直觀的理解。最常用的正則化項是約束參數的模,在公式(1.2)對w做約束得到:
如果y是線性方程的時候,公式(1.4)就是ridge regression了。通過圖1.7,我們可以看到改變 的數值可以對模型產生巨大的影響。當依然是用M=9的時候,加入在正則化項就可以比較好的得到擬合了。當然,新問題又來了,怎么確定新引入的參數
呢?這又需要一些其他的知識,常見的做法是建立一個validation集合,用來驗證參數的選取。后面介紹model selection的時候會講到一些。
好了,第一小節就介紹到這里,第一章的風格是直觀上介紹一些問題,以及給出一些解決方法。對於machine learning 入門的同學是非常好的。