Andrew Ng机器学习(一):线性回归
1.什么是線性回歸?
用線性關(guān)系去擬合輸入和輸出。
設(shè)輸入為x,則輸出y=ax+b。
對于多元的情況y=b×1+a1x1+a2x2+...+anxn。
用θ表示系數(shù),可以寫作:
其中,x0=1。
2.線性回歸有什么用?
對于連續(xù)輸入和輸出的問題,如果線性回歸可以較好的擬合輸入和輸出,那么可以用這個(gè)模型預(yù)測其它輸入時(shí)的輸出。
反過來想:如果線性回歸可以較好的擬合輸入和輸出,那么說明輸出和輸入有很強(qiáng)的線性相關(guān)性,可以識別輸入中的冗余信息。
3.怎么判斷是否較好的擬合?
初步考慮,就是當(dāng)使用模型時(shí)的輸出、和真實(shí)的輸出有多大偏差,選擇一個(gè)方法量化這個(gè)偏差。
每個(gè)樣本輸入模型時(shí),均會(huì)產(chǎn)生一個(gè)偏差。
線性回歸中,通過求這些偏差的平方平均值,來判斷偏差的程度。寫作:
其中實(shí)際輸出為y,模型輸出為h,上標(biāo)i是指每個(gè)樣本。系數(shù)在平方平均值的基礎(chǔ)上除以2。
判斷偏差的這個(gè)方程起名叫 Cost Function。當(dāng)偏差越小、即Cost Function的值越小時(shí),擬合的越好。?
4.怎么訓(xùn)練模型?
訓(xùn)練模型的目的在于實(shí)現(xiàn)較好的擬合,也就是說使Cost Function的值盡量小。
訓(xùn)練在這里,就是選擇一組系數(shù)θ(模型確定以后,模型的參數(shù)就是系數(shù)θ們),實(shí)現(xiàn)上面的目的。
微積分學(xué)過,可以對θ求偏導(dǎo)數(shù)等于0的點(diǎn),直接得到極值點(diǎn)。
按照Andrew Ng的課件,當(dāng)參數(shù)個(gè)數(shù)大于10000個(gè)時(shí),直接求極值點(diǎn)時(shí)間太長,需要選擇別的辦法。
5.怎樣訓(xùn)練模型:梯度下降。
顧名思義,就是沿著梯度下降。選擇一個(gè)合適的步長α,一步一步改變θ,使Cost Function的值不斷減小。
其中,θj表示各個(gè)系數(shù)。:=前面的冒號表示每個(gè)θj同時(shí)改變。
走多少步?和怎么判斷模型訓(xùn)練好了呢?最好是觀察每次θj改變后,J(θ)的值的變化。
最開始θj等于多少呢?最開始,隨便選一組值就可以。
步長α應(yīng)該選多大呢?要通過手動(dòng)嘗試,“找”到合適的值。
最后,經(jīng)過多次迭代后,算法得到一組θ,使Cost Function的值比較小。
6.matlab實(shí)現(xiàn)一個(gè)線性回歸。
%一個(gè)特征的輸入?yún)?shù)
X1=[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50];
X0=ones(size(X1));
X=([X0;X1])';
y=([10, 22, 13, 43, 20, 22, 33, 50, 62, 48, 55, 75, 62, 73, 81, 76, 64, 82, 90, 93])';
%梯度下降參數(shù)設(shè)計(jì)
alpha=0.001;%當(dāng)alpha大于1時(shí)就不收斂了
theta=[2;3];%選哪個(gè)點(diǎn)作為起點(diǎn)似乎對收斂速度影響不大
times=2000;%迭代次數(shù)
for i=1:times
delta=X*theta-y;%求偏導(dǎo)數(shù)
theta=theta-alpha.*(X'*delta);%梯度下降
J(i)=delta'*delta;%求此時(shí)的Cost Function值
end
%觀察Cost Function值隨迭代次數(shù)的變化
% plot(J);
%觀察擬合情況
stem(X1,y);
p2=X*theta;
hold on;
plot(X1,p2);
?
7.實(shí)際使用
實(shí)際使用線性回歸時(shí),先對輸入數(shù)據(jù)進(jìn)行優(yōu)化。包括:1.將冗余的和無關(guān)的變量去掉;2.對于非線性關(guān)系,采用多項(xiàng)式擬合,將一個(gè)變量變?yōu)槎鄠€(gè)變量;3.將輸入范圍歸一化。
?
小結(jié)
線性回歸開始假設(shè)輸入和輸出存在線性關(guān)系,
然后使用線性回歸模型h=θTx,用Cost Function J(θ)評價(jià)擬合程度,
通過對J(θ)應(yīng)用梯度下降算法逼近一組好的參數(shù)θ,從而得到一個(gè)適用的模型h。
?
線性回歸的使用建立在“輸入和輸出存在線性關(guān)系”這一假設(shè)基礎(chǔ)上,把一組特征映射到一個(gè)值。
使用起來,也許因?yàn)槟P吞唵?#xff0c;感覺不到“機(jī)器學(xué)習(xí)”的感覺。選用時(shí)也需要很多先驗(yàn)知識、針對特定情況,就像一般的編程處理問題一樣。
在使用梯度下降的算法時(shí),迭代的過程,有點(diǎn)“學(xué)習(xí)”的感覺。
轉(zhuǎn)載于:https://www.cnblogs.com/sumr/p/9746649.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Andrew Ng机器学习(一):线性回归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java swing中的keyListe
- 下一篇: 做梦梦到借钱给别人什么意思