线性回归,逻辑回归,神经网络,SVM的总结

目录

线性回归,逻辑回归,神经网络,SVM的总结

  • 详细的学习笔记.
  • markdown的公式编辑手册.
  • 回归的含义: 回归就是指根据之前的数据预测一个准确的输出值.
  • 分类的含义: 分类就是预测离散的输出值, 比如男生为1, 女生为0(0/1离散输出问题).
  • 机器学习中往往会有一个假设(hypothesis), 本质上来讲$h$代表学习算法的解决方案或函数.
    • $h$可以理解为是我们预先选定的规则或者函数的形式,我们需要不停地得到对应的参数.
    • $h$是一个从$x$到$y$的函数映射.

单变量的线性回归(Linear Regression with One Variable)

  • 单变量的表达方式(hypothesis function):

    $$ h_{\theta(x)};=;\theta_{0}+\theta_{1}x $$

    • 因为只含有一个特征(即输入变量), 因此这类问题叫作单变量线性回归问题.
  • 模型所预测的值与训练集中实际值之间的差距就是建模误差(modeling error).
  • 目标函数(代价函数Cost Function): 目标是选择出可以使得建模误差的平方和能够最小的模型参数.
    • 代价函数的数学公式的表达为:
      $$ J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)}))^{2} $$
    • 这个公式的$\frac{1}{2m}$是为了求偏导好计算; 大致的意思就是求每个样本的均方误差.
    • Goal: $\min \limits_{\theta_{0},\theta_{1}}J(\theta_{0},\theta_{1})$, 让代价函数最小.
    • 需要一个有效的算法, 能够自动地找出使代价函数$J$取最小值的参数$\theta_{0}$和$\theta_{1}$, 这个算法就是梯度下降.
梯度下降(Gredient Descent)
  • 梯度下降是一个用来求函数最小的优化算法, 在线性回归的算法中, 用它来求代价函数$J(\theta_{0},\theta_{1})$的最小值.
  • 梯度下降背后的思想: 开始随机选择一个参数组合$(\theta_{0},\theta_{1},\ldots,\theta_{n})$, 计算出代价函数对应的函数值, 然后寻找一个能让代价函数下降最多的参数组合; 持续这么做直到找到一个局部最小值(local minimum),因为没有尝试所有的参数组合, 所以不能确定得到的局部最小值是否为全局最小值(global minimum), 选择不同的初始参数组合可能会找到不同的局部最小值.
  • 批量梯度下降(batch gradient descent)算法的公式:
    $$ \theta_{j}:=\theta_{j} - \alpha\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})\qquad(for,j = 0,,and,;j = 1) $$
    • 其中$\alpha$是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
    • 梯度下降的过程为:
      • 根据代价函数求出其偏导函数, 因为所谓的梯度就是一阶偏导, 也就是沿参数该方向的变化率.
      • 算出梯度的大小值(把上一次的$\theta_{0}$和$\theta_{1}$代入偏导函数求解).
      • 迭代算出可能更好的参数值(就是用原来的$\theta$值减去偏导值乘以学习率的积).
      • 不断更新$\theta_{0}$和$\theta_{1}$
    • $\alpha$太大或太小会出现什么情况:
      • 如果$\alpha$太小, 即学习速率太小, 需要迭代很多次才能达到局部最优.
      • 如果$\alpha$太大, 梯度下降可能会越过最低点, 甚至无法收敛, 出现震荡或发散现象.
      • 即使学习率$\alpha$保持不变时, 梯度下降也可以收敛到局部最优, 因为到最优点时偏导为零呀.
    • 批量梯度下降是指在梯度下降的每一步中, 都用到了所有的训练样本, 在梯度下降中, 在计算微分求导时, 需要对所有$m$个训练样本求和.
    • 有的梯度下降法不考虑整个训练集, 而是每次关注训练集中的一些小的子集.
  • 梯度下降算法, 可以用来最小化任何代价函数$J$, 不只是线性回归中的代价函数, 只要是凸函数应该都可以使用梯度下降算法来求解局部最优.
  • 在数据量较大的情况下, 梯度下降法比正规方程(normal equations)要更适用一些.

多变量的线性回归(Linear Regression with Multiple Variables)

  • 第$i$个训练实例, 就是特征矩阵中的第$i$行, 是一个向量(vector).
  • 多变量的hypothesis function(假设函数)的数学表达为:$$h_{\theta}(x) = \theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\ldots+\theta_{n}x_{n}$$
    • 此时模型有$n+1$维的特征向量, 特征矩阵的维度$m*(n+1)$.
    • hypothesis function的向量的表达式为: $h_{\theta}(x) = \theta^{T}X$.
  • 多变量的代价函数(cost function)为所有建模误差的平方和, 数学表达为:
    $$J(\theta_{0},\theta_{1},\ldots,\theta_{n})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}-y^{(i)}))^{2}$$
    • 其中$h_{\theta}(x) = \theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\ldots+\theta_{n}x_{n}$.
  • 目标函数还是要找出使得代价函数最小的一系列参数.
  • 多变量线性回归的批量梯度下降算法为:
    $$Repeat{ \theta_{j}:=\theta_{j}-\alpha\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1},\ldots,\theta_{n})
    }$$
    • 求导计算为:
      $$Repeat{ \theta_{j}:=\theta_{j}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})*x_{j}^{(i)}
      }$$
    • python的代码实现为:
    def computeCost(X, Y, theta):
        inner = np.power(((X * theta.T) - y), 2) # 內积
        return np.sum(inner) / (2 * len(X)) # len(X)为行数

猜你喜欢

转载自www.cnblogs.com/longjiang-uestc/p/10127393.html
今日推荐