Skip to content

线性回归和逻辑回归

📅 发表于 2017/08/21
🔄 更新于 2017/08/21
👁️ 次访问
📝 0 字
0 分钟
机器学习
#机器学习
#线性回归
#逻辑回归
#梯度下降

吴恩达线性回归、逻辑回归、梯度下降笔记

线性回归

m个样本(x(1),y(1)),(x(2),y(2)),,(x(m),y(m)),假设函数有2个参数θ0,θ1,形式如下:

hθ(x)=θ0+θ1x

代价函数

代价函数

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2

目标是要找到合适的参数,去最小化代价函数minJ(θ0,θ1)

假设θ0=0,去描绘出J(θ1)θ1的关系,如下面右图所示。

假设有3个样本(1,1),(2,2),(3,3),图中选取了3个θ1=1,0.5,0,其中J(θ1)θ1=1时最小。

那么回到最初的两个参数hθ(x)=θ0+θ1x,如何去找minJ(θ0,θ1)呢?这里绘制一个等高图去表示代价函数,如下面右图所示,其中中间点是代价最小的。

梯度下降

基础说明

上文已经定义了代价函数J(θ0,θ1),这里要使用梯度下降算法去最小化J(θ0,θ1),自动寻找出最合适的θ。梯度下降算法应用很广泛,很重要。大体步骤如下:

  • 设置初始值θ0,θ1
  • 不停改变θ0,θ1去减少J(θ0,θ1)

当然选择不同的初始值,可能会得到不同的结果,得到局部最优解。

对于所有的参数θj进行同步更新,式子如下

θj=θjαθjJ(θ0,θ1)×

上面公式中α学习率(learning rate),是指一次迈多大的步子,一次更新的幅度大小。

例如上面的两个参数,对于一次同步更新(梯度下降)

t0=θ0αθ0J(θ0,θ1),t1=θ1αθ1J(θ0,θ1)θ0=t0,θ1=t1

也有异步更新(一般指别的算法)

t0=θ0αθ0J(θ0,θ1),θ0=t0t1=θ1αθ1J(θ0,θ1),θ1=t1

偏导和学习率

这里先看一个参数的例子,即J(θ1)θ1=θ1αddxJ(θ1)。当θ从左右靠近中间值,导数值(偏导/斜率)分别是负、正,所以从左右两端都会靠近中间值。

当学习率α太小,梯度下降会很缓慢α太大,可能会错过最低点,导致无法收敛。

当已经处于局部最优的时候,导数为0,并不会改变参数的值,如下图

当逐渐靠近局部最优的时候,梯度下降会自动采取小步子到达局部最优点。是因为越接近,导数会越来越小。

在线性回归上使用梯度下降

代价函数

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2=12mi=1m(θ0+θ1x(i)y(i))2

分别对θ0θ1求偏导有

θ0J(θ0,θ1)=1mi=1m(hθ(x(i))y(i)),θ1J(θ0,θ1)=1mi=1m(hθ(x(i))y(i))x(i)

那么使用梯度下降对θ0θ1进行更新,如下

θ0=θ0α1mi=1m(hθ(x(i))y(i)),θ1=θ1α1mi=1m(hθ(x(i))y(i))x(i)

当前代价函数实际上是一个凸函数,如下图所示。它只有全局最优,没有局部最优。

通过不断地改变参数减小代价函数J(θ0,θ1),逼近最优解,最终会得到一组比较好的参数,正好拟合了我们的训练数据,就可以进行新的值预测。

梯度下降技巧

特征缩放

不同的特征的单位的数值变化范围不一样,比如x1(0,2000),x2(1,5),这样会导致代价函数J(θ)特别的偏,椭圆。这样来进行梯度下降会特别的慢,会来回震荡

所以特征缩放把所有的特征缩放到相同的规模上。得到的J(θ)就会比较圆,梯度下降能很快地找到一条通往全局最小的捷径。

特征缩放的数据规模不能太小或者太大,如下面可以的规模是

[1,1],[0,3],[2,0.5],[3,3],[13,13][100,100],[0.0001,0.0001]

有一些常见的缩放方法

  • xi=xiμmaxmin, xi=xiμs,其中μ是均值,s是标准差
  • xi=ximinmaxmin
  • xi=ximax

学习率的选择

当梯度下降正确运行的时候,每一次迭代J(θ)都会减少,但是减少到什么时候合适呢?当然最好的办法就是画图去观察,当然也可以设定减小的最小值来判断。下图中, 迭代次数到达400的时候就已经收敛。不同的算法,收敛次数不一样。

当图像呈现如下的形状,就需要使用更小的学习率。理论上讲,只要使用足够小的学习率,J(θ)每次都会减少。但是太小的话,梯度下降会太慢,难以收敛。

学习率总结

  • 学习率太小,慢收敛
  • 学习率太大,J(θ)可能不会每次迭代都减小,甚至不会收敛
  • 这样去选择学习率调试: ,0.001,0.003,0.01,0.03,0.1,0.3,1,

多变量线性回归

数据有n个特征,如x(i)=(1,x1,x2,,xn),其中x0=1。则假设函数有n+1个参数,形式如下

hθ(x)=θTx=θ0+θ1x1+θ2x2++θnxn

代价函数

J(θ)=12mi=1m(hθ(x(i))y(i))2

梯度下降,更新每个参数θj

θj=θjαJ(θ)θj=θjα1mi=1m(hθ(x(i))y(i))xj(i)

多项式回归

有时候,线性回归并不能很好地拟合数据,所以我们需要曲线来适应我们的数据。比如一个二次方模型

hθ(x)=θ0+θ1x1+θ2x22

当然可以用x2=x22,x3=x33来转化为多变量线性回归。如果使用多项式回归,那么在梯度下降之前,就必须要使用特征缩放。

正规方程

对于一些线性回归问题,使用正规方程方法求解参数θ,比用梯度下降更好些。代价函数如下

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2

正规方程的思想是函数J(θ)对每个θj求偏导令其等于0,就能得到所有的参数。即Jθj=0

那么设Xm×(n+1)为数据矩阵(其中包括x0=1),y为标签向量。则通过如下方程可以求得θ

θ=(XTX)1XTy

正规方程和梯度下降的比较

梯度下降正规方程
需要特征缩放不需要特征缩放
需要选择学习率α不虚选择学习率
需要多次迭代计算一次运算出结果
特征数量n很大时,依然适用n太大,求矩阵逆运算代价太大,复杂度为O(n3)n10000可以接受
适用于各种模型只适用于线性模型,不适合逻辑回归和其他模型

逻辑回归

线性回归有2个不好的问题:直线难以拟合很多数据;数据标签一般是0,1,但是hθ(x)却可能远大于1或者远小于0。如下图。

基本模型

逻辑回归是一种分类算法,使得输出预测值永远在0和1之间,是使用最广泛的分类算法。模型如下

hθ(x)=g(θTx),g(z)=11+ez

g(z)的图像如下,也称作Sigmoid函数或者Logistic函数,是S形函数。

将上面的公式整理后得到逻辑回归的模型

hθ(x)=11+eθTx,0hθ(x)1

模型的意义是给出分类为1的概率,即hθ(x)=P(y=1x;θ)。例如hθ(x)=0.7,则分类为1的概率是0.7,分类为0的概率是10.7=0.3

x,y={1,hθ(x)0.5,θTx00,hθ(x)<0.5,θTx<0

逻辑回归就是要学到合适的θ,使得正例的特征远大于0负例的特征远小于0

决策边界

线性边界

假设我们有一个模型hθ(x)=g(θ0+θ1x1+θ2x2),已经确定参数θ=(3,1,1),即模型hθ(x)=g(3+x1+x2),数据和模型如下图所示

由上可知,分类结果如下

y={1,x1+x230,x1+x2<3

那么直线x1+x2=3就称作模型的决策边界,将预测为1的区域和预测为0的区域分隔开来。gg

非线性边界

先看下面的数据

使用这样的模型去拟合数据

hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22),θ=(1,0,0,1,1),hθ(x)=g(1+x12+x22)

对于更复杂的情况,可以用更复杂的模型去拟合,如x1x2,x1x22

代价函数和梯度下降

我们知道线性回归中的代价函数是J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2,但是由于逻辑回归的模型是hθ(x)=11+eθTx,所以代价函数关于θ的图像就是一个非凸函数,容易达到局部收敛,如下图左边所示。而右边,则是一个凸函数,有全局最小值。

代价函数

逻辑回归的代价函数

Cost(hθ(x),y)={log(hθ(x)),y=1log(1hθ(x)),y=0

当实际上y=1时,若预测为0,则代价会无穷大。当实际上y=0时,若预测为1,则代价会无穷大。

整理代价函数如下

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

得到所有的J(θ)

J(θ)=1mi=1m(y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i))))

梯度下降

逻辑回归的假设函数估计y=1的概率 hθ(x)=11+eθTx

代价函数J(θ),求参数θminθJ(θ)

对每个参数θj,依次更新参数

θj=θjα1mi=1m(hθ(x(i))y(i))xj(i)

逻辑回归虽然梯度下降的式子和线性回归看起来一样,但是实际上hθ(x)J(θ)都不一样,所以是不一样的。

总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025