單變數線性回歸
假設方程:(構造矩陣x時,使x(:,1)=1)
代價函式:(y是訓練集中實際值,hθ(x)是**值)
利用gradient descent(梯度下降),一步步迭代求出使代價函式最小的θ,**注意:對於單變數,θ是二維的
data = load('ex1data1.txt');
x = data(:, 1);
y = data(:, 2);
m = length(y); % number of training examples
plotdata(x, y);
x = [ones(m, 1), data(:,1)]; % add a column of ones to x
theta = zeros(2, 1); % initialize fitting parameters
% some gradient descent settings
iterations = 1500;
alpha = 0.01;
%compute theta
for iter = 1:iterations
temp1=theta(1)-alpha/m*sum((x*theta-y).*x(:,1));
temp2=theta(2)-alpha/m*sum((x*theta-y).*x(:,2));
theta(1)=temp1;
theta(2)=temp2;
endhold on; % keep previous plot visible
plot(x(:,2), x*theta, '-')
legend('training data', 'linear regression')
hold off % don't overlay any more plots on this figure
執行結果:
ex1data1.txt部分資料:
多變數線性回歸
多變數線性回歸與單變數大同小異,只是θ維度變為n*1,在用gradient descent方法計算時,用乙個迴圈計算即可。
temp=zeros(size(theta,1),1);
for i=1:size(theta,1),
temp(i)=theta(i)-alpha/m*sum((x*theta-y).*x(:,i));
end;
for i=1:size(theta,1),
theta(i)=temp(i);
end;
在迭代中可以計算出每一次迭代損失函式的值(即每個theta對應的j的值)然後畫出來。
j=(x*theta-y)'*(x*theta-y)/2/m;
隨著迭代次數增加,j逐漸減小,alpha值增大,j減小速度越快,但是,當alpha很大時j不會一直減小會出現波動。
MATLAB 線性回歸
一 一元線性回歸 1 1 命令 polyfit最小二乘多項式擬合 p,s polyfit x,y,m 多項式y a1xm a2xm 1 amx am 1 其中x x1,x2,xm x1 xm為 n 1 的矩陣 y為 n 1 的矩陣 p a1,a2,am 1 是多項式y a1xm a2xm 1 amx...
matlab線性回歸程式
最近用matlab做線性回歸,用到命令regress,可是發現他沒辦法做回歸係數的t檢驗,因此,自己就寫了乙個。參考書籍 計量經濟學 龐皓 科學出版社 function b,beta,t,t0,sigma,rss,tss,r,r1,f,f0 pureregress x,y,con x是因子,n p,...
MATLAB實現多元線性回歸
function b,bint,r,rint,stats multiple linear regression x,y,alpha multiple linear regression 多元線性回歸 對於輸入資料 必須是去除量綱之後的資料 進行多元線性回歸處理 輸入變數 x 由自變數組成的矩陣 第一...