前言:线性回归的实现在机器学习中是相对比较容易理解和实现的,最近回顾了一下之前学的线性回归,重新理了一下吴恩达的作业,加之之前做的时候很多地方不明白。因此,重新将其实现一遍。
简单来说,利用梯度下降算法求解线性回归方程主要分为两步:1、计算代价函数;2、最小化代价函数得到参数θ。
下面依次来实现单变量和多变量的线性回归问题。
单变量问题
computeCost.m
这个函数的作用就是计算代价函数,代价函数的计算公式如下。
对于的MATLAB代码实现也相当简单 ,这里采用向量化的方式实现。
function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
% J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y
% Initialize some useful values
m = length(y); % number of training examples
% You need to return the following variables correctly
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.
J = sum((X * theta - y) .^ 2 ) / (2 * m);
% =========================================================================
end
gradientDescent..m
这个函数的作用就是进行梯度下降运算,在运行梯度下降时唯一需要注意的就是对于σ变量的同步更新。通过一定次数的迭代,可以得到目标参数σ的值。
同样,这里的代码也采用向量化实现。在代码中定义了一个temp变量,用来临时存储计算的θ值,在所有的θ值计算完毕后做到同时更新。</