Regression 常规步骤
- 寻找h函数(即预测函数)
- 构造J函数(损失函数)
- 想办法使得J函数最小并求得回归参数(θ)
线性回归(Linear Regression)
假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就是要预测的目标值。这一计算公式称为回归方程,得到这个方程的过程就称为回归。
线性回归就是假设这个方式是一个线性方程,即假设这个方程是一个多元一次方程。假设自变量为x1、x2,因变量为y,我们用h(x)来表示y。假设x与y是线性关系。他们满足公式
上述公式中的θ为参数,也称为权重,可以理解为x1和x2对h(x)的影响度。对这个公式稍作变化就是
公式中θ和x是向量,n是样本数。
损失函数(Loss Function)--依据训练数据求解θ的最优取值
损失函数利用最小二乘法
梯度下降(Gradient Descent)
求解使得J(θ)最小的θ值,最小均方算法(Least mean square,LMS算法)大概的思路是:我们首先随便给θ一个初始化的值,然后改变θ值让J(θ)的取值变小,不断重复改变θ使J(θ)变小的过程直至J(θ)约等于最小值。θ迭代公式:
公式中α称为步长(learning rate),它控制θ每次向J(θ)变小的方向迭代时的变化幅度。J(θ)对θ的偏导表示J(θ)变化最大的方向。由于求的是极小值,因此梯度方向是偏导数的反方向。求解一下这个偏导,过程如下:
那么θ的迭代公式就变为:
样本为多个时,可以使用:梯度下降(gradient descent)和正则方程(The normal equations)
- 批梯度下降(batch gradient descent)--每一步都是计算的全部训练集的数据
![](https://i-blog.csdnimg.cn/blog_migrate/2a09f890425bfc92d6f66bcc403dd4f0.png)
转化为处理多个样本就是如下表达:
![](https://i-blog.csdnimg.cn/blog_migrate/699e98fa4be0be90717df0b50897fe42.png)
注意,梯度下降可能得到局部最优,但在优化问题里我们已经证明线性回归只有一个最优点,因为损失函数J(θ)是一个二次的凸函数,不会产生局部最优的情况。(假设学习步长α不是特别大)
批梯度下降的算法执行过程如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/b8b5e8c49ab7c75f0aa821d92f5e1085.png)
- 随机梯度下降(Stochastic Gradient Descent, SGD)
随机梯度下降表达式如下:
![clip_image001 clip_image001](https://i-blog.csdnimg.cn/blog_migrate/15ab04bb7a63d8326291eb31516c6e42.png)
执行过程如下图:
批梯度下降和随机梯度下降在三维图上对比如下:
线性回归是回归问题中的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程。使用最小二乘法构建损失函数,用梯度下降来求解损失函数最小时的θ值。
参考自:http://www.cnblogs.com/BYRans/p/4700202.html#3771771
![](https://i-blog.csdnimg.cn/blog_migrate/a6f450ce285d22343e144a242a21804d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec3d8672b3017f8ce12f675afcfe23a2.png)
逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将最为假设函数来预测。g(z)可以将连续值映射到0到1之间。线性回归模型的表达式带入g(z),就得到逻辑回归的表达式:
![](https://i-blog.csdnimg.cn/blog_migrate/07247c5c6062525c216d1fb0adf11e99.png)
- 逻辑回归的软分类
![This is the rendered form of the equation. You can not edit this directly. Right click will give you the option to save the image, and in most browsers you can drag the image onto your desktop or another program.](https://i-blog.csdnimg.cn/blog_migrate/d0aafc1e39b9de34267f9823d08be5fe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7a037190b0d1df995c22ae934489db09.png)
- 梯度上升
![](https://i-blog.csdnimg.cn/blog_migrate/563f1d69cc961c0a07ea2b64882b2e17.png)
![](https://i-blog.csdnimg.cn/blog_migrate/905a8e61a68adf9087894e407a1a7692.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f2bff76f9ecc39c842d930733afac140.png)
第二步是根据g(z)求导的特性g'(z) = g(z)(1 - g(z)) 。
第三步就是普通的变换。
![](https://i-blog.csdnimg.cn/blog_migrate/b014076670106a76003f38204745201d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/df88e67dd5e55bccdd420e18fbf7547e.png)
- Logistic Regression的适用性
只有在feature和target是线性关系时,才能用Logistic Regression
逻辑回归不像朴素贝叶斯一样需要满足条件独立假设(因为它没有求后验概率)。但每个feature的贡献是独立计算的,即LR是不会自动帮你combine 不同的features产生新feature的。
- 逻辑回归的优缺点
1)可以适用于连续性和类别性自变量;
2)速度快,适合二分类问题 (预测结果是界于0和1之间的概率);
3)简单易于理解,直接看到各个特征的权重 ;
4)能容易地更新模型吸收新的数据 。
缺点:
对数据和场景的适应能力有局限性,不如决策树算法适应性那么强。
1)对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;
2)预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。