逻辑回归梯度下降法详解

本文深入探讨逻辑回归算法,特别是梯度下降法在求解逻辑回归最优参数中的应用。从二元逻辑回归的推导开始,解释了为何选择sigmoid函数,并通过最大似然估计构建损失函数。接着,介绍了Spark中逻辑回归的源码实现,包括随机梯度下降和L1/L2正则化,最后讨论了过拟合问题及其解决方案。
摘要由CSDN通过智能技术生成

引言

逻辑回归常用于预测疾病发生的概率,例如因变量是是否恶性肿瘤,自变量是肿瘤的大小、位置、硬度、患者性别、年龄、职业等等(很多文章里举了这个例子,但现代医学发达,可以通过病理检查,即获取标本放到显微镜下观察是否恶变来判断);广告界中也常用于预测点击率或者转化率(cvr/ctr),例如因变量是是否点击,自变量是物料的长、宽、广告的位置、类型、用户的性别、爱好等等。
本章主要介绍逻辑回归算法推导、梯度下降法求最优值的推导及spark的源码实现。

常规方法

一般回归问题的步骤是:
1. 寻找预测函数(h函数,hypothesis)
2. 构造损失函数(J函数)
3. 使损失函数最小,获得回归系数θ

而第三步中常见的算法有:
1. 梯度下降
2. 牛顿迭代算法
3. 拟牛顿迭代算法(BFGS算法和L-BFGS算法)
其中随机梯度下降和L-BFGS在spark mllib中已经实现,梯度下降是最简单和容易理解的。

推导

二元逻辑回归

  1. 构造预测函数

    hθ(x)=g(θTx)=11+eθTx

    其中:
    θTx=i=1nθixi=θ0+θ1x1+θ2x2+...+θnxnθ=θ0θ1...θn,x=x0x1...xn

    为何LR模型偏偏选择sigmoid 函数呢?逻辑回归不是回归问题,而是二分类问题,因变量不是0就是1,那么我们很自然的认为概率函数服从伯努利分布,而伯努利分布的指数形式就是个sigmoid 函数。
    函数 hθ(x) 表示结果取1的概率,那么对于分类1和0的概率分别为:
    P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1hθ(x)

    概率一般式为:
    P(y|x;θ)=(hθ(x))y((1hθ(x)))1y

  2. 最大似然估计的思想
    当从模型总体随机抽取m组样本观测值后,我们的目标是寻求最合理的参数估计 θ 使得从模型中抽取该m组样本观测值的概率最大。最大似然估计就是解决此类问题的方法。求最大似然函数的步骤是:

    1. 写出似然函数
    2. 对似然函数取对数
    3. 对对数似然函数的参数求偏导并令其为0,得到方程组
    4. 求方程组的参数

    为什么第三步要取对数呢,因为取对数后,乘法就变成加法了,且单调性一致,不会改变极值的位置,后边就更好的求偏导。

  3. 构造损失函数
    线性回归中的损失函数是:
    J(θ)=12mi=1m(yihθ(xi))2

    线性回归损失函数有很明显的实际意义,就是平方损失。而逻辑回归却不是,它的预测函数 hθ(x) 明显是非线性的,如果类比的使用线性回归的损失函数于逻辑回归,那 J(θ) 很有可能就是非凸函数,即存在很多局部最优解,但不一定是全局最优解。我们希望构造一个凸函数,也就是一个碗型函数做为逻辑回归的损失函数。
    按照求最大似然函数的方法,逻辑回归似然函数:
    L(θ)=i=1mP(yi|xi;θ)=i=1m(hθ(xi))yi((1hθ(xi)))1yi

    其中m表示样本数量,取对数:
    l(θ)=logL(θ)=i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))

    我们的目标是求最大 l(θ) 时的 θ ,如上函数是一个上凸函数,可以使用梯度上升来求得最大似然函数值(最大值)。或者上式乘以-1,变成下凸函数,就可以使用梯度下降来求得最小负似然函数值(最小值):
    J(θ)=1ml(θ)

    同样是取极小值,思想与损失函数一致,即我们把如上的 J(θ) 作为逻辑回归的损失函数。Andrew Ng的课程中,上式乘了一个系数1/m,我怀疑就是为了和线性回归的损失函数保持一致吧。
  4. 求最小值时的参数
    我们求最大似然函数参数的第三步时,令对参数 θ 偏导=0,然后求解方程组。考虑到参数数量的不确定,即参数数量很大,此时直接求解方程组的解变的很困难,或者根本就求不出精确的参数。于是,我们用随机梯度下降法,求解方程组的值。
    当然也可以使用牛顿法、拟牛顿法。梯度下降法是最容易理解和推导的,如下是推导过程:
    梯度下降 θ 的更新过程,走梯度方向的反方向:
    θj:=θjαδδθjJ(θ)

    其中:
    δδθjJ(θ)=1mi=1m(yi1hθ(xi)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值