4.1 多維特征
舉例房?jī)r(jià)模型

增添了更多的特征。

此時(shí)模型中的參數(shù)是一個(gè)n+1維的向量。
公式可以簡(jiǎn)化:

4.2 多變量梯度下降
與單變量線性回歸類似,在多變量線性回歸中,我們也構(gòu)建一個(gè)代價(jià)函數(shù):所有建模誤差的平方和。


目標(biāo):找出使得代價(jià)函數(shù)最小的一系列參數(shù)。
多變量線性回歸的批量梯度下降算法為:


開始:隨機(jī)選擇一系列的參數(shù)值。
計(jì)算所有的預(yù)測(cè)結(jié)果后,再給所有的參數(shù)一個(gè)新的值。如此循環(huán)直到收斂。

4.3 梯度下降法時(shí)間
特征縮放
對(duì)于多維特征問題,最好保證這些特征都具有相近的尺度,這將幫助梯度下降算法更快地收斂。
解決方法:嘗試將所有特征的尺度都盡量縮放到-1到1之間。

學(xué)習(xí)率
梯度下降算法的每次迭代受到學(xué)習(xí)率的影響。
學(xué)習(xí)率過小則達(dá)到收斂所需的迭代次數(shù)會(huì)非常高。
學(xué)習(xí)率過大,每次迭代可能不會(huì)減小代價(jià)函數(shù),可能會(huì)越過局部最小值導(dǎo)致無(wú)法收斂。
通??梢钥紤]嘗試學(xué)習(xí)率:
特征和多項(xiàng)式回歸
線性回歸并不適用于所有數(shù)據(jù),有時(shí)我們需要曲線來適應(yīng)我們的數(shù)據(jù)。
二次方模型:

三次方模型:

通常我們需要先觀察數(shù)據(jù)然后再?zèng)Q定準(zhǔn)備嘗試怎樣的模型。

另外,我們可以令:
從而將模型轉(zhuǎn)化為線性回歸模型。
采用多項(xiàng)式回歸模型,在運(yùn)行梯度下降算法前,特征縮放非常有必要。
正規(guī)方程
對(duì)于某些線性回歸問題,正規(guī)方程方法是更好的解決方案,如:


對(duì)于不可逆矩陣(通常因?yàn)樘卣髦g不獨(dú)立,如單位不同的兩個(gè)同樣特征,也有可能是特征數(shù)量大于訓(xùn)練集的數(shù)量),不能使用正規(guī)方程方法。
舉個(gè)栗子:


梯度下降與正規(guī)方程的比較:
| 梯度下降 | 正規(guī)方程 |
|---|---|
| 需要選擇學(xué)習(xí)率 | 不需要 |
| 需要多次迭代 | 一次運(yùn)算得出 |
| 當(dāng)特征數(shù)量n大時(shí)也能較好適用 | 需要計(jì)算 |
| 適用于各種類型的模型 | 只適用于線性模型,不適合邏輯回歸模型等其他模型 |
只要特征變量數(shù)量小于1w,通常使用標(biāo)準(zhǔn)方程法而不使用梯度下降法。
對(duì)于這個(gè)特定的線性回歸模型,標(biāo)準(zhǔn)方程法是一個(gè)比梯度下降法更快地替代算法。
但是對(duì)于實(shí)際上更復(fù)雜的學(xué)習(xí)算法,不得不仍然使用梯度下降法。
python實(shí)現(xiàn) 正規(guī)方程
import numpy as np
def normalEqn(X,y):
theta = np.linalg.inv(X.T@X)@X.T@y
return theta
#np.linalg.inv 求逆矩陣
#X.T@X等價(jià)于X.T.dot(X)
#先求X的轉(zhuǎn)置再與X點(diǎn)積
正規(guī)方程推導(dǎo)過程

