浅谈线性回归

浅谈LR

背景

机器学习

  • 套路:

    • 学习过程:Input -> Model
    • 新数据,应用模型,得到结果。
    • 例子:分类
      • 输入:feature,label
      • 学习:找到feature和label之间的关系,即模型。
      • 预测:当有feature无label的数据输入时,就可以计算出label。
  • 监督学习supervised和无监督学习unsupervised

    • 分类依据:输入数据是否有标签
    • 监督学习:输入数据带标签,我们教计算机如何去学习。例子:分类。
    • 无监督学习:输入数据不带标签,计算机自己学习。一个聚类算法通常只需要知道如何计算相似度就可以。例子:聚类。

回归和分类:

  • 分类:预测的变量是离散型的,如决策树,支持向量机等。逻辑回归:是一个分类方法,原始输出是每个特征向量出现的概率,通过设置阈值,得到分类结果。之所以叫回归,是有一些历史原因。
  • 回归:预测的变量是连续性的,如线性回归等。

线性回归

问题引入

  • 房屋销售数据
    |面积(平)|销售总价(万元)|
    |---|---|
    |123|250|
    |150|320|
    |87|160|
    |102|220|
    |...|...|
浅谈线性回归_第1张图片
线性回归房价销售记录.png
浅谈线性回归_第2张图片
线性回归房价拟合.png

最小二乘法:

  • 选择最佳拟合曲线的标准:
    • 使总的拟合误差最小
  • 最小二乘法:
    • 残差的平方和最小
    • 直接对残差和求导找出全局最小,是非迭代法。
  • 示例
    • 某次实验得到四个点数据(x,y):(1,6),(2,5),(3,7),(4,10),希望找出一条和四个点最匹配的直线$$$y = \beta_1+\beta_2x$$$,即找出某种“最佳情况”下能够大致符合如下超线性方程组的$$$\beta_1,\beta_2$$$:
    • $\beta_1+1\beta_2 = 6$
    • $\beta_1+2\beta_2 = 5$
    • $\beta_1+3\beta_2 = 7$
    • $\beta_1+4\beta_2 = 10$
    • 最小二乘法是尽量使得等号两边的方差最小:
    • $S(\beta_1,\beta_2)=[6 - (\beta_1+1\beta_2)]^2+[5 - (\beta_1+2\beta_2)]^2+[7- (\beta_1+3\beta_2)]^2+[10 - (\beta_1+4\beta_2)]^2$
    • 通过对$S(\beta_1,\beta_2)$分别求$\beta_1,\beta_2$的偏导,然后使他们等于0得到。
    • $\frac{\delta }{\delta _{\beta _{1}}}S = 0 = 8\beta_1+20\beta_2 - 56$
    • $\frac{\delta }{\delta _{\beta _{2}}}S = 0 = 20\beta_1+60\beta_2 - 154$
    • 得到
    • $\beta_1 = 3.5$
    • $\beta_2 = 1.4$
    • 即目标直线:$y = 3.5+1.4x$是最佳的。

梯度下降

问题

  • 对于n个特征$$$x_1,x_2...,x_n$$$,给出一个估计函数
    $h_\theta(x) = \theta^TX$
  • 损失函数:
    • 评价估计函数的好坏:对$$$x(i)$$$的估计值与真实值$$$y(i)$$$差的平方和作为损失函数。
    • $$$J(\theta) = \frac{1}{2}\sum_{i = 1}^m (h_\theta(x^{(i)} - y{(i)})2$$$
    • $min \theta J\theta$

推导流程

  • 随意选初始$$$\theta$$$,比如$$$\theta = 0 $$$,然后不断的以梯度的方向修正$$$\theta$$$,最终使$$$J(\theta)$$$收敛到最小。可能找到的是局部最优。
  • 每次修正的公式:$$$\theta_j := \theta_j - \alpha\frac{\delta}{\delta{\theta_j}}J(\theta)$$$
  • 假设训练集只有一个样本点,那么梯度推导:
    $\frac{\delta}{\delta{\theta_j}}J(\theta) = \frac{\delta}{\delta{\theta_j}}\frac{1}{2}(h_\theta(x) - y)^2 = 2 \cdot \frac{1}{2}(h_\theta(x) - y)\cdot\frac{\delta}{\delta{\theta_j}}(h_\theta(x) - y)
    = (h_\theta(x) - y)\cdot\frac{\delta}{\delta{\theta_j}}(\sum_{i = 0}^n\theta_ix_i - y)
    = (h_\theta(x) - y)x_j$
  • 实际训练集会有m个样本点,所以最终的公式为:
    Repeat until covergence {
    $\theta_j :=\theta_j + \alpha\sum_{i = 1}m(y{(i)}- h_\theta(x{(i)}))x_j{(i)} $
    }
  • 上述是批梯度下降(batch gradient descent)
    • 每次迭代对于每个参数都需要进行梯度下降,直到$$$J(\theta)$$$收敛到最小值。
    • 每次遍历所有的样本点,当样本点很大时,基本就没法算了。
  • 随机梯度下降(stochastic gradient descent)
    • 每次只考虑一个样本点,而不是所有的样本点。
    • 公式:
    • Loop
      { for i = 1 to m ,$$${
      \theta_j :=\theta_j + \alpha(y^{(i)}- h_\theta(x{(i)}))x_j{(i)}
      }$$$ , for every j}

参考:

  • 回归算法原理
  • 梯度下降推导

你可能感兴趣的:(浅谈线性回归)