線性回歸屬於監督學習,因此方法和監督學習應該是一樣的,先給定乙個訓練集,根據這個訓練集學習出乙個線性函式,然後測試這個函式訓練的好不好(即此函式是否足夠擬合訓練集資料),挑選出最好的函式(cost function最小)即可;
注意:(1)因為是線性回歸,所以學習到的函式為線性函式,即直線函式;
(2)線性回歸可分為單變數線性回歸和多變數線性回歸;對於單變數線性回歸而言,只有乙個輸入變數x;
我們能夠給出單變數線性回歸的模型:
我們常稱x為feature,h(x)為hypothesis;上述模型中的θ0和θ1在**中分別用theta0和theta1表示。
從上面「方法」中,我們肯定有乙個疑問,怎麼樣能夠看出線性函式擬合的好不好呢?我們需要使用到cost function(代價函式),代價函式越小,說明線性回歸地越好(和訓練集擬合地越好),當然最小就是0,即完全擬合。cost function的內部構造如下面公式所述:
其中:表示向量x中的第i個元素;
表示向量y中的第i個元素;
表示已知的假設函式;
m為訓練集的數量;
雖然給定乙個函式,我們能夠根據cost function知道這個函式擬合的好不好,但是畢竟函式有這麼多,總不可能乙個乙個試吧?因此我們引出了梯度下降:能夠找出cost function函式的最小值;
梯度下降原理:將函式比作一座山,我們站在某個山坡上,往四周看,從哪個方向向下走一小步,能夠下降的最快;當然解決問題的方法有很多,梯度下降只是其中乙個,還有一種方法叫normal equation;
方法:(1)先確定向下一步的步伐大小,我們稱為learning rate(alpha);
(2)任意給定乙個初始值:(用theta0和theta1表示);
(3)確定乙個向下的方向,並向下走預先規定的步伐,並更新;
(4)當下降的高度小於某個定義的值,則停止下降;
演算法:特點:
(1)初始點不同,獲得的最小值也不同,因此梯度下降求得的只是區域性最小值;
(2)越接近最小值時,下降速度越慢;
梯度下降能夠求出乙個函式的最小值;
線性回歸需要使得cost function的最小;
因此我們能夠對cost function運用梯度下降,即將梯度下降和線性回歸進行整合,如下圖所示:
上式中右邊的公式推導過程如下:
從上面的推導中可以看出,要想滿足梯度下降的條件,則項後面必須乘以對應的輸入訊號。
梯度下降是通過不停的迭代,而我們比較關注迭代的次數,因為這關係到梯度下降的執行速度,為了減少迭代次數,因此引入了feature scaling。
此種方法應用於梯度下降,為了加快梯度下降的執行速度;
思想:將各個feature的值標準化,使得取值範圍大致都在-1<=x<=1之間;
常用的方法是mean normalization,即
或者:[x-mean(x)]/std(x);
clear all
clc% training sample data;
p0=3;
p1=7;
x=1:3;
y=p0+p1*x;
num_sample=size(y,2);
% gradient descending process
% initial values of parameters
theta0=1;
theta1=3;
%learning rate
alpha=0.02;
% if alpha is too large, the final error will be much large.
% if alpha is too small, the convergence will be slow
epoch=500;
for k=1:epoch
v_k=k
h_theta_x=theta0+theta1*x; % hypothesis function
jcost(k)=((h_theta_x(1)-y(1))^2+(h_theta_x(2)-y(2))^2+(h_theta_x(3)-y(3))^2)/num_sample
theta0=theta0-alpha*((h_theta_x(1)-y(1))+(h_theta_x(2)-y(2))+(h_theta_x(3)-y(3)))/num_sample;
theta1=theta1-alpha*((h_theta_x(1)-y(1))*x(1)+(h_theta_x(2)-y(2))*x(2)+(h_theta_x(3)-y(3))*x(3))/num_sample;
endplot(jcost)
clear all
clc% training sample data;
p0=26;
p1=73;
x=1:3;
y=p0+p1*x;
num_sample=size(y,2);
% gradient descending process
% initial values of parameters
theta0=1;
theta1=3;
%learning rate
alpha=0.08;
% if alpha is too large, the final error will be much large.
% if alpha is too small, the convergence will be slow
epoch=500;
for k=1:epoch
v_k=k
h_theta_x=theta0+theta1*x; % hypothesis function
jcost(k)=((h_theta_x(1)-y(1))^2+(h_theta_x(2)-y(2))^2+(h_theta_x(3)-y(3))^2)/num_sample;
theta0=theta0-alpha*((h_theta_x(1)-y(1))+(h_theta_x(2)-y(2))+(h_theta_x(3)-y(3)))/num_sample;
theta1=theta1-alpha*((h_theta_x(1)-y(1))*x(1)+(h_theta_x(2)-y(2))*x(2)+(h_theta_x(3)-y(3))*x(3))/num_sample;
% dispcomp 1
r1=((h_theta_x(1)-y(1))+(h_theta_x(2)-y(2))+(h_theta_x(3)-y(3)));
r2=sum(h_theta_x-y);
% dispcomp 2
r3=((h_theta_x(1)-y(1))^2+(h_theta_x(2)-y(2))^2+(h_theta_x(3)-y(3))^2);
r4=sum((h_theta_x-y).^2);
% dispcomp 3
r5=((h_theta_x(1)-y(1))*x(1)+(h_theta_x(2)-y(2))*x(2)+(h_theta_x(3)-y(3))*x(3));
r6=sum((h_theta_x-y).*x);
if((r1~=r2)||(r3~=r4)||(r5~=r6))
disp('***wrong result******')
endend
plot(jcost)
單變數線性回歸的模型:
與單神經元模型具有對應的關係,可實現相同的功能。其中θ0相當於單神經元的偏置值bias值,x相當於單神經元的單個輸入,θ1相當於單神經元的權值w。如果不包含θ0,那麼則可能無法準確完成線性回歸的功能。
因此,對於單神經元結構而言,偏置值bias是必不可少的。
對於雙變數線性回歸模型:
而言,可實現雙輸入單神經元的功能。其偏置值對應θ0。
MATLAB最速下降法,牛頓法和共軛梯度法求解的方法
實驗要求 1 所屬課程名稱 最優化方法 2 實驗日期 2010年5月10日 2010年5月15日 3 實驗目的 掌握最速下降法,牛頓法和共軛梯度法的演算法思想,並能上機程式設計實現相應的演算法。二 實驗要求 用matlab實現最速下降法,牛頓法和共軛梯度法求解例項。四 實驗原理 最速下降法是以負梯度...
影象處理中的梯度 梯度方向總結
一 數學中的方向導數與梯度 方向導數為函式沿某一指定方向的變化率。方向導數的定義為 若此時的極限存在。其中為與l同方向的單位向量,該方向導數就是處沿方向l的變化率。進而有,其中為方向l的方向餘玄。向量稱為函式在點的梯度,記為。若函式在點可微分,與方向l同向的單位向量,則 其中,此式表明方向導數與梯度...
志願填報何拉開梯度
在很多志願填報過程中,我們經常說到要注意梯度,學校志願要有梯度,專業志願要有梯度,那麼究竟什麼是梯度?填報志願過程中又該怎樣把握梯度呢?2011年,某省理科考生小強 化名 的志願填報為我們給出了答案。小強2009年的高考分數是566分,高出當地一本線47分,一本平行志願依次報考廈門大學 哈爾濱工業大...