Machine Learning
  • Introduction
  • 机器学习
    • 前言
      • 符号表
    • 监督式学习
      • 感知机
        • 感知机模型
        • 感知机学习算法
        • 算法python实现
      • Logistic回归
        • Logistic分布
        • Logistic回归模型
        • 算法python实现
      • 线性回归
        • 线性回归模型
        • 算法python实现
      • K近邻法
        • k近邻模型
        • kd树方法
        • kd树python实现
        • knn实例
      • 朴素贝叶斯法
        • 模型和原理
        • 参数估计
        • 算法和实现
      • 决策树
        • 模型与学习
        • 特征选择
        • 生成算法和剪枝
        • python实现
      • 支持向量机
    • 神经网络
      • 神经元模型和感知机
      • 神经网络
      • 神经网络的矩阵表达
      • 反向传播算法
        • 算法证明
        • 算法代码
        • 基于矩阵的计算
      • 改进神经网络的学习方法
        • 交叉熵代价函数
        • softmax
        • regularization
        • 权重初始化
      • 卷积神经网络
        • 基本介绍
    • 数学基础
      • 线性代数
        • 特征值和特征向量
      • 概率统计
        • 随机变量的特征
        • 样本统计量
        • 先验后验概率
      • 微积分
        • 向量内积
        • 方向导数和梯度
        • 梯度下降法
      • 信息论
        • 熵
        • 相对熵和交叉熵
        • 条件熵
        • 互信息
Powered by GitBook
On this page
  • 线性回归模型(linear regression)
  • 1.模型定义
  • 2.学习算法
  • 2.1 Normal Equations
  • 2.2 批量梯度下降(Batch Gradient Descent)
  • 2.3 随机梯度下降(Stochastic Gradient Descent)
  1. 机器学习
  2. 监督式学习
  3. 线性回归

线性回归模型

线性回归模型(linear regression)

1.模型定义

给定数据集,T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)=(1,x1,x2,...,xn)T∈X=Rn+1x^{(i)}=(1, x_1, x_2, ..., x_n)^T\in X= R^{n+1}x(i)=(1,x1​,x2​,...,xn​)T∈X=Rn+1,y(i)∈Y=Ry^{(i)}\in Y=Ry(i)∈Y=R,线性回归模型试图学到一个通过属性的线性组合来进行预测的函数,即

f(x)=w1x1+w2x2+...+wnxn+bf(x)=w_1x_1+w_2x_2+...+w_nx_n+bf(x)=w1​x1​+w2​x2​+...+wn​xn​+b

一般用向量写成:

f(x)=wT⋅x+bf(x)=w^T\cdot x+bf(x)=wT⋅x+b

其中w=(w1,x2,...,wn)T∈Rnw=(w_1, x_2, ..., w_n)^T\in R^{n}w=(w1​,x2​,...,wn​)T∈Rn,b∈Rb\in Rb∈R,使得f(x)≃yf(x)\simeq yf(x)≃y。

如何确定www和bbb呢,显然关键在于如何衡量f(x)f(x)f(x)与yyy之间的差别。均方误差是最常用的性能度量,因此我们可以试图让均方误差最小化,即:

min⁡w,bL(w,b)=∑i=1m(f(x(i))−y(i))2\min_{w,b} L(w,b)=\displaystyle\sum_{i=1}^m(f(x^{(i)})-y^{(i)})^2w,bmin​L(w,b)=i=1∑m​(f(x(i))−y(i))2
=∑i=1m(wT⋅x(i)+b−y(i))2=\displaystyle\sum_{i=1}^m(w^T\cdot x^{(i)}+b-y^{(i)})^2=i=1∑m​(wT⋅x(i)+b−y(i))2

均方误差有非常好的几何意义,它对应了常用的欧几里得距离或简称“欧氏距离”(Euclidean distance)。基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method)。在线性回归中,最小二乘法是试图找到一条直线,使得所有样本到直线上的欧氏距离之和最小。

求解www和bbb,使L(w,b)=∑i=1m(f(x(i))−y(i))2L(w,b)=\displaystyle\sum_{i=1}^m(f(x^{(i)})-y^{(i)})^2L(w,b)=i=1∑m​(f(x(i))−y(i))2最小化的过程,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。令w0=bw_0=bw0​=b,x0=1x_0=1x0​=1,则w=(w0,w1,w2,...,wn)Tw=(w_0,w_1, w_2, ..., w_n)^Tw=(w0​,w1​,w2​,...,wn​)T,x=(x0,x1,x2,...,xn)Tx=(x_0, x_1, x_2, ..., x_n)^Tx=(x0​,x1​,x2​,...,xn​)T,原式转换为:

f(x)=wT⋅xf(x)=w^T\cdot xf(x)=wT⋅x
min⁡wL(w)=∑i=1m(wT⋅x(i)−y(i))2\min_{w} L(w)=\displaystyle\sum_{i=1}^m(w^T\cdot x^{(i)}-y^{(i)})^2wmin​L(w)=i=1∑m​(wT⋅x(i)−y(i))2

对其求导,可得:

∂L(w,b)∂wj=∂∑i=1m(wT⋅x(i)−y(i))2∂wj\dfrac{\partial L(w,b)}{\partial w_j}=\dfrac{\partial \displaystyle\sum_{i=1}^m(w^T\cdot x^{(i)}-y^{(i)})^2}{\partial w_j}∂wj​∂L(w,b)​=∂wj​∂i=1∑m​(wT⋅x(i)−y(i))2​
=∑i=1m2(wT⋅x(i)−y(i))xj(i)=\displaystyle\sum_{i=1}^m2(w^T\cdot x^{(i)}-y^{(i)})x^{(i)}_j=i=1∑m​2(wT⋅x(i)−y(i))xj(i)​

得到梯度向量:

∇L(w)=∑i=1m(wT⋅x(i)−y(i))x(i)\nabla L(w)= \displaystyle\sum_{i=1}^m(w^T\cdot x^{(i)}-y^{(i)})x^{(i)}∇L(w)=i=1∑m​(wT⋅x(i)−y(i))x(i)

假定:

X=[(x(1))T(x(2))T(x(3))T...(x(m))T]=[1x1(1)x2(1)...xn(1)1x1(2)x2(2)...xn(2)1x1(3)x2(3)...xn(3)...1x1(m)x2(m)...xn(m)]X= \begin{bmatrix} (x^{(1)})^T \\ (x^{(2)})^T \\ (x^{(3)})^T \\ ... \\ ( x^{(m)} )^T \end{bmatrix} = \begin{bmatrix} 1 & x^{(1)}_1 & x^{(1)}_2 & ... & x^{(1)}_n \\ 1 & x^{(2)}_1 & x^{(2)}_2 & ... & x^{(2)}_n \\ 1 & x^{(3)}_1 & x^{(3)}_2 & ... & x^{(3)}_n \\ ... \\ 1 & x^{(m)}_1 & x^{(m)}_2 & ... & x^{(m)}_n \end{bmatrix}X=​(x(1))T(x(2))T(x(3))T...(x(m))T​​=​111...1​x1(1)​x1(2)​x1(3)​x1(m)​​x2(1)​x2(2)​x2(3)​x2(m)​​............​xn(1)​xn(2)​xn(3)​xn(m)​​​,Y=[y(1)y(2)y(3)...y(m)]Y=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ ... \\ y^{(m)} \end{bmatrix}Y=​y(1)y(2)y(3)...y(m)​​,w=[w0w1w2...wn]w=\begin{bmatrix} w_0 \\ w_1 \\ w_2 \\ ... \\ w_n \end{bmatrix}w=​w0​w1​w2​...wn​​​

则:

X⋅w=[1x1(1)x2(1)...xn(1)1x1(2)x2(2)...xn(2)1x1(3)x2(3)...xn(3)...1x1(m)x2(m)...xn(m)]⋅[w0w1w2...wn]=[(x(1))T⋅w(x(2))T⋅w(x(3))T⋅w...(x(m))T⋅w]=[wT⋅x(1)wT⋅x(2)wT⋅x(3)...wT⋅x(m)]X\cdot w= \begin{bmatrix} 1 & x^{(1)}_1 & x^{(1)}_2 & ... & x^{(1)}_n \\ 1 & x^{(2)}_1 & x^{(2)}_2 & ... & x^{(2)}_n \\ 1 & x^{(3)}_1 & x^{(3)}_2 & ... & x^{(3)}_n \\ ... \\ 1 & x^{(m)}_1 & x^{(m)}_2 & ... & x^{(m)}_n \end{bmatrix}\cdot \begin{bmatrix} w_0 \\ w_1 \\ w_2 \\ ... \\ w_n \end{bmatrix}=\begin{bmatrix} (x^{(1)})^T\cdot w \\ (x^{(2)})^T\cdot w \\ (x^{(3)})^T\cdot w \\ ... \\ (x^{(m)})^T\cdot w \end{bmatrix}=\begin{bmatrix} w^T \cdot x^{(1)} \\ w^T \cdot x^{(2)} \\ w^T \cdot x^{(3)} \\ ... \\ w^T \cdot x^{(m)} \end{bmatrix}X⋅w=​111...1​x1(1)​x1(2)​x1(3)​x1(m)​​x2(1)​x2(2)​x2(3)​x2(m)​​............​xn(1)​xn(2)​xn(3)​xn(m)​​​⋅​w0​w1​w2​...wn​​​=​(x(1))T⋅w(x(2))T⋅w(x(3))T⋅w...(x(m))T⋅w​​=​wT⋅x(1)wT⋅x(2)wT⋅x(3)...wT⋅x(m)​​
X⋅w−Y=[wT⋅x(1)−y(1)wT⋅x(2)−y(2)wT⋅x(3)−y(3)...wT⋅x(m)−y(m)]X\cdot w-Y =\begin{bmatrix} w^T \cdot x^{(1)}-y^{(1)} \\ w^T \cdot x^{(2)}-y^{(2)} \\ w^T \cdot x^{(3)}-y^{(3)} \\ ... \\ w^T \cdot x^{(m)}-y^{(m)} \end{bmatrix}X⋅w−Y=​wT⋅x(1)−y(1)wT⋅x(2)−y(2)wT⋅x(3)−y(3)...wT⋅x(m)−y(m)​​
XT⋅(X⋅w−Y)=[x(1)x(2)x(3)...x(m)]⋅[wT⋅x(1)−y(1)wT⋅x(2)−y(2)wT⋅x(3)−y(3)...wT⋅x(m)−y(m)]X^T\cdot (X\cdot w-Y )=\begin{bmatrix} x^{(1)} & x^{(2)} & x^{(3)} & ... & x^{(m)} \end{bmatrix}\cdot \begin{bmatrix} w^T \cdot x^{(1)}-y^{(1)} \\ w^T \cdot x^{(2)}-y^{(2)} \\ w^T \cdot x^{(3)}-y^{(3)} \\ ... \\ w^T \cdot x^{(m)}-y^{(m)} \end{bmatrix}XT⋅(X⋅w−Y)=[x(1)​x(2)​x(3)​...​x(m)​]⋅​wT⋅x(1)−y(1)wT⋅x(2)−y(2)wT⋅x(3)−y(3)...wT⋅x(m)−y(m)​​

于是得到:

∇L(w)=2XT⋅(X⋅w−Y)\nabla L(w)=2 X^T\cdot (X\cdot w-Y )∇L(w)=2XT⋅(X⋅w−Y)

令一方面L(w)L(w)L(w)也可以表示成:

L(w)=(X⋅w−Y)T⋅(X⋅w−Y)=(wTXTXw−2wTXTY+YTY)L(w)=(X\cdot w-Y)^T\cdot (X\cdot w-Y)=(w^T X^TX w -2w^TX^TY+Y^T Y)L(w)=(X⋅w−Y)T⋅(X⋅w−Y)=(wTXTXw−2wTXTY+YTY)

对www求导,同样可以得到梯度。

欲求的最优解,令梯度为0,

∇L(w)=2XT⋅X⋅w−2XT⋅Y=0\nabla L(w)=2 X^T\cdot X\cdot w-2 X^T\cdot Y =0∇L(w)=2XT⋅X⋅w−2XT⋅Y=0

则得到:

w=(XT⋅X)−1⋅XT⋅Yw=(X^T\cdot X)^{-1}\cdot X^T\cdot Yw=(XT⋅X)−1⋅XT⋅Y

于是最终得到线性模型:

f(x)=wT⋅x=xT⋅(XT⋅X)−1⋅XT⋅Yf(x)=w^T\cdot x=x^T\cdot (X^T\cdot X)^{-1}\cdot X^T\cdot Yf(x)=wT⋅x=xT⋅(XT⋅X)−1⋅XT⋅Y

令X†=(XT⋅X)−1⋅XTX^\dagger =(X^T\cdot X)^{-1}\cdot X^TX†=(XT⋅X)−1⋅XT,称为伪逆(seudo-inverse),代入得到。

f(x)=xT⋅X†⋅Yf(x) = x^T\cdot X^\dagger\cdot Yf(x)=xT⋅X†⋅Y

2.学习算法

2.1 Normal Equations

计算w=(XT⋅X)−1⋅XT⋅Yw=(X^T\cdot X)^{-1}\cdot X^T\cdot Yw=(XT⋅X)−1⋅XT⋅Y,直接得到模型f(x)=wT⋅xf(x)=w^T\cdot xf(x)=wT⋅x

但是计算矩阵的逆是非常费时的事情,Xn×mT⋅Xm×n=Zn×nX^T_{n\times m}\cdot X_{m\times n}=Z_{n\times n}Xn×mT​⋅Xm×n​=Zn×n​,因此当特征数量比较多时,偏向于用梯度下降法。

2.2 批量梯度下降(Batch Gradient Descent)

输入:训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)∈X=Rnx^{(i)}\in X= R^nx(i)∈X=Rn,y(i)∈Y=Rny^{(i)}\in Y=R^ny(i)∈Y=Rn,i=1,2,...,mi=1,2,...,mi=1,2,...,m,学习率η(0<η⩽1)\eta(0<\eta\leqslant1)η(0<η⩽1);

输出:w=(w1,w2,...,wn)Tw=(w_1, w_2, ..., w_n)^Tw=(w1​,w2​,...,wn​)T和bbb,模型f(x)=wT⋅x+bf(x)=w^T\cdot x+bf(x)=wT⋅x+b

1)将输入的每个x(i)x^{(i)}x(i)转换成x(i)=(1,x1,x2,...xn)x^{(i)}=(1, x_1, x_2,...x_n)x(i)=(1,x1​,x2​,...xn​),令w0=bw_0=bw0​=b,则输出为w=(w0,w1,w2,...,wn)Tw=(w_0, w_1, w_2, ..., w_n)^Tw=(w0​,w1​,w2​,...,wn​)T

2)选取初始w(0)=(w0,w1,w2,...,wn)Tw^{(0)}=(w_0, w_1, w_2, ..., w_n)^Tw(0)=(w0​,w1​,w2​,...,wn​)T

3)计算梯度XT⋅(X⋅w(j)−Y)X^T\cdot (X\cdot w^{(j)}-Y )XT⋅(X⋅w(j)−Y),这里略去系数2,其中w(j)w^{(j)}w(j)为第jjj次迭代的结果,则第j+1j+1j+1迭代:

w(j+1)←w(j)−ηXT⋅(X⋅w(j)−Y)w^{(j+1)} \gets w^{(j)} - \eta X^T\cdot (X\cdot w^{(j)}-Y )w(j+1)←w(j)−ηXT⋅(X⋅w(j)−Y)

4)转到步骤(3),一直到满足一定条件,或者迭代到足够的次数。

在批量梯度下降算法中,每一步的迭代都需要计算所有样本,当样本数较大时,计算量会很大。

2.3 随机梯度下降(Stochastic Gradient Descent)

将上面的步骤(3)改为:

3) 随机选取某个样本x(i)x^{(i)}x(i),则:

w(j+1)←w(j)−η((w(j))T⋅x(i)−y(i))x(i)w^{(j+1)} \gets w^{(j)} - \eta ((w^{(j)})^T\cdot x^{(i)}-y^{(i)})x^{(i)}w(j+1)←w(j)−η((w(j))T⋅x(i)−y(i))x(i)

一直到迭代到足够的次数。

Previous线性回归Next算法python实现

Last updated 7 years ago