版權聲明: 本文由LeftNotEasy所有,發布于http://leftnoteasy.cnblogs.com/。如果轉載,請注明出處,在未經作者同意下將本文用于商業用途,將追究其法律責任。如果有問題,請聯系作者 wheeleast@gmail.com 前言: 距離上次發文章,也快有半個月的時間了,這半個月的時間里又在學習機器學習的道路上摸索著前進,積累了一點心得,以后會慢慢的寫寫這些心得。寫文章是促進自己對知識認識的一個好方法,看書的時候往往不是非常細,所以有些公式、知識點什么的就一帶而過,里面的一些具體意義就不容易理解了。而寫文章,特別是寫科普性的文章,需要對里面的具體意義弄明白,甚至還要能舉出更生動的例子,這是一個挑戰。為了寫文章,往往需要把之前自己認為看明白的內容重新理解一下。 機器學習可不是一個完全的技術性的東西,之前和部門老大在outing的時候一直在聊這個問題,機器學習絕對不是一個一個孤立的算法堆砌起來的,想要像看《算法導論》這樣看機器學習是個不可取的方法,機器學習里面有幾個東西一直貫穿全書,比如說數據的分布、最大似然(以及求極值的幾個方法,不過這個比較數學了),偏差、方差的權衡,還有特征選擇,模型選擇,混合模型等等知識,這些知識像磚頭、水泥一樣構成了機器學習里面的一個個的算法。想要真正學好這些算法,一定要靜下心來將這些基礎知識弄清楚,才能夠真正理解、實現好各種機器學習算法。 今天的主題是線性回歸,也會提一下偏差、方差的均衡這個主題。 線性回歸定義: 在上一個主題中,也是一個與回歸相關的,不過上一節更側重于梯度這個概念,這一節更側重于回歸本身與偏差和方差的概念。 回歸最簡單的定義是,給出一個點集D,用一個函數去擬合這個點集,并且使得點集與擬合函數間的誤差最小。 第二張圖是二次曲線,對應的函數是y = f(x) = ax^2 + b。 第三張圖我也不知道是什么函數,瞎畫的。 第四張圖可以認為是一個N次曲線,N = M - 1,M是點集中點的個數,有一個定理是,對于給定的M個點,我們可以用一個M - 1次的函數去完美的經過這個點集。 真正的線性回歸,不僅會考慮使得曲線與給定點集的擬合程度最好,還會考慮模型最簡單,這個話題我們將在本章后面的偏差、方差的權衡中深入的說,另外這個話題還可以參考我之前的一篇文章:貝葉斯、概率分布與機器學習,里面對模型復雜度的問題也進行了一些討論。 線性回歸(linear regression),并非是指的線性函數,也就是 x0,x1…表示一個點不同的維度,比如說上一節中提到的,房子的價錢是由包括面積、房間的個數、房屋的朝向等等因素去決定的。而是用廣義的線性函數:
最小二乘法與最大似然: 這個話題在此處有一個很詳細的討論,我這里主要談談這個問題的理解。最小二乘法是線性回歸中一個最簡單的方法,它的推導有一個假設,就是回歸函數的估計值與真實值間的誤差假設是一個高斯分布。這個用公式來表示是下面的樣子:
概率分布是一個可愛又可恨的東西,當我們能夠準確的預知某些數據的分布時,那我們可以做出一個非常精確的模型去預測它,但是在大多數真實的應用場景中,數據的分布是不可知的,我們也很難去用一個分布、甚至多個分布的混合去表示數據的真實分布,比如說給定了1億篇網頁,希望用一個現有的分布(比如說混合高斯分布)去匹配里面詞頻的分布,是不可能的。在這種情況下,我們只能得到詞的出現概率,比如p(的)的概率是0.5,也就是一個網頁有1/2的概率出現“的”。如果一個算法,是對里面的分布進行了某些假設,那么可能這個算法在真實的應用中就會表現欠佳。最小二乘法對于類似的一個復雜問題,就很無力了
偏差、方差的權衡(trade-off): 偏差(bias)和方差(variance)是統計學的概念,剛進公司的時候,看到每個人的嘴里隨時蹦出這兩個詞,覺得很可怕。首先得明確的,方差是多個模型間的比較,而非對一個模型而言的,對于單獨的一個模型,比如說: 這樣的一個給定了具體系數的估計函數,是不能說f(x)的方差是多少。而偏差可以是單個數據集中的,也可以是多個數據集中的,這個得看具體的定義。 方差和偏差一般來說,是從同一個數據集中,用科學的采樣方法得到幾個不同的子數據集,用這些子數據集得到的模型,就可以談他們的方差和偏差的情況了。方差和偏差的變化一般是和模型的復雜程度成正比的,就像本文一開始那四張小圖片一樣,當我們一味的追求模型精確匹配,則可能會導致同一組數據訓練出不同的模型,它們之間的差異非常大。這就叫做方差,不過他們的偏差就很小了,如下圖所示:
用一個很通俗的例子來說,現在咱們國家一味的追求GDP,GDP就像是模型的偏差,國家希望現有的GDP和目標的GDP差異盡量的小,但是其中使用了很多復雜的手段,比如說倒賣土地、強拆等等,這個增加了模型的復雜度,也會使得偏差(居民的收入分配)變大,窮的人越窮(被趕出城市的人與進入城市買不起房的人),富的人越富(倒賣土地的人與賣房子的人)。其實本來模型不需要這么復雜,能夠讓居民的收入分配與國家的發展取得一個平衡的模型是最好的模型。 最后還是用數學的語言來描述一下偏差和方差:
對于上面公式的第一部分,我們可以化成下面的形式:
下圖也來自PRML: 這是一個曲線擬合的問題,對同分布的不同的數據集進行了多次的曲線擬合,左邊表示方差,右邊表示偏差,綠色是真實值函數。ln lambda表示模型的復雜程度,這個值越小,表示模型的復雜程度越高,在第一行,大家的復雜度都很低(每個人都很窮)的時候,方差是很小的,但是偏差同樣很小(國家也很窮),但是到了最后一幅圖,我們可以得到,每個人的復雜程度都很高的情況下,不同的函數就有著天壤之別了(貧富差異大),但是偏差就很小了(國家很富有)。 預告: 接下來準備談談線性分類的一些問題,敬請關注:) |
|