线性回归模型是最简单的监督式学习模型:
所谓的监督式学习模型就是需要通过已有的数据训练出一个最优的模型,能够表示这些已有的模型并能够预测新的数据。怎么判断模型是不是最优的呢?这就需要引入代价函数(Cost Function):
怎么得到最优的模型呢?这就需要求解代价函数的最小值,也就需要引入梯度下降法。梯度下降法就是通过迭代,每一次都比之前已次更加接近代价函数的最小值,最后在误差允许的范围内终止迭代。
我们求出了参数,带入
便得到了最简单的线性回归模型
参考练习:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=MachineLearning&doc=exercises/ex2/ex2.html
function Linear_Regression()
clear all; close all;clc x=load('ex2x.dat') y=load('ex2y.dat') m=length(y); %plot the training data figure; plot(x,y,'o'); ylabel('Height in meters'); xlabel('Age in years') %gradient descent x=[ones(m,1) x]; theta = zeros(size(x(1,:)))'; MAX_ITER = 1500; alpha=0.07; for iter=1:MAX_ITER grad = (1/m).*x'*((x*theta)-y); theta = theta - alpha .*grad; end theta hold on; plot(x(:,2),x*theta,'-') legend('Training data','Linear regression') hold off predict1=[1,3.5]*theta predict2=[1,7]*theta theta0_vals=linspace(-3,3,100); theta1_vals=linspace(-1,1,100); J_vals =zeros(length(theta0_vals),length(theta1_vals)); for i=1:length(theta0_vals) for j=1:length(theta1_vals) t=[theta0_vals(i);theta1_vals(j)]; J_vals(i,j) = (0.5/m).*(x*t-y)'*(x*t-y); end end J_vals= J_vals'; figure; surf(theta0_vals,theta1_vals,J_vals) xlabel(' heta_0'); ylabel(' heta_1'); figure contour(theta0_vals,theta1_vals,J_vals,logspace(-2,2,15)) xlabel(' heta_0'); ylabel(' heta_1'); end
Cantor图
参考资料http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning
版权声明:本文为博主原创文章,未经博主允许不得转载。