Exercise 2: Linear Regression

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

  • 线性回归

线性回归基本模型:
h_{\theta}(x) = \theta_0 + \theta_0 x_1 + ...+ \theta_n x_n
其中,x_1,x_2,....,x_nn个特征变量,\theta_1,\theta_2,....,\theta_n为拟合系数,\theta_0为截距。为简便,引入x_0=1,改写上式:
h_{\theta}(x)=\theta^T x = \theta_0 x_0 + \theta_0 x_1 + ...+ \theta_n x_n
采用均方误差(MSE)衡量拟合损失J(\theta):
J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2
h_{\theta}(x^{(i)})为第i个样本x^{(i)}的预测值,y^{(i)}为实际值,m为样本个数。
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}.
J(\theta)可矢量化为:
J(\theta) = \frac{1}{2m}||X\theta-Y||^2
使用梯度下降求解:
\theta := \theta - \alpha*\frac{\partial J(\theta)} {\partial \theta} = \theta - \frac{\alpha}{m}X^T(X\theta - Y)
\alpha为学习率。

  • matlab实现求\theta

数据准备: 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


  • 直接求解
    J(\theta)是关于\theta的光滑凸函数,具有闭式解:
    \theta = (X^TX)^{-1}X^TY
    通过matlab直接求解可得:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。