【机器学习】什么是线性回归、cost function以及常用的线性回归算法

我们首先通过回归问题中最简单的线性回归(Linear Regression)来了解什么是监督学习。
监督学习的模型一般可以表示成如下:
【机器学习】什么是线性回归、cost function以及常用的线性回归算法
在监督学习的问题中,我们要找到一个函数h(x),使得对于一个给定的数据集x,能预测出对应的输出y。即 y=h(x)y = h(x)
如果我们所要预测的y值是连续的,比如房价,那么这就是一个回归问题;如果y值是一些离散的点,比如是良性肿瘤还是恶性肿瘤,那么这就是一个分类问题。

线性回归

1.表达形式

所谓线性回归,就是y和x的关系是线性的。
【机器学习】什么是线性回归、cost function以及常用的线性回归算法
对于只有一个特征的线性回归,hθ(x)h_{\theta}(x)可以表示成:
hθ(x)=θ1x+θ0h_{\theta}(x) = \theta_{1} x+\theta_{0}

如果有多个特征,那么h(x)可以表示成:
hθ(x)=θ0+θ1x1+θ2x2+...+θnxnh_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...+\theta{n}x_{n}

其中,nn代表特征的个数。

2.cost function

代价函数(cost function),有些地方也叫损失函数(loss function).它是用来衡量预测值hθ(x)h_{\theta}(x)与真实值y之间的差异,记为J(θ)J(\theta)。需要注意的是,对于每种算法来说,cost function并不是唯一的。如果J(θ)J(\theta)的值越小,那么说明模型和参数越符合训练样本。
训练参数的过程就是不断地改变θ\theta,从而得到更小的J(θ)J(\theta)的过程。
一个好的cost function需要满足两个最基本的要求:(1)能够评价模型的准确性 (2)对参数θ\theta可微
在线性回归中,最常用的cost function就是均方误差(Mean squared error).具体表现形式是:
J(θ0,θ1,...θn)=12mi=1m(y^(i)y(i))2=12mi=1m(hθ(x0(i),x1(i),...xn(i))y(i))2J(\theta_0,\theta_1,...\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x_0^{(i)},x_1^{(i)},...x_n^{(i)})-y^{(i)})^2

其中mm表示样本的数量。
那么对于给定的样本,我们需要找到θ0,θ1,...θn\theta_0,\theta_1,...\theta_n得到
minθ0,θ1,...,θnJ(θ0,θ1,...θn)\min\limits_{\theta_0,\theta_1,...,\theta_n}J(\theta_0,\theta_1,...\theta_n)

3.梯度下降法

梯度下降法(Gradient descent)是求J(θ)J(\theta)最小值的一种常用的算法。
在微积分里,对多元函数的参数求\partial偏导,把求得的各个参数的偏导数以向量的形式写出来,就是梯度,例如J(θ0,θ1)J(\theta_0,\theta_1)θ0\theta_0θ1\theta_1求偏导,得到的梯度向量就是(Jθ0,Jθ1)T(\frac{\partial{J}}{\partial{\theta_0}},\frac{\partial{J}}{\partial{\theta_1}})^{T}。梯度向量,从几何意义上讲,是函数增加最快地地方。也就是说,从某一个点出发,沿着梯度向量的方向,容易找到函数的最大值。
如果我们要求J(θ0,θ1)J(\theta_0,\theta_1)的最小值,那么沿着梯度向量相反的方向,也就是(Jθ0,Jθ1)T-(\frac{\partial{J}}{\partial{\theta_0}},\frac{\partial{J}}{\partial{\theta_1}})^{T}的方向,一步一步迭代求解。
但是梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解,但如果J(θ0,θ1)J(\theta_0,\theta_1)是凸函数,梯度下降法得到的解就一定是全局最优解。
对于有多个特征参数的损失函数J(θ0,θ1,...,θn)J(\theta_0,\theta_1,...,\theta_n),梯度下降法的具体算法是:
θ0=θ0αθ0J(θ0,θ1,...,θn)\theta_0=\theta_0-\alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1,...,\theta_n)

\vdots

θj=θjαθjJ(θ0,θ1,...,θn)\theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,...,\theta_n)

\vdots

θn=θnαθnJ(θ0,θ1,...,θn)\theta_n=\theta_n-\alpha\frac{\partial}{\partial\theta_n}J(\theta_0,\theta_1,...,\theta_n)

一直迭代更新,直到收敛。其中,α\alpha是步长,也叫学习速率(learning rate)。α\alpha值的选择也比较关键,如果α\alpha选择的值太小,会使得收敛太慢,但如果α\alpha的值太大,会导致损失函数J(θ)J(\theta)不仅不收敛,反而会发散。
把梯度下降法的公式带入线性回归的损失函数J(θ0,...,θn)J(\theta_0,...,\theta_n)的公式中:
θj=θjαmi=1m(hθ(x0(i),x1(i),...xn(i))y(i))xj(i)\theta_j=\theta_j-\frac{\alpha}{m}\sum_{i=1}^{m}(h_\theta(x_0^{(i)},x_1^{(i)},...x_n^{(i)})-y^{(i)})x_j^{(i)}

其中x0(i)x_0^{(i)}的值为1。

4.梯度下降法的矩阵表示形式

线性回归的模型假设函数为
h(x0,x1,...,xn)=θ0x0+θ1x1+...+θnxnh(x_0,x_1,...,x_n)=\theta_0x_0+\theta_1x_1+...+\theta_nx_n

表示为矩阵形式为
hθ(X)=Xθh_\theta(X)=X\theta

其中,θ\theta(n+1)×1(n+1)\times1维的向量,XXm×(n+1)m\times(n+1)维的矩阵,hθ(X)h_\theta(X)m×1m\times1维的向量。mm代表样本的个数,nn代表特征的个数。
那么损失函数J(θ)J(\theta)的表示形式为:
J(θ)=12m(XθY)T(XθY)J(\theta)=\frac{1}{2m}(X\theta-Y)^T(X\theta-Y)

其中YY是样本的输出向量,维度为m×1m\times1
梯度下降算法的更新过程可以表示为:
θ=θαmXT(XθY)\theta=\theta-\frac{\alpha}{m}X^T(X\theta-Y)

5.归一化

样本中不同特征的取值范围不同,可能导致迭代范围很慢。为了减少特征取值的影响,可以对特征数据归一化,也就是对每个特征xx,求出它的期望x\overline{x}和标准差std(x)std(x),然后转化为:
x=xxstd(x)x=\frac{x-\overline{x}}{std(x)}

6.正规方程(Normal Equation)

梯度下降法是一种求损失函数最小值的算法,现在我们讨论另外一种算法–正规方程(Normal Equation)。正规方程的好处是无需迭代即可直接求取出θ\theta值。
下面来演示一下推导过程,前面已经得到损失函数的矩阵表达式为:
J(θ)=12m(XθY)T(XθY)J(\theta)=\frac{1}{2m}(X\theta-Y)^T(X\theta-Y)

因为12m\frac{1}{2m}是常数,对最终的解没有影响,我们可以先将这部分省去。于是将上式展开得:
J(θ)=(θTXTYT)(XθY)J(\theta)=(\theta^TX^T-Y^T)(X\theta-Y)

J(θ)=θTXTXθ(Xθ)TYYTXθ+YTYJ(\theta)=\theta^TX^TX\theta-(X\theta)^TY-Y^TX\theta+Y^TY

因为XθX\thetaYY都是m×1m\times1维的向量,所以这两者相乘先后顺序没有关系,于是上式简化成:
J(θ)=θTXTXθ2(Xθ)TY+YTYJ(\theta)=\theta^TX^TX\theta-2(X\theta)^TY+Y^TY

接着对θ\theta求导:
θJ(θ)=2XTXθ2XTY\frac{\partial}{\partial\theta}J(\theta)=2X^TX\theta-2X^TY

θJ(θ)=0\frac{\partial}{\partial\theta}J(\theta)=0时取极值,得到:
XTXθ=XTYX^TX\theta=X^TY

于是得到θ\theta的值为:
θ=(XTX)1XTY\theta=(X^TX)^{-1}X^TY

即为最优解。

7.梯度下降法和正规方程的比较

正规方程可以直接求θ\theta,不需要多次迭代,而且也不需要做归一化,而归一化对梯度下降非常重要,但是正规方程却增加了计算的复杂度,不适用于特征非常多的样本。下面把这两种算法的优缺点列出来:
【机器学习】什么是线性回归、cost function以及常用的线性回归算法
这是Andrew课程中的图片。在实际应用中,根据实际的情况选择对应的算法。