Exercise 2: Linear Regression

吴恩达机器学习课程作业 Exercise 2: Linear Regression, matlab实现。

  • 线性回归

线性回归基本模型:

其中,为个特征变量,为拟合系数,为截距。为简便,引入,改写上式:

采用均方误差(MSE)衡量拟合损失:

为第个样本的预测值,为实际值,为样本个数。
x^{(i)}=(x^{(i)}_0,x^{(i)}_1,...,x^{(i)}_n) \in R^{1\times (n+1)},\\ \theta=(\theta_0,\theta_1,...,\theta_n) \in R^{ (n+1)\times 1}, \\ X=(x^{(1)}; x^{(2)};...;x^{(m)}) \in R^{m\times (n+1)}, \\ Y=(y^{(1)},y^{(2)},...,y^{(m)}) \in R^{m\times 1}.
可矢量化为:

使用梯度下降求解:

为学习率。

  • matlab实现求

数据准备: Download ex2Data.zip.

% Data Visualization

X = load('ex2x.dat');
Y = load('ex2y.dat');
figure
plot(X, Y, 'o');
ylabel('Height in meters')
xlabel('Age in years')
  • 梯度下降
m = length(Y);        % the number of training examples
X = [ones(m, 1), X];  % Add a column of ones to X (i.e., x_0)
theta0 = 0; theta1 = 0;
theta = [theta0; theta1];  % dim: 2x1
epoch_num = 5000;      % 迭代次数5000
alpha = 0.05;             
Loss = zeros(1, epoch_num);    %记录每一轮的平均损失
 
for epoch = 1:epoch_num
    J = norm(X*theta - Y)^2/m/2;
    Loss(epoch) = J;
    theta = theta - alpha * X'*(X*theta - Y)/m;
end


  • 直接求解
    是关于的光滑凸函数,具有闭式解:

    通过matlab直接求解可得:

你可能感兴趣的:(Exercise 2: Linear Regression)