上一篇我們提到了單變量的線性回歸模型,但是我們實(shí)際遇到的問(wèn)題,都會(huì)有多個(gè)變量影響,比如上篇的例子——房?jī)r(jià)問(wèn)題,在實(shí)際情況下影響房?jī)r(jià)的一定不止房子的面積,房子的地理位置,采光度等等都會(huì)或多或少的影響房?jī)r(jià),所以必須考慮更多變量來(lái)使我們的預(yù)測(cè)模型更加精確,這里就教大家多變量的線性回歸模型。
例題
我們這次的例題還是用我們上次單變量線性回歸模型一樣的問(wèn)題——房?jī)r(jià)問(wèn)題,但是我們這次添加了房間數(shù),房子所在樓層數(shù),房子面積這三個(gè)新變量到我們的例題中。

我們把這四個(gè)變量命名為x1,x2,x3,x4結(jié)果為y,用n表示我們有n個(gè)特征,用m表示樣本數(shù)量。既然我們多了這么多特征變量,那么我們的模型的公式也要改變:

但為了計(jì)算和表示的方便我們多設(shè)一個(gè)變量x0=1,也就是說(shuō)我們的θ0 * x0,這樣我們可以把特征表示成一個(gè)矩陣x = [x0,x1,x2........,xn],同時(shí)我們的要求的參數(shù)θ也能表示成同長(zhǎng)度的矩陣θ = [θ0,θ1,θ2.....,θ3]。

這樣我們的h(x)就可以表示成h(x) =(θ^T )*x

梯度下降
多元線性回歸的代價(jià)函數(shù)和單變量的回歸的代價(jià)函數(shù)是一樣的,所以我們這里的梯度下降的方法和公式?jīng)]有太大的差別,都是原參數(shù)減去學(xué)習(xí)率與原參數(shù)在代價(jià)函數(shù)上的偏導(dǎo)的乘積:

特征縮放
雖然多元線性回歸的梯度下降方法和單變量回歸沒(méi)有太大的差別,但是多元線性回歸涉及到單變量回歸沒(méi)有的問(wèn)題,就是多個(gè)特征值的取值差別過(guò)大,導(dǎo)致模型很難擬合。這里我們需要運(yùn)用特征縮放的方法對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。特征縮放其實(shí)很簡(jiǎn)單,比如我們的兩個(gè)變量房屋的面積和房間數(shù)。房屋的面積 的范圍在0-2000英寸,而我們的房間數(shù)在1-5間,這兩個(gè)特征值就相差過(guò)大,導(dǎo)致梯度下降的困難。這里我們只需要把我們的房屋面積除以2000,房間數(shù)除以5,這樣我們兩個(gè)特征值的范圍就在0-1之間,梯度下降就更加容易。

學(xué)習(xí)率選擇
這里給的是學(xué)習(xí)率選擇的技巧。
首先我們可以繪制出梯度下降迭代的次數(shù)和代價(jià)函數(shù)值的關(guān)系圖,來(lái)判斷函數(shù)是否收斂,從而判斷這個(gè)學(xué)習(xí)率是否合適。

假如我們的圖像函數(shù)曲線隨著迭代次數(shù)增加而上升,說(shuō)明我們的學(xué)習(xí)率過(guò)大,如果我們的曲線是忽上忽下,則說(shuō)明我們的學(xué)習(xí)率偏小。根據(jù)圖像我們就可以找到方向修改我們的學(xué)習(xí)率到合適的大小。

我們推薦學(xué)習(xí)率的改變方式是每十倍取值,比如0.001偏小了我們下次就取0.01,再偏小再取0.1。
特征與多項(xiàng)式回歸
很多時(shí)候我們的數(shù)據(jù)分布不是直線型的,可能是曲線,也可能是其他圖形,這里將教大家如何擬合非直線型函數(shù)。比如這個(gè)房屋面積與價(jià)格的數(shù)據(jù),我們可以看出來(lái)像一條拋物線,我們就可以用二次模型去擬合。如果后面繼續(xù)上升了,就像一個(gè)三次函數(shù),我們就用三次模型去擬合,然后把每一項(xiàng)替換了。

這個(gè)問(wèn)題就轉(zhuǎn)換成了用x1,x2,x3來(lái)建立回歸。讓我們的模型擬合度更高。但是要記住不要忘了特征縮放。畢竟三次和一次的值會(huì)相差很大,增加梯度下降的難度。當(dāng)然選擇什么函數(shù)模型去擬合,還是取決于數(shù)據(jù)在坐標(biāo)系上的分布像什么函數(shù)模型。
正規(guī)方程
其實(shí)很多讀者在我們給出例題的時(shí)候就想到了我們高中時(shí)候?qū)W過(guò)的最小二成法求回歸方程,就會(huì)產(chǎn)生疑惑,我們明明可以直接求取各個(gè)參數(shù),為什么還要用梯度下降這種費(fèi)時(shí)費(fèi)力的方式來(lái)求回歸方程呢?這里就給出了直接求取參數(shù)的正規(guī)方程。我們梯度下降的目的是求出代價(jià)函數(shù)的取得最小值或者局部最小值的值,在我們高中就學(xué)過(guò)用導(dǎo)數(shù)等于零來(lái)求極大值和極小值,這里我們就是用代價(jià)函數(shù)導(dǎo)數(shù)等于零來(lái)求參數(shù)的解。我門(mén)就是把逐個(gè)參數(shù)θ求代價(jià)函數(shù)J的偏導(dǎo),然后把他們?nèi)恐昧?,并求解?/p>

但這樣求解的方式很麻煩,所以這里給出一般解法,首先我們構(gòu)建x0,x1,x3.....xn的所以特征值的一個(gè)矩陣,以及所有目標(biāo)值y的矩陣,這里我們給出一個(gè)例子:

那么我們的參數(shù)的解也是一個(gè)矩陣,可以通過(guò)這個(gè)公式得到:

使用這種方法我們就可以不用對(duì)特征值進(jìn)行縮放了
正規(guī)方程法與梯度下降法的比較
上面給出的正規(guī)方程解法,一步我們就可以得到我們想要的結(jié)果,是不是很方便,但是正規(guī)方程真的這么萬(wàn)能的話我們也不會(huì)在前面廢這么大的勁來(lái)講解梯度下降法。這里我們就給出兩種方法的優(yōu)劣。
首先梯度下降我們要確定學(xué)習(xí)率,而且需要很多次迭代來(lái)訓(xùn)練,費(fèi)時(shí)費(fèi)力,正規(guī)方程則不需要。
但是我們特征過(guò)多的話,正規(guī)方程求解的時(shí)間維度是O(n ^ 3),這就需要比梯度下降更多的時(shí)間來(lái)求解。梯度下降適用于更多的情況,而且符合機(jī)器學(xué)習(xí)的方法,所以我們?cè)谧鰴C(jī)器學(xué)習(xí)更傾向于用梯度下降而不是用正規(guī)方程。
后記
寫(xiě)完這篇我大概就要準(zhǔn)備期末考試了,大概更新的速度會(huì)很慢很慢,可能兩個(gè)星期一更吧。。。祝我考試順利吧。