天天看點

機器學習筆記之基礎回歸問題

前言

本文參考了《機器學習》周志華著中的3.2節中的線性回歸内容和《統計學習方法》李航著的6.1節中的邏輯回歸内容,并結合邏輯回歸兩個實驗進行總結。

線性模型

什麼是線性模型呢?給定的樣本有n個屬性,xi表示第i個屬性,而形如如下:

機器學習筆記之基礎回歸問題

線性回歸

我們已經知道了線性模型是什麼,那麼線性回歸是幹啥的呢?按照統計學習方法的三要素,模型已經确定,接下來就是政策。按政策來看,我們需要确定損失函數,損失函數是一種性能度量,線上性回歸問題中,我們經常ongoing均方誤差來作為損失函數(更準确的叫法應該叫經驗風險)。

機器學習筆記之基礎回歸問題

均方誤差有非常好的幾何意義,它對應了歐氏距離,就是常用的那個初高中背的兩點距離公式。既然有了損失函數,就可以将模型選擇轉化為一個最優化問題,根據經驗風險最小化政策,我們選擇使得經驗風險也就是上面那個式子進行最小化的w和b,就是最好的模型。基于均方誤差最小化來進行模型求解的方法稱為最小二乘法,線上性回歸中,最小二乘法就是試圖找到一條直線,使得所有樣本到直線的距離之和最小。

如果按最基礎的高等數學的思想那就是直接對w和b求偏導,然後解出極小值點,對應的w和b就是模型的參數了。但為了便于讨論,我們其實可以将b歸到w中去,作為一個w0,也就是寫成下面這個樣子。

機器學習筆記之基礎回歸問題

那損失函數就可以寫成

機器學習筆記之基礎回歸問題

再換成矩陣形式

機器學習筆記之基礎回歸問題
機器學習筆記之基礎回歸問題

然後在矩陣形式下對W進行求導,也就是矩陣求導(求導過程略過,其實挺簡單的,代代公式就好)

機器學習筆記之基礎回歸問題

有了這東西之後那其實在python中使用numpy庫,進行矩陣運算就很容易解出W的值。

線性模型是輸入變量到輸出變量的線性關系,那不一定要把這種形式定死,這就太局限了,其他的形式它也可以轉換成線性模型進而變成線性回歸問題來求解。

對數線性回歸

假設我們認為輸出标記是在指數尺度上變化,那就可以将輸出标記的對數作為線性模型來逼近的目标,即

機器學習筆記之基礎回歸問題

這就是對數線性回歸,實質上它還是一個輸入空間到輸出空間的非線性函數映射,取對數就起到了将線性回歸模型的預測值與真實标記聯系起來的作用,因為取了對數以後單調性不變,該求極值害得求極值,沒啥差別。

多項式拟合

回歸問題說白了就是就是用于預測輸入變量和輸出變量之間的關系,或者說是拟合出一個輸入變量到輸出變量之間映射的函數,那這和多項式拟合有什麼關系呢?

這麼看,對于連續可導的函數來說,它都是可以進行泰勒展開的:

機器學習筆記之基礎回歸問題

仔細看泰勒展開後的函數形式,和線性回歸對比一下,是不是感覺特别像,把x^i換成xi就是線性模型了。是以其實多項式拟合也可以用線性回歸的做法來做,甚至我覺得多項式拟合就是一種特殊形式的線性回歸問題。當然了,除了用最小二乘法之外,還可以梯度下降法,共轭梯度法,牛頓法等都可以。

邏輯回歸

大家别看叫邏輯回歸,以為是一個回歸問題,但其實它是一個分類問題。邏輯斯蒂回歸(Logistic regression),還有另外一個名字——對數幾率回歸。那邏輯回歸是怎麼導出的呢?

考慮一個最簡單的二分類問題,也就是二項邏輯回歸,,輸出标記y={0,1},而線性回歸模型産生的預測值z=w’x+b('表示轉置,或用T)是實值,我們需要将實值z轉換成0、1。什麼意思呢?就是一個二分類機率分布是一個離散的,但線性回歸得到的映射函數卻是個連續的,我們如何建構這樣一個映射關系呢?這裡有兩種推導方式,一種直接利用“機關階躍函數”

機器學習筆記之基礎回歸問題

隻要我們選好門檻值,比如這裡的0,就能将y分成0,1。但這不是連續的啊,是以更進一步,我們利用對數幾率函數,也是一種“Sigmoid函數”,形如以下:

機器學習筆記之基礎回歸問題
機器學習筆記之基礎回歸問題

從函數圖像上可以看得出來,這個函數在0附近很陡,它的坡地就和e的次方大小有關,y有了,那1-y也就有了。

機器學習筆記之基礎回歸問題

上面這個東西不就是個線性的函數了嗎,我們要做的就是求這個線性函數的參數,這裡的y我們換成P(y=1|x),1-y換成P(y=0|x)

機器學習筆記之基礎回歸問題

上面這個式子我們叫做對數幾率,是以呢,就可以顯然的推出

機器學習筆記之基礎回歸問題

那到現在為止我們也就獲得了模型,這個是什麼模型呢,好像還看不太出來,這麼一個大式子,但我們也有了明确求解的對象,那就是求解w和b,這兩個參數出來了那機率分布不也就出來了嗎,為了簡化讨論,我們按慣例把b歸到w中,x增加一列全1,就變成了下面這種簡便的形式。

機器學習筆記之基礎回歸問題

上面那種推導好像不太嚴謹,怎麼就能将離散的機率分布轉成連續的了呢?畢竟我們要的是近似解嘛,我們隻需要達到一定準确度的估計效果就好了。下面還有另一種推導的方向,對機率分布運用貝葉斯定理,得到下面這種形式

機器學習筆記之基礎回歸問題

那P(Y)是先驗,是個常數值。P(X|Y)是X的後驗機率,這是個什麼東西,那其實根據中心極限定理,在适當的條件下,大量互相獨立的随機變量的均值經适當标準化後其分布收斂于正太分布,那就一意味着其實大部分分布它的總體都能用正太分布來趨近。是以我們不妨設

機器學習筆記之基礎回歸問題
機器學習筆記之基礎回歸問題

将之代入

機器學習筆記之基礎回歸問題
機器學習筆記之基礎回歸問題

好家夥,出來的還是個對數幾率函數。

現在模型有了,剩下的就是對模型參數的估計了。參數估計最常用的就是最大後驗估計和極大似然法了,那這裡顯然是用極大似然法比較好了解了。

到這裡我們就要明确,極大化的是個什麼玩意兒。我們極大化的是P(Y=yi|X),假設各樣本間獨立同分布

機器學習筆記之基礎回歸問題

那似然函數就是

機器學習筆記之基礎回歸問題

為什麼有yi次方呢,那是因為咱讨論的是0/1分布,y取值0或1。這東西看着就不好算,既然用極大似然法,正常讨論無非就是求導,極大化嘛,既然這種指數形式不好算,我還不能換種形式嘛,隻要單調性不變就好嘛,不寒碜。這時候就要請出我們的好朋友對數似然函數了,對上述式子取對數,不改變單調性

機器學習筆記之基礎回歸問題
機器學習筆記之基礎回歸問題

這個式子看着就舒服多了,求導也好求多了,注意到,我一直叫它似然函數,而不是損失函數,一般損失函數是求最下化的,那對對數函數取個負就變損失函數了hhhh,全名叫對數似然損失函數。但這種形式就不好用最小二乘法了呀,但還可以用梯度下降法和牛頓法,這兩種都是十分常用的求極值的計算方法。

梯度下降法

求解梯度

我們獲得似然函數後,需要求解其極大值來獲得參數 的估計,我們可以用梯度下降法使得梯度逼近于0,每次疊代方向都往梯度正方向走,當梯度逼近0的時候, 也就到達了極大值點附近。

對似然函數進行求導:

機器學習筆記之基礎回歸問題

設 n為樣本數, m為特征數:

機器學習筆記之基礎回歸問題

則将導函數化成矩陣表達式為:

機器學習筆記之基礎回歸問題

梯度grad的表達式便求出來了。

機器學習筆記之基礎回歸問題

更新參數

獲得梯度之後,我們就可以通過梯度來疊代更新 ,需要注意的是,上面求出來的梯度是似然函數上升最快的方向,而我們的目标是逼近似然函數的極大值,是以更新 的時候加上學習率與梯度的乘積:

機器學習筆記之基礎回歸問題

其中學習率 α可以設個初始步長,但在随着疊代的進行,可以考慮對步長進行修改,比如當似然函數的值由大變小或來回抖動的時候,說明疊代已經到達極值點附近,但由于步長太大無法更精确的逼近,是以可以減小步長,然後設定grad精度使得疊代能結束,因為我們隻能逼近極大值。

總結

那聊了線性回歸,多項式拟合曲線,邏輯回歸,它們有什麼共同點呢?這裡再強調一次邏輯回歸是解決分類問題的,它不是回歸問題。那為什麼把它放到這來呢,因為它解決問題的過程是以一種回歸的方式解決的,它确實構造出了輸入變量到輸出變量的映射關系,隻不過是用連續的函數近似的表示了這種離散的機率分布函數,但解決問題嘛,不寒碜。而且其實在回歸問題中,我們建構出模型,往往需要求的就是模型的參數,求解模型的參數就是通過損失函數的極小化來做的嘛,但其實通過後序的學習我們會發現,大部分的問題也都是通過求解模型參數進而完成模型的,是以極大似然估計、最大後驗機率估計和貝葉斯估計這些參數估計方法真是太重要了。

注:本文隻作讨論,并沒有深入研究,其實真正實踐起來要考慮的東西很多,特别是過拟合問題,建議大家都回歸基本概念,從底層搭起知識體系架構,不然就會像我一樣做了實驗結果就感覺像照葫蘆畫瓢,結果啥也沒學到。

繼續閱讀