zoukankan      html  css  js  c++  java
  • 机器学习

    机器学习 - 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_iphi_j(X) = w^TPhi(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}-alphafrac{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
  • 相关阅读:
    【Lintcode】112.Remove Duplicates from Sorted List
    【Lintcode】087.Remove Node in Binary Search Tree
    【Lintcode】011.Search Range in Binary Search Tree
    【Lintcode】095.Validate Binary Search Tree
    【Lintcode】069.Binary Tree Level Order Traversal
    【Lintcode】088.Lowest Common Ancestor
    【Lintcode】094.Binary Tree Maximum Path Sum
    【算法总结】二叉树
    库(静态库和动态库)
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/ChildishChange/p/9746265.html
Copyright © 2011-2022 走看看