逻辑回归已经在各大银行和公司都实际运用于业务,已经有很多前辈写过逻辑回归。本文将从我实际应用的角度阐述逻辑回归原理,致力于让逻辑回归变得清晰、易懂。逻辑回归又叫对数几率回归,是一种广义的线性回归分析模型。虽然名字里有回归,但其实是分类模型,常用于二分类。
  
  这篇文章是逻辑回归三部曲中的第二部,介绍逻辑回归的原理。如果想更深刻地探索逻辑回归的数学推导,可以去看逻辑回归的由来一文,数学基础好的可以自己跟着文章推导一遍。
  

文章目录

  • 一、什么是逻辑回归?
    • 1. 线性回归函数
    • 2. 逻辑函数(Sigmoid函数)
      • 2.1 逻辑函数的数学表达式
      • 2.2 逻辑函数的图像
      • 2.3 逻辑函数的导函数
    • 3. 逻辑回归函数
  • 二、如何求解逻辑回归中的参数?
    • 1. 极大似然函数
    • 2. 构造损失函数
    • 3. 用梯度下降法求解参数

  

一、什么是逻辑回归?

  
  由于逻辑回归原理用逻辑函数线性回归的结果(-∞,∞)映射到(0,1),故先介绍线性回归函数和逻辑函数,在本节的第三部分介绍逻辑回归函数。
  

1. 线性回归函数

  
  线性回归函数的数学表达式:

  其中xi是自变量,y是因变量,y的值域为(-∞,∞),θ0是常数项,θi(i=1,2,…,n)是待求系数,不同的权重θi反映了自变量对因变量不同的贡献程度。我们初中学过的一元一次方程:y=a+bx,这种只包括一个自变量和一个因变量的回归分析称为一元线性回归分析。初中学过的二元一次方程:y =a+b1x1+b2x2,三元一次方程:y = a+b1x1+b2x2+b3x3,这种回归分析中包括两个或两个以上自变量的回归分析,称为多元线性回归分析。不管是一元线性回归分析还是多元线性回归分析,都是线性回归分析。
  
  

2. 逻辑函数(Sigmoid函数)

  

2.1 逻辑函数的数学表达式

  

2.2 逻辑函数的图像

图1 sigmod函数大致图像

  从图1可以看出,当z趋于-∞,g(z)趋于0,当z趋于∞,g(z)趋于1,且函数的值阈为(0,1)。原理是当z趋于-∞,趋于∞,g(z)趋于0,当z趋于∞,趋于0,g(z)趋于1。同时可以发现当z趋于5时,g(z)的值已经到0.99附近,z越大,g(z)越趋于1。想一想我们平时碰到的概率,我们可能认为明天下雨的概率为0.3,天晴的概率为0.7。抛一枚硬币正面的概率为0.5,反面的概率也为0.5。概率也是介于0到1之间的一些数,很自然我们可以把sigmod函数的值域和概率联系起来。

  

2.3 逻辑函数的导函数

  
  逻辑函数的表达式为:

  导函数为:

  可做如下转换:

  
  从上面的推导可以看出逻辑函数的导函数可以转化成本身的一个表达式,这在后面用梯度下降法求解参数时会用到,可以先有个印象。从本节对逻辑函数的介绍知,逻辑函数是一个连续且任意阶可导的函数,值域为(0,1)。

  

3. 逻辑回归函数

  
  在逻辑回归的由来一文中详细推导了得出逻辑回归函数的步骤,也得知逻辑回归的因变量g(y)就是伯努利分布中样本为1的概率。前文中也提到过逻辑回归的原理是用逻辑函数把线性回归的结果从(-∞,∞)映射到(0,1)。我们用公式描述上面这句话:

  
  把线性回归函数的结果y,放到sigmod函数中去,就构造了逻辑回归函数。由y的值域和sigmod函数的值域知,在逻辑回归函数中用sigmod函数把线性回归的结果(-∞,∞)映射到(0,1),得到的这个结果类似一个概率值。我们转换一下逻辑回归函数,过程如下:

  上式中,现在把逻辑回归的结果g(y)看成某个事件发生的概率,那么这个事件不发生的概率就是1-g(y),两者的比值称为几率(odds)。令g(y)=p,可以得到如下公式:
  

  即线性回归的结果等于对数几率。如果我们把车贷中违约(不按期还款产生坏账)客户的样本标签定义为1,正常(按期还款)客户的样本标签定义为0。可以进一步把逻辑函数的值定义为客户违约的后验概率。

  如果历史上我们积累了大量的违约客户和正常客户的样本数据,比如违约客户和正常客户的年龄、工资、房贷、在第三方平台借款数目等等众多标签。这些标签就是逻辑回归函数中的xi,我们可以用这些样本数据训练逻辑回归模型,并求解得到变量x的参数(系数)θ。标签数据年龄、工资等是已有信息,如果参数(系数)θ也已经求出,把标签数据和参数代入逻辑回归模型,就可以预测任一客户违约的概率。那如何求解逻辑回归模型中的参数?在第二章中做简要说明,在Python中已有现成的封装函数,直接调用即可。
  
  

二、如何求解逻辑回归中的参数?

  

1. 极大似然函数

  
  先来看一个小例子:如果小华这次考试考了90分以上,妈妈99%会奖励小华一个手机,如果没有考到90分以上,妈妈99%不会奖励小华手机。现在小华没有得到手机,问小华这次有没有考到90分。可能我们的第一反应是小华大概率没有考到90分以上。这种利用已知样本结果,反推最有可能导致这样结果的参数值,就是极大似然估计。
  
  结合逻辑回归函数,如果我们已经积累了大量的违约客户和正常客户的样本数据,利用极大似然函数由果溯因,估计出使得目前结果的可能性最大参数(系数)θ,有了参数我们就可以求任何一个客户违约的概率了。我们上文提到过客户违约的后验概率:
  

  相应的可以得到客户不违约的概率:
  

  如果令

  违约的后验概率可以写成:


  不违约的后验概率可以写成:
  

  
  对于某一个客户,我们采集到了样本数据(x,y)。对于这个样本,他的标签是y的概率可以定义成:
  
  
  其中y∈{0,1}。当y=0时,上式为不违约的后验概率,当y=1时,上式为违约的后验概率。现在我们有m个客户的观测样本

  将每一个样本发生的概率相乘,就是这个合成在一起得到的合事件发生的总概率(利用概率中的乘法公式),即为似然函数,可以写成:
  

  其中θ为待求参数。注: 我们总是希望出现目前结果的可能性最大,所以想要得到极大化似然函数对应的参数θ。为便于求解,我们引入不改变函数单调性的对数函数ln,把连乘变成加法,得到对数似然函数:
  

  至此,可以用梯度上升法求解对数似然函数,求出使得目前结果的可能性最大的参数θ。也可以由对数似然函数构造损失函数,用梯度下降法求出使得损失最小对应的参数θ,接下来看下逻辑回归中的损失函数。:使用对数似然函数,不仅仅把连乘变成加法,便于求解,而且对数似然函对应的损失函数是关于未知参数的高阶连续可导的凸函数,便于求其全局最优解。
  

2. 构造损失函数

  
  在机器学习中有损失函数的概念,我们知道损失函数一般定义为预测值和真实值的差,比如我们预测小华在这次考试中能考98分,成绩出来了小华实际考了97分,小华的成绩预测值和真实值差为1,这个1通俗理解就是损失函数的值。
  
  从上面的案例知,如果损失函数越小,说明模型预测越准。所以在函数比较复杂没有确定解(解析解)或很难求出确定解的情况下,一般求的是数值解(近似解)。一般模型求数值解可以求出使得损失函数最小对应的参数θ。结合逻辑回归中的极大似然函数,如果取整个数据集上的平均对数似然损失,我们可以得到:
  

  其中J(θ)为损失函数,由对数似然函数前面添加负号取平均得到。即在逻辑回归模型中,最大化似然函数和最小化损失函数实际上是等价的(求最大化对数似然函数对应的参数θ和求最小化平均对数似然损失对应的参数θ是一致的),即:
  
  
  那如何求得损失函数最小对应的参数呢?可以用下节讲到的方法:梯度下降法。
  

3. 用梯度下降法求解参数

  
  先以一个人下山为例讲解梯度下降法的步骤:
  
  step1:明确自己现在所处的位置;
  
  step2:找到现在所处位置下降最快的方向;
  
  step3: 沿着第二步找到的方向走一个步长,到达新的位置,且新位置低于刚才的位置;
  
  step4:判断是否下山,如果还没有到最低点继续步骤一,如果已经到最低点,则停止。

  从上面的分析知,用梯度下降法求解参数最重要的是找到下降最快的方向和确定要走的步长

  那么什么是函数下降最快的方向?
  
  如果学过一元函数的导数,应该知道导数的几何意义是某点切线的斜率。除此之外导数还可以表示函数在该点的变化率,导数越大,表示函数在该点的变化越大。
  

图2 曲线的导函数

  
  从图2可以发现p2点的斜率大于p1点的斜率,即p2点的导数大于p1点的导数。对于多维向量

  它的导数叫做梯度(偏导数),当求某个变量的导数时,把其它变量视为常量,对整个函数求导,也就是分别对于它的每个分量求导数,即

  对于函数的某个特定点,它的梯度就表示从该点出发,函数值变化最为迅猛的方向。至此梯度下降法求解参数的方向已经找到,那就是函数的梯度方向。接下来推导损失函数的梯度(偏导数),由损失函数的公式知:
  

  对损失函数求偏导:
  
   

  至此,找到了梯度下降中的方向,只要给定一个步长就可以用迭代的方式来求待求参数,迭代的公式为:

  注: 把当前位置的θ代入-得到的值,才是在该点处梯度下降的步长。
  

  其中,a为学习率,是一个大于0的数,它能控制沿着某个方向走多长一段距离,不是步长。F为方向,又F可表示为:

  则迭代公式可以进一步写为:

  那什么时候迭代停止呢?
  

  一般是迭代达到一定次数或者学习曲线小于某个阈值时,停止迭代。在sklearn库中调用LogisticRegression时,一般取里面的默认参数tol=0.0001,最大迭代次数 max_iter=100即可。
  
   注: 关于学习率,吴恩达老师的机器学习课介绍了动态学习率的方法,也就是随着迭代的次数不断地减小学习率的值,实际上,我们假设在刚开始下山时是处于一个较高的位置,这时候我们是可以将“步子”迈大一点而不用担心“跨过头”的,但是随着越来越靠近山底(迭代的次数越来越多),这时候我们的“步子“应该是越来越小,直到到达最低点。
  
  一直对逻辑回归,这个风控建模中必不可少的一员,抱有很大的敬意。逻辑回归三部曲的文章也从2月份断断续续准备到了4月份,有些数学推导还不够严谨,总感觉有还可以完善的地方,今天先和大家分享三部曲中的第一部和第二部,第三部逻辑回归项目实战争取在下周和大家见面,大家有好的建议可以私信我。
  
  之前由于工作需要,自己看了很多资料把逻辑回归的结果转成了评分卡的形式,写完了Python的实现函数,在接下来的时间我会好好总结评分卡的内容,争取评分卡的文章也早日和大家见面。
  

参考文献

https://zhuanlan.zhihu.com/p/30116307
https://zhuanlan.zhihu.com/p/43492827
https://zhuanlan.zhihu.com/p/59137998
https://zhuanlan.zhihu.com/p/111260930
https://baijiahao.baidu.com/s?id=1639202882632470513&wfr=spider&for=pc

你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
逻辑回归三部曲——逻辑回归和sigmod函数的由来
逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)
Python画好看的星空图V2版——添加背景图片和音乐

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。

逻辑回归三部曲——逻辑回归(logistics regression)原理-让你彻底读懂逻辑回归相关推荐

  1. 一文读懂伪回归、协整、格兰杰

    一.什么叫做伪回归 若是所建立的回归模型在经济意义上没有因果关系,那么这个就是伪回归,例如路边小树年增长率和国民经济年增长率之间存在很大的相关系数,但是建立的模型却是伪回归.如果你直接用数据回归,那肯 ...

  2. 对数几率回归——Logistics Regression原理

    Logistic Regression 简介 对数几率回归,也称为逻辑回归,虽然名为"回归",但实际上是分类学习方法. 优点 不仅可以预测类别,还可以得到近似概率,对许多需要利用概 ...

  3. 一文读懂逻辑回归(Logistic Regression)

    逻辑回归其实是是一种广义的线性回归,虽然说是回归函数,但是它其实是处理分类问题,我们从其背景,损失函数两方面说清楚. 背景 参考周志华教授的<机器学习>和吴恩达大神的深度学习中的讲解,逻辑 ...

  4. 【回归分析】一文读懂岭回归,附案例教学

    1.作用 岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息.降低精度为代价获得回归系数更为符合实际.更可靠的回归方法,对 ...

  5. python内存地址替换原理(20秒读懂)

    内存地址替换 列表名字丁(列表地址丁) 列表中的元素甲(元素地址甲) 列表中的元素乙(元素地址乙) 列表中的元素丙(元素地址丙)1.更换元素甲为A,那么元素甲的地址将会更换-其他不变 列表名字丁(列表 ...

  6. 双时隙的工作原理_一文读懂跨阻放大器的工作原理

    跨阻放大器(TIA)是光学传感器(如光电二极管)的前端放大器,用于将传感器的输出电流转换为电压.跨阻放大器的概念很简单,即运算放大器(op amp)两端的反馈电阻(RF)使用欧姆定律VOUT= I × ...

  7. 逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)

         逻辑回归已经在各大银行和公司都实际运用于业务,已经有很多前辈写过逻辑回归.本文将从我实际应用的角度阐述逻辑回归的由来,致力于让逻辑回归变得清晰.易懂.逻辑回归又叫对数几率回归,是一种广义线性 ...

  8. 机器学习算法系列(六)- 弹性网络回归算法(Elastic Net Regression Algorithm)

    阅读本文需要的背景知识点:岭回归.Lasso回归.一点点编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用--反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!s ...

  9. 逻辑编排在优酷可视化搭建中的实践(一) - 逻辑与Runtime

    从可视化搭建说起 页面可视化搭建系统从16年开始如雨后春笋般涌现而出,从活动页搭建到中后台搭建,有开源有仅公司内部使用的,都致力于将前端从繁复的体力劳动中解脱出来,提高页面生产效率.优酷内部也有一套营 ...

最新文章

  1. 2022-2028年中国交通建设PPP模式深度分析及发展战略研究报告(全卷)
  2. 报错,贴图整理(1)
  3. 华为上机考试题系列(一):牛客网的奇葩操作
  4. python3 centos7 Python.h无法找到
  5. Tomcat 在mac上(Idea)端口冲突解决办法
  6. LeetCode MySQL 615. 平均工资:部门与公司比较(over窗口函数)
  7. 华为入局 VR 眼镜能让 VR 早普及几年?|CSDN博文精选
  8. 开发人员常用的Oracle导入/导出命令
  9. python3 数据结构_Python3数据结构
  10. Github Coding Developer Book For LiuGuiLinAndroid
  11. python实现爬虫收集图片 花瓣网_利用Python抓取花瓣网美图实例
  12. 新装的服务器wincc上一些图形不显示,wincc画面无法全部显示
  13. 考虫四级词汇思维导图
  14. php红包现金,php实现微信支付之现金红包
  15. 3种方法: 圆圈中最后剩下的数字
  16. 20120821-GetDC
  17. 移动硬盘接口坏了怎么办解决教程
  18. 2011年11月校园招聘JAVA面试题整理
  19. HLK-W801-LVGL8之横屏显示
  20. Win炫酷实用快捷键及触控板手势

热门文章

  1. chat聊天机器人调研资料汇总
  2. Stochastically Stable Negativity for Analytically Linear Subalgebras——ShaneZhang
  3. 去年“双11“我买的那台云服务器
  4. 如何快速配置OA、CRM、ERP等管理软件
  5. 注册了图形商标还需要申请登记版权吗?
  6. 效率神器!!!遥感影像和普通图片样本半自动标注
  7. LED点阵屏实现文字滚动
  8. 俞军PM12条军规+产品决策简单三步法
  9. iPhone 5 屏幕尺寸变长指南
  10. 【转】手把手教你绘制精美信息图