浅谈LR
背景
机器学习
-
套路:
- 学习过程:Input -> Model
- 新数据,应用模型,得到结果。
- 例子:分类
- 输入:feature,label
- 学习:找到feature和label之间的关系,即模型。
- 预测:当有feature无label的数据输入时,就可以计算出label。
-
监督学习supervised和无监督学习unsupervised
- 分类依据:输入数据是否有标签
- 监督学习:输入数据带标签,我们教计算机如何去学习。例子:分类。
- 无监督学习:输入数据不带标签,计算机自己学习。一个聚类算法通常只需要知道如何计算相似度就可以。例子:聚类。
回归和分类:
- 分类:预测的变量是离散型的,如决策树,支持向量机等。逻辑回归:是一个分类方法,原始输出是每个特征向量出现的概率,通过设置阈值,得到分类结果。之所以叫回归,是有一些历史原因。
- 回归:预测的变量是连续性的,如线性回归等。
线性回归
问题引入
- 房屋销售数据
|面积(平)|销售总价(万元)|
|---|---|
|123|250|
|150|320|
|87|160|
|102|220|
|...|...|
最小二乘法:
- 选择最佳拟合曲线的标准:
- 使总的拟合误差最小
- 最小二乘法:
- 残差的平方和最小
- 直接对残差和求导找出全局最小,是非迭代法。
- 示例
- 某次实验得到四个点数据(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}