1. 多變量線(xiàn)性回歸(Linear Regression with Multiple Variables)
也稱(chēng)為多元線(xiàn)性回歸,一元就是一個(gè)變量媳搪,多元就是多個(gè)變量,在這里也可以叫做多個(gè)特征
1.1 多維特征(Multiple Features)
之前,我們討論過(guò)單變量/特征的回歸模型蓝厌,但是單變量并不足以精確地預(yù)測(cè)房?jī)r(jià),因此古徒,我們需要對(duì)房?jī)r(jià)模型增加更多的特征拓提,例如房間數(shù)樓層等,構(gòu)成一個(gè)含有多個(gè)變量的模型隧膘。
現(xiàn)在需要引入新的注釋來(lái)建立和解釋新的模型↓
符號(hào) | 意義 |
---|---|
i | 特征矩陣中的第 i 行 |
j | 特征矩陣中第 i 行的第 j 個(gè)特征 |
m | 訓(xùn)練樣本的數(shù)量 |
n | 特征的數(shù)量 |
在我們引入了新的特征之后代态,原來(lái)的那一條公式失去了作用,取而代之的是一條新的公式
多變量線(xiàn)性回歸方程:
2. 多變量梯度下降(Gradient Descent for Multiple Variables)
2.1 代價(jià)函數(shù)
2.2 批量梯度下降算法
原公式:
經(jīng)過(guò)修改舀寓,得到現(xiàn)在的公式:
代入多變量回歸公式胆数,得:
求導(dǎo)后得到批量梯度下降算法:
2.3 梯度下降法實(shí)踐 1-特征縮放(Feature Scaling)
在我們面對(duì)多維特征問(wèn)題的時(shí)候,我們要保證這些特征都具有相近的尺度互墓,這將幫助梯度下降算法更快地收斂必尼。
在以下圖像中,我們就可以發(fā)現(xiàn)篡撵,圖片非常地橢圓判莉,這種橢圓使得我們?cè)谔荻认陆档臅r(shí)候需要非常多次的迭代才能收斂。
因此我們需要特征縮放去解決這個(gè)問(wèn)題育谬,它將所有的特征尺度都盡量==縮放到-1到1之間==券盅,太大或者太小都不好,如下圖
2.3.1 特征均值標(biāo)準(zhǔn)化(mean normalization):
符號(hào) | 含義 | 計(jì)算方法 | python(matlab)函數(shù) | 參數(shù)解釋 |
---|---|---|---|---|
x_i | 特征 | |||
μ_i | 平均值 | 同一個(gè)x_n相加求再除以同一個(gè)x_n的數(shù)量 | python:mean(x,axis=0) matlab:mean(x) | x:數(shù)據(jù)集膛檀,axit:軸锰镀,為0計(jì)算每一列,為1計(jì)算每一行 |
s_i | 標(biāo)準(zhǔn)差 |
|
std(x) | 方法同上 |
2.4 梯度下降法實(shí)踐 2-設(shè)置梯度下降法迭代次數(shù)(Debugging)
代價(jià)函數(shù)會(huì)隨著迭代次數(shù)的下降而收斂泳炉,不同的迭代算法需要不同的迭代次數(shù),有的可能需要30次嚎杨,而有的可能則需要300萬(wàn)次
我們要判斷代價(jià)函數(shù)是否收斂有兩個(gè)方法
- 看代價(jià)函數(shù)的曲線(xiàn)變化
- 自動(dòng)收斂測(cè)試
當(dāng)下降幅度少于一個(gè)θ值的時(shí)候(θ值自己然ǘ臁),則可以看作代價(jià)函數(shù)收斂
但是一般而言枫浙,θ值是比較難確定的刨肃,最好還是自己通過(guò)圖像去判斷是否達(dá)到了收斂的程度
2.5 梯度下降法實(shí)踐 3-學(xué)習(xí)率(Learning Rate)
2.5.1 學(xué)習(xí)率α過(guò)大
通常,隨著迭代次數(shù)的增加箩帚,代價(jià)函數(shù)應(yīng)該是逐步下降的真友,但是當(dāng)你看到代價(jià)函數(shù)的值增加的時(shí)候,很可能學(xué)習(xí)率過(guò)大所導(dǎo)致的紧帕,學(xué)習(xí)率過(guò)大使得函數(shù)錯(cuò)過(guò)了最低點(diǎn)
2.5.2 學(xué)習(xí)率α過(guò)小
學(xué)習(xí)率過(guò)大會(huì)有問(wèn)題锻狗,那么過(guò)小了,也會(huì)造成問(wèn)題焕参,如下圖的藍(lán)色畫(huà)筆所畫(huà)轻纪,當(dāng)學(xué)習(xí)率過(guò)小,學(xué)習(xí)速度就會(huì)很慢叠纷,需要更多的迭代次數(shù)才能迭代到最低點(diǎn)
2.5.3 如何選取學(xué)習(xí)率
在選取學(xué)習(xí)率的時(shí)候,我們通常都需要設(shè)置多個(gè)學(xué)習(xí)率進(jìn)行測(cè)試涩嚣,學(xué)習(xí)率之間的倍數(shù)通常是3倍和10倍崇众,通過(guò)測(cè)試幔睬,我們就可以找到最好的那一個(gè)學(xué)習(xí)率
3. 特征與多項(xiàng)式回歸(Features and Polynomial Regression)
首先我們來(lái)舉一個(gè)例子:房?jī)r(jià)預(yù)測(cè)
符號(hào) | 含義 |
---|---|
x1 | frontage(臨街寬度) |
x2 | depth(縱向?qū)挾龋?/td> |
x | area(面積) |
由此队萤,我們可以建立一個(gè)初步的模型
但是這個(gè)線(xiàn)性回歸并不能很好的擬合我們的數(shù)據(jù)杯活,因此我們需要一些改變(曲線(xiàn))更好地?cái)M合數(shù)據(jù)箍铭,比如一個(gè)二次方模型
如下圖
但是我們發(fā)現(xiàn),二次方模型依然不能很好地?cái)M合數(shù)據(jù)椎镣,因?yàn)樗鼤?huì)隨著Size的增加而下降诈火,房?jī)r(jià)可不會(huì)因?yàn)榉孔用娣e的增加而下降,因此状答,我們需要一個(gè)三次方模型:
這樣子冷守,就可以比較好地?cái)M合我們的數(shù)據(jù)
接下來(lái),我們通過(guò)以下方法惊科,將多項(xiàng)式回歸轉(zhuǎn)變?yōu)槎嘣€(xiàn)性回歸方程
這樣子拍摇,就可以得到我們的多元線(xiàn)性回歸方程
由此我們就可以得到3個(gè)特征,在讀者看來(lái)馆截,這可能是更好地標(biāo)記特征充活,size和size的平方不是同一樣?xùn)|西
接下來(lái)還沒(méi)完,我們發(fā)現(xiàn)特征與特征之間相差非常大
這就可能出現(xiàn)之前說(shuō)過(guò)的迭代問(wèn)題孙咪,因此堪唐,我們需要對(duì)特征進(jìn)行縮放,從而使得方程能得到更好更快地迭代
當(dāng)然翎蹈,條條大路通羅馬淮菠,除了三次方模型外,我們還可以采用其他模型使得曲線(xiàn)更加擬合數(shù)據(jù)荤堪,比如平方根模型(紫色線(xiàn))
因此合陵,我們需要深入了解數(shù)據(jù)和數(shù)據(jù)的本質(zhì),從而才能找到更好的模型去擬合數(shù)據(jù)
4. 正規(guī)方程(Normal Equation)
到目前為止澄阳,我們都在使用梯度下降算法求解最小值
但在某些問(wèn)題上拥知,用正規(guī)方程可以更快求解出最優(yōu)值,通過(guò)正規(guī)方程可以一次性求到這一個(gè)值碎赢,那么什么是正規(guī)方程呢低剔?
就拿上圖的J(θ)函數(shù)來(lái)說(shuō),要求最優(yōu)解肮塞,根據(jù)我們學(xué)過(guò)的微積分知識(shí)襟齿,對(duì)它進(jìn)行一個(gè)直接求導(dǎo)就可以
回到之前說(shuō)的平方代價(jià)函數(shù),對(duì)于這么一個(gè)函數(shù)枕赵,我們需要對(duì)它每一個(gè)變量都進(jìn)行求偏導(dǎo)猜欺,得出每一個(gè)θ的值
因此,我們選擇使用線(xiàn)性代數(shù)的方法進(jìn)行批量求導(dǎo)拷窜,使用以下正規(guī)方程就能解出向量θ
完整推導(dǎo)過(guò)程:
http://blog.xiangjiang.live/derivations-of-the-normal-equation/
https://zhuanlan.zhihu.com/p/22757336
先來(lái)理解一下這個(gè)方程
首先开皿,假設(shè)樣本數(shù)為m涧黄,每個(gè)樣本的期望值與實(shí)際值y相等
轉(zhuǎn)化成向量表達(dá)的形式
注:*符號(hào)是矩陣叉乘的意思
由于X不一定是方陣,所以X乘上X的逆不一定等于E(單位矩陣赋荆,就是對(duì)角線(xiàn)是1笋妥,其他為0的矩陣,單位矩陣肯定是一個(gè)方陣)糠睡,因此X需要先乘上X的轉(zhuǎn)置挽鞠,使它變成一個(gè)方陣,由于一個(gè)方陣的逆乘一個(gè)方陣等于I(單位矩陣)狈孔,所以就消去了,最后得到結(jié)果:
下面用數(shù)據(jù)來(lái)舉一個(gè)例子
得到以下兩個(gè)矩陣
運(yùn)用正規(guī)方程方法求解材义,得
梯度下降與正規(guī)方程的比較:
梯度下降 | 正規(guī)方程 |
---|---|
需要選擇學(xué)習(xí)率 α | 不需要 |
需要多次迭代 | 不需要迭代 |
當(dāng)特征數(shù)量 n 大時(shí)也能較好適用 | 如果特征數(shù)量 n 較大則運(yùn)算代價(jià)大均抽,因?yàn)榫仃嚹娴挠?jì)算時(shí)間復(fù)雜度為 O(n3),通常 來(lái)說(shuō)當(dāng) n 小于 10000 時(shí)還是可以接受的 |
適用于各種類(lèi)型的模型 | 只適用于線(xiàn)性模型其掂,不適合邏輯回歸模型等其他模型 |
總結(jié)一下油挥,只要特征變量的數(shù)目并不大,正規(guī)方程是一個(gè)很好的計(jì)算參數(shù) θ 的替代方法款熬。具體地說(shuō)深寥,只要特征變量數(shù)量小于一萬(wàn),我們通常使用標(biāo)準(zhǔn)方程法贤牛,而不使用梯度下降法惋鹅。隨著我們要講的學(xué)習(xí)算法越來(lái)越復(fù)雜,例如殉簸,當(dāng)我們講到分類(lèi)算法闰集,像邏輯回歸算法,我們會(huì)看到般卑,實(shí)際上對(duì)于那些算法武鲁,并不能使用正規(guī)方程方法。
4.1 設(shè)計(jì)矩陣(design matrix)
統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)中蝠检,設(shè)計(jì)矩陣是一組觀測(cè)結(jié)果中的所有解釋變量的值構(gòu)成的矩陣沐鼠,常用X表示。設(shè)計(jì)矩陣常用于一些統(tǒng)計(jì)模型叹谁,如一般線(xiàn)性模型饲梭,方差分析中。
4.2 矩陣X'X是奇異矩陣
原因有兩個(gè):
- 有兩個(gè)成一定比例的特征值本慕,使得矩陣不可逆
- 當(dāng)訓(xùn)練樣本比參數(shù)少很多的時(shí)候排拷,可能會(huì)導(dǎo)致矩陣結(jié)果不可逆
解決方案:
- 查看特征里面是否有些重復(fù)或者多余的特征,比如呈線(xiàn)性相關(guān)的特征锅尘,刪除重復(fù)兩個(gè)重復(fù)特征中的其中一個(gè)
- 看特征值中是否有多余的特征监氢,直到刪到不再多余為止布蔗,如果實(shí)在太多,需要考慮使用正則化方法
如果矩陣 X' X是不可逆的浪腐,(通常來(lái)說(shuō)纵揍,不會(huì)出現(xiàn)這種情況),如果在 Octave 里议街,可以用偽逆函數(shù)pinv()來(lái)實(shí)現(xiàn)泽谨。這種使用不同的線(xiàn)性代數(shù)庫(kù)的方法被稱(chēng)為偽逆。即使X'X的結(jié)果是不可逆的特漩,但算法執(zhí)行的流程是正確的吧雹。總之涂身,出現(xiàn)不可逆矩陣的情況極少發(fā)生雄卷,所以 在大多數(shù)實(shí)現(xiàn)線(xiàn)性回歸中,出現(xiàn)不可逆的問(wèn)題不應(yīng)該過(guò)的關(guān)注 X' X 是不可逆的蛤售。