机器学习 - 2 - 线性回归

机器学习 - 2 - 线性回归

首先吐槽我们的老师上课上得真是太烂了

  • PPT里有很多对本章内容没有意义的公式,而且还不解释是在干什么。。
  • 没有约定好数学符号
  • 没有说明是行向量还是列向量,一开始用列向量计算,然后改成了行向量,也没有说明

回归

  1. 什么是回归

    • 定义:

      首先回归属于监督学习的一种,回归问题中,尝试预测连续的输出,与尝试预测离散的输出的分类问题恰恰相反。

    • 举个例子:

      • 预测房价
      • 预测身高
      • ...
  2. 回归模型

    • 素材:

      • 特征 \(x\)
      • 预测值 \(y\)
      • 训练集 \((x_i,y_i)\)
      • 学习算法
      • 回归函数 \(f\)
    • 线性回归时:

      \[f(x_1,\dots,x_m) = w_0 + \sum_{i = 1}^{m}w_ix_i \]

    • 矩阵化(增加 \(x_0 = 1\),表示截距项):

      \[f(X_{m×n}) = w^TX_{m×n} \]

      注:此时 \(w\) 是列向量;\(X\) 是一个矩阵,代表整个测试集,m 行,代表测试数据共有 m 个特征值,共 n 列,代表 n 组数据,其每一列都是一组测试

    • 一般化(当基函数不是多项式基函数时):

      \[y(X,w) = \sum_{i = 0}^{M-1}w_i\phi_j(X) = w^T\Phi(X) \]

  3. 问题本质

    • 拆分一下:

      • 定义目标函数
        • 使用训练集数据(真实数据)
        • 最小化预测值 \(f\) 与真实输出值 \(y\) 的差异
      • 确定模型中的参数 \(w^T\)
    • 目标函数(代价函数):

      \[J(w) = \frac{1}{2}\sum_{i=1}^{N}(f(X_i)-y_i)^2 \]

      注:\(X_i\) 是 训练集矩阵中的第 i 列,还是个列向量

      进一步求出使 \(J(w)\) 最小的 \(w\) 即可。

解回归

  1. 梯度下降法

    • 策略:

      • 随机赋 \(w\) 初值
      • 改变 \(w_i\) 的值,使 \(J(w)\) 越来越小
      • 沿梯度相反方向下降

      梯度为一个向量,表示某一函数在某一点的方向导数沿该方向时取得最大值,即函数在该点处沿着该方向变化最快,变化率最大。

    • 举个例子:

      在爬山时,沿与等高线垂直的方向爬山,路最陡

    • 怎么操作:

      \[w_j^t = w_j^{t-1}-\alpha\frac{\partial}{\partial w_j}J(w) \]

      \[\frac{\partial}{\partial w_j}J(w) = \sum_{i=1}^{N}(f(X_i)-y_i)\cdot X_{j,i} \]

      所有 \(w_i\) 同时更新,其中 \(\alpha\) 为学习率/更新步长

      注:\(X\)代表训练集,其每一列\(X_i\)都是一组训练数据;\(X_{j,i}\)表示第 i 组训练数据的第 j 个元素(有点绕弯,因为训练数据是竖着排的,但是横竖排本质是一样的)

    • 一些衍生:

      • 批处理梯度下降
        • 每次更新都利用所有数据
        • 大样本下,迭代速度很慢
      • 随机梯度下降
        • 每次只用一个样本
        • 迭代速度快,大样本下较为有效,又被称为在线学习
    • 一点补充:

  2. 标准方程组

    • 矩阵化:

      \[J(w) = \frac{1}{2}\sum_{i=1}^{N}(f(X_i)-y_i)^2 = \frac{1}{2}(w^TX-y^T)(w^TX-y^T)^T \]

      \[= \frac{1}{2}(w^TXX^Tw-w^TXy-y^TX^Tw+y^Ty) \]

      \[= \frac{1}{2}(w^TX-2y^T)X^Tw \]

      注:\(y\)是个列向量,另外 \(w^TXy\)\(y^TX^Tw\) 因为是一个数(列向量×行向量),所以值一样

    • 求导,令其为0:

      \[\frac{\partial}{\partial w}J(w) =\frac{1}{2}(w^TX-2y^T)X^Tw \]

      \[= XX^Tw-y^TX^T = 0 \]

      解得:

      \[w = (XX^T)^{-1}y^TX^T \]

    • 一点补充:

  3. 孰优孰劣

    • 比较:

      梯度下降 标准方程
      需要选择学习率 不需要
      迭代很多次 一次
      \(O(kn^2)\) \(O(n^3)\)
      n很大时表现良好 n很大时很慢
      数据需要归一化 不需要
    • 结论:

      样本量较小时选用标准方程组求解,样本量较大时选用梯度下降法求解

补充链接

  1. matrix vector derivatives for machine learning

posted on 2018-10-05 23:04  ChildishChange  阅读(616)  评论(2编辑  收藏  举报

导航