线性回归

2018 年 10 月 20 日 • 阅读数: 98

线性回归

  • 假设 $\theta_1$ 是年龄的参数,$\theta_2$ 是工资的参数

  • 拟合的平面:$h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2$

  • ($\theta_0$是偏置项,偏置项对要求的值影响很小,$\theta_1,\theta_2$是权重参数,对值影响较大)

  • 整合:$h_\theta(x) = \displaystyle\sum_{i=0}^{n} \theta_ix_i = \mathbf{\theta^T}\mathbf{x}$

  • 真实值和预测值之间肯定是要存在差异的(用 $\varepsilon$ 来表示该误差)

  • 对于每个样本:$y^{(i)}=\mathbf{\theta^Tx^{(i)}}+\varepsilon^{(i)}$

  • 每一个样本都有它自己的一个误差,这些误差都是独立的,并且符合均值为0,方差为$\theta^2$的高斯分布

  • (独立:表示两个样本之间没有任何关联;相同分布,都符合同一个线性方程)

  • 高斯分布:$P(x) = \frac{1}{\sqrt{2 \pi \sigma}} \exp (-\frac{(x-\mu)^2}{2 \sigma^2})$

  • 由于$\mu = 0$,误差符合高斯分布:$P(\varepsilon^{(i)}) = \frac{1}{\sqrt{2 \pi \sigma}} \exp (-\frac{(\varepsilon^{(i)})^2}{2 \sigma^2})$

  • 所以有:$P(y^{(i)}| x^{(i)};\theta) = \frac{1}{\sqrt{2\pi\sigma}}\exp(-\frac{(y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2})$

  • 似然函数:$L(\theta) = \displaystyle\prod_{i=1}^{m}P(y^{(i)}| x^{(i)};\theta) = \displaystyle\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi\sigma}}\exp(-\frac{(y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2})$

  • 根据一个样本去估计值

  • 这里引入似然函数是为了求出什么样的参数和数据组合后恰好是真实值

  • 对数似然:$\log L(\theta)=\log \displaystyle\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi\sigma}}\exp(-\frac{(y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2})$

  • 这里引入对数似然便于求解

  • 对上式展开化简得:
    $\begin{aligned}
    & \displaystyle\sum_{i=1}^m \log \frac{1}{\sqrt{2 \pi \sigma}} \exp(-\frac{(y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2})\
    =& \displaystyle\sum_{i=1}^m \log \frac{1}{\sqrt{2\pi\sigma}}+\displaystyle\sum_{i=1}^m\log\exp(-\frac{(y^{(i)}-\theta^T x^{(i)})^2}{2\sigma^2})\
    =& m\log \frac{1}{\sqrt{2 \pi \sigma}}-\frac{1}{\sigma^2} \cdot \frac{1}{2} \displaystyle \sum_{i=1}^m(y^{(i)}-\theta^T x^{(i)})^2
    \end{aligned}$

  • 目标:似然函数(对数变换后也一样)越大越好

  • 所以对于上式来说,$m\log \frac{1}{\sqrt{2 \pi \sigma}}$ 和 $\frac{1}{\sigma^2} \cdot \frac{1}{2} \displaystyle \sum_{i=1}^m(y^{(i)}-\theta^T x^{(i)})^2$都恒为正数

  • 所以令$\frac{1}{\sigma^2} \cdot \frac{1}{2} \displaystyle \sum_{i=1}^m(y^{(i)}-\theta^T x^{(i)})^2$的值越小,则似然函数的值越大

  • 最终引入最小二乘法$J(\theta) = \frac{1}{2} \displaystyle \sum_{i=1}^m(y^{(i)}-\theta^T x^{(i)})^2$

  • 目标函数:$J(\theta) = \frac{1}{2} \displaystyle \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 = \frac{1}{2}(\mathbf{x\theta}-y)^T(\mathbf{x\theta}-y)$

  • 求偏导:
    $\begin{aligned}
    \nabla_\theta J(\theta) =& \nabla_\theta(\frac{1}{2}(\mathbf{x\theta}-y)^T(\mathbf{x\theta}-
    y))\
    =& \nabla_\theta(\frac{1}{2}(\theta^T\mathbf{x}^T-y^T)(\mathbf{x\theta}-y))\
    =& \nabla_\theta(\frac{1}{2}(\theta^T\mathbf{x}^T\mathbf{x}\theta-\theta^T\mathbf{x}^Ty-y^T\mathbf{x}\theta+y^Ty))\
    =& \frac{1}{2}(2\mathbf{x}^T\mathbf{x}\theta-\mathbf{x}y-(y^T\mathbf{x})^T)\
    =& \mathbf{x}^T\mathbf{x}\theta-\mathbf{x}^Ty\
    \end{aligned}$

  • 偏导等于0:$\theta=(\mathbf{x}^T\mathbf{x})^{-1}\mathbf{x}^Ty$

  • 评估方法

  • 最常用的评估项$R^2 : 1-\frac{\displaystyle\sum_{i=1}^m(\hat{y}i-y_i)^2}{\displaystyle\sum{i=1}^m(y_i-\overline{y})^2}$

  • 上式中分子表示残差平方和,分母类似方差项

  • $R^2$的取值越接近于1我们认为模型拟合得越好

梯度下降

引入目的:

  • 当我们得到一个目标函数后,如何求解?
  • 直接求解,并不一定可解,线性回归可以当做一个特例

常规套路:

  • 机器学习的套路就是我们交给机器一堆数据
  • 然后告述它什么学习方式是对的(目标函数),然后让它朝着这个方向去做

如何优化:

  • 每次优化一点点(求偏导,往梯度相反的方向走)
  • 一步一步的完成迭代(多次梯度下降后,偏导趋近于0)
  • 目标函数:$J(\theta_0,\theta_1) = \frac{1}{2m} \displaystyle \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2$
  • 寻求目标函数的最优解,可以看作一个寻找山谷最低点的问题
  • 下山的步骤(跟新参数)
    1. :找到当前最适合的方向
    2. :走一小步
    3. :按照方向与步伐去跟新参数

梯度下降的方法

  • 批量梯度下降(GD):$\theta_j^\prime=\theta_j+\frac{1}{m}\displaystyle\sum_{i=1}^m(y^i-h_\theta(x^i))x^i_j$
  • (容易得到最优解,但是由于每次考虑所有样本,速度很慢)
  • 随机梯度下降(SGD):$\theta_j^\prime=\theta_j+(y^i-h_\theta(x^i))x^i_j$
  • (每次找一个样本,迭代速度快,但不一定每次都朝着收敛方向)
  • 小批量梯度下降(MGD):$\theta_j:=\theta_j-\alpha\frac{1}{10}\displaystyle\sum_{k=i}^{i+9}(h_\theta(x^{(k)})-y^{(k)})x_j^{(k)}$
  • (每次更新选择一小部分数据来算,实用)

梯度下降参数更新

  • 每次梯度下降过后更新参数$\theta$ 的大小又叫学习率(步长)
  • 学习率会对结果产生巨大影响,一般小一些好
  • 学习率也是可以变动的,一开始可以设得大一些(一般是0.01),当接近最低值的时候,降低学习率
  • 批量处理数据:32,64,128都可以,很多时候还要考虑内存和效率的问题
  • 批量处理数据的个数越多,往往模型的稳定性越好,不过速度越慢

逻辑回归

  • 目的:分类,逻辑回归是经典的二分类算法
  • 机器学习算法选择:先逻辑回归再用复杂的,能简单还是用简单的
  • 逻辑回归的决策边界:可以是非线性的

Sigmoid函数

  • 公式:$$g(z)=\frac{1}{1+ e^{-z}}$$

  • 自变量取任意实数,值域[0,1]

  • 将任意的输入映射到了[0,1]区间,我们在线性回归中可以得到一个预测值,再将该值映射到Sigmoid函数中,这样就完成了由值到概率的转换,也就是分类任务

  • 预测函数:$h_\theta(x)=g(\theta^T\mathbf{x})=\frac{1}{1+e^{-\theta^Tx}}$

  • 分类任务:$\begin{aligned}
    & P(y=1\mid x ; \theta) = h_\theta(x)\
    & P(y=0 \mid x ; \theta) = 1-h_\theta(x)
    \end{aligned}$

  • 整合:$P(y\mid x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}$

  • 解释:对于二分类(0,1),整合后y取0只保留$(1-h_\theta(x))^{1-y}$; y取1只保留$(h_\theta(x))^y$

  • 似然函数:$L(\theta)=\displaystyle\prod_{i=1}^{m}P(y_i\mid x_i;\theta)=\displaystyle\prod_{i=1}^{m}(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y_i}$

  • 对数似然:$l(\theta)=\log L(\theta)=\displaystyle\sum_{i=1}^m(y_i\log h_\theta(x_i)+(1-y_i)\log(1-h_\theta(x_i)))$

  • 此时应用梯度上升求最大值,引入$J(\theta)=-\frac{1}{m}l(\theta)$ 转换为梯度下降任务

  • 求导过程:
    $\begin{aligned}
    l(\theta) &=\log L(\theta)=\displaystyle\sum_{i=1}^m(y_i\log h_\theta(x_i)+(1-y_i)\log(1-h_\theta(x_i)))\
    \frac{\delta}{\delta_{\theta_j}}J(\theta) &=-\frac{1}{m}\displaystyle\sum_{i=1}^m(y_i\frac{1}{h_\theta(x_i)}\frac{\delta}{\delta_{\theta_j}}h_\theta(x_i)-(1-y_i)\frac{1}{1-h_\theta(x_i)}\frac{\delta}{\delta_{\theta_j}}h_\theta(x_i))\
    &= -\frac{1}{m}\displaystyle\sum_{i=1}^m(y_i\frac{1}{g(\theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\theta^Tx_i)})\frac{\delta}{\delta_{\theta_j}}g(\theta^Tx_i)\
    &= -\frac{1}{m}\displaystyle\sum_{i=1}^m(y_i\frac{1}{g(\theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\theta^Tx_i)})g(\theta^Tx_i)(1-g(\theta^Tx_i))\frac{\delta}{\delta_{\theta_j}}\theta^Tx_i\
    &= -\frac{1}{m}\displaystyle\sum_{i=1}^m(y_i(1-g(\theta^Tx_i))-(1-y_i)g(\theta^Tx_i))x_{i}^j\
    &= -\frac{1}{m}\displaystyle\sum_{i=1}^m(y_i-g(\theta^Tx_i))x_{i}^j\
    &= \frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x_i)-y_i)x_{i}^j\
    \end{aligned}$

  • 参数更新:$\theta_j:=\theta_j-\alpha\frac{1}{m}\displaystyle\sum_{i=1}^m(h_\theta(x_i)-y_i)x_i^j$

  • 多分类的softmax:$h_\theta(x^{(i)})=\begin{bmatrix}
    P(y^{(i)}=1\mid x^{(i)};\theta)\
    P(y^{(i)}=2\mid x^{(i)};\theta)\
    \vdots\
    P(y^{(i)}=k\mid x^{(i)};\theta)\
    \end{bmatrix}=\frac{1}{\sum_{j=1}^k e^{\theta_{j^{x^{(i)}}}^T}}\begin{bmatrix}
    e^{\theta_{1^{x^{(i)}}}^T}\
    e^{\theta_{2^{x^{(i)}}}^T}\
    \vdots\
    e^{\theta_{k^{x^{(i)}}}^T}\
    \end{bmatrix}$

标签: 机器学习

召唤伊斯特瓦尔