您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

出场率No.1的逻辑回归算法,是怎样“炼成”的?

时间:2019-12-11 11:10:01  来源:  作者:

0x00 前言

逻辑回归(Logistic Regression,LR)。在Kaggle竞赛的统计中,LR算法以63.5%的出产率,荣获各领域中“出场率最高的算法”这一殊荣。在实际场景中,逻辑回归同样应用广泛,大到国家各项经济政策的制定,小到计算广告CTR,都能看到LR算的身影。

除了应用广泛外,LR的建模过程还体现了数据建模中很重要的思想: 对问题划分层次,并利用非线性变换和线性模型的组合,将未知的复杂问题分解为已知的简单问题 。因此,我们可以说:理解好逻辑回归的细节,就掌握了数据建模的精髓。

0x01 什么是逻辑回归

1.1 线性回归能解决分类问题么?

其实,线性回归是不能解决分类问题的。因为我们在使用线性回归模型时,我们实际上做了3个假设(实际上有更多的假设,这里只讨论最基本的三个):

  • 因变量和自变量之间呈线性相关。
  • 自变量与干扰项相互独立。
  • 没被线性模型捕捉到的随机因素服从正态分布。

从理论上来说,任何数据放在任何模型里都会得到相应的参数估计,进而通过模型对数据进行预测。但是这并不一定能保证模型效果,有时会得到“错且无用”的模型,因此建模的过程中需要不断提出假设和检验假设。

1.2 用逻辑回归解决分类问题

有些算法,表面上叫“XX回归”,背地里却是解决分类问题的。

其原理是将 样本的特征 和 样本发生的概率 联系起来,即, 预测的是样本发生的概率是多少。由于概率是一个数,因此被叫做“逻辑回归”。

在线性回归算法的例子中,我们进行房价预测得到的结果值,就是我们预测的房价,是一个数值。

但是我们在逻辑回归算法中,得到的预测值是一个概率,然后在概率的基础上多做一步操作,得到分类的结果。比如某银行使用逻辑回归做风控模型,先设置一个阈值0.5,如果得到它逾期的概率大于0.5,就不放款;否则就放款。对于“放款” or “不放款”来说,实际上是一个标准的分类问题。

通过这个小例子我们可以看到, 在回归问题上再多做一步,就可以作为分类算法来使用了。逻辑回归只能解决二分类问题,如果是多分类问题,LR本身是不支持的。

对于线性回归来说,通过传递的自变量x来计算预测值:。其中实际上就是参数与样本的矩阵相乘,。那我们可不可以找到一组参数,与特征矩阵相乘,直接得到表示概率的结果呢?

单单从应用的角度来说,是可以的,但是并不好。这是因为 线性回归得到值是没有限制的,值域从负无穷到正无穷的值。而对于概率来说,其值域为[0,1],是有限制的。如果直接使用线性回归得到的结果,使得最终拟合的结果可信程度较差。

那么下面我们就看一看,逻辑回归背后的数学原理。

0x02 LR算法数学推导

2.1 决策背后的博弈

逻辑回归使用什么样的方式来得到一个事件发生的概率值的呢?分类的背后又是什么呢?

以银行理财产品营销场景为例,对于银行来说,客户只有“买”和“不买”两种行为,但是这个行为实际上是客户在接到营销行为,如电话营销、短信营销之后,经过内心博弈产生的最终结果。

客户为什么会做出“买”或“不买”这样的被分类的行为?如果客户手里有一笔暂时不会动用的闲钱,且他希望能够通过投资行为获利,并且对盈利效果表示认可,则客户会考虑购买理财产品。但是反过来,如果客户没有钱,或者他有其他更好的投资渠道,或者厌恶投资风险,那么客户就不会购买。从经济学的角度来说,购买理财产品这一行为,既能给客户带来正效用,也能给客户带来负效用。 当客户主观认为正效用大于负效用时,可就是购买行为带来的整体效用大于0时,客户就会购买,反之则不然 。

2.2 博弈中的隐含变量

那么我们从数学角度出发,分析上述场景:假设有自变量集合,这些参数表示这种特征,决定购买行为对客户的效用,包括正效用和负效用。我们将客户的购买行为记为y,其中y=1表示客户购买理财产品;y=0表示客户没有购买。于是可以得到下面的公式:

如果,我们 假设正负效用函数与自变量特征参数成线性相关 ,则根据可以得出:。其中是相互独立的随机变量,且都服从正态分布。

在得到正负效用线性函数之后,就可以 用正效用减去负效用的解是否大于0作为分类依据 。令,则可以得到:。如果我们将其转换为分类问题,则可以得到阶梯函数如下:

更进一步,我们将上面的函数转变为求概率,即客户购买理财产品的概率如下:

其中, 是随机变量的累积分布函数 ,表示客户购买的比例。

这个模型在学术上被称作是 probit回归 (虽然是名字中有“回归”两个字,但是实际上解决的还是分类问题)。

在模型搭建的过程中,我们假设了客户内心博弈的正负效用变量:,因此这类隐藏变量模型(latent variable model);而正负效用变量:被称为隐藏变量(latent variable)。

由此可见, 对于一个分类问题,由于“窗口效用”,我们只能看见客户的购买行为,但是在分类的背后,是隐藏变量之间的博弈,我们通过搭建隐藏变量的模型,来求出客户购买的概率 。

2.3 sigmoid函数与逻辑回归

在上一节我们得到了probit回归在数学上是比较完美的,但是正态分布的累积分布函数,其表达形式很复杂(复杂到懒得把公式写出来),且没有解析表达式。因此直接在probit回归上做参数估计是比较困难的。但是好在我们可以对其做近似,让其在数学上更加简洁。

此时,神奇的数学家们发现:正态分布在线性变换下保持稳定,而逻辑分布可以很好地近似正态分布。因此可以使用标准逻辑分布的累积分布函数来替换正态分布的累积分布函数。

标准逻辑分布的概率密度函数为,对应的积累分布函数为:

在学术界被称为sigmoid函数,是在数据科学领域,特别是神经网络和深度学习领域中非常重要的函数!。其图像如下图所示,呈S状,因此也被称为“S函数”。当t趋近于正无穷时,趋近于0,则趋近于1;当t趋近于负无穷时,趋近于正无穷,则趋近于0。因此该函数的值域为(0,1)。

出场率No.1的逻辑回归算法,是怎样“炼成”的?

 

两种不同的效用函数(假定他们都满足线性回归模型的假设)相互竞争时,其中某一方最终胜出的概率分布在数学上可近似为sigmoid函数。通俗讲:sigmoid函数表述了某一方竞争胜出的概率。

将效用函数之差(同样是线性回归模型)带入sigmoid函数中,当t>0时,得到的结果是概率值p>0.5;当t<0时,得到的结果是p<0.5。因此,实际上我们得到是这样的公式:

至此,大名鼎鼎的逻辑回归模型(logit regression)如下,其中表示客户特征,表示模型参数:

0xFF 总结

在本篇文章中,我们学习了逻辑回归的算法模型。

首先,逻辑回归是解决分类问题的,本质是求概率再分类。在分类结果的背后是隐藏变量的博弈,我们认为隐藏变量与特征是线性相关的,因此就可以对隐藏变量之差求概率(得到随机变量的累积分布函数),得到probit回归模型。为了使数学公式更为简单,使用sigmoid函数去近似,最终得到逻辑回归模型:

根据建模过程,我们已经得到了逻辑回归模型,下一步就是找到损失函数,去尽可能地拟合数据。

那么对于给定的样本数据集X,y,我们如何找到一组参数,使得用这样的方式,可以最大程度获得样本数据集X对应的分类输出y?



Tags:逻辑回归算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
0x00 前言逻辑回归(Logistic Regression,LR)。在Kaggle竞赛的统计中,LR算法以63.5%的出产率,荣获各领域中“出场率最高的算法”这一殊荣。在实际场景中,逻辑回归同样应用广泛,大到...【详细内容】
2019-12-11  Tags: 逻辑回归算法  点击:(91)  评论:(0)  加入收藏
本文将通俗易懂的介绍逻辑回归的基本概念、优缺点和实际应用的案例。同时会跟线性回归做一些比较,让大家能够有效的区分 2 种不同的算法。什么是逻辑回归? 线性回归的位置如...【详细内容】
2019-09-06  Tags: 逻辑回归算法  点击:(190)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(11)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(22)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(14)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯&middot;奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(40)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条