python logistic回归_机器学习 逻辑回归(1)

本文从机器学习的角度出发,详细介绍了逻辑回归的原理。首先,通过追溯Logistic方程的历史,展示了其在人口增长模型中的应用。接着,讨论了从线性回归到逻辑回归的转变,解释了为何引入Logistic函数(Sigmoid函数)。文章指出,线性回归不适合直接用于二分类问题,而Logistic函数能够将输出映射到0到1之间,适合概率预测。作者还探讨了Logistic函数的特性,并简要提及了从数学推导角度理解逻辑回归的必要性。最后,文章指出,虽然逻辑回归基于伯努利分布假设,但在实际应用中,结果应被视为概率的近似值。
摘要由CSDN通过智能技术生成

628ee0f45a71d103eebd8d669d74387e.png   关注一下再走八   3f60eaf4d7ebf7825e35dd9192477a5c.png

(看完这篇应该蛮久)

小编觉得如果一篇内容说完一个机器学习方法是不可能,想着不如循序渐进,细节化处理。写多了之后在菜单栏里放入方法导航,大家就可以系统的看;所以接下来关于一个方法会有>1篇的论述。

今天开始逻辑回归

先用被说烂了的一句话:

假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。$(不用记)$

$目录$:

  • Logistic equation原始追溯...

  • 从线性回归到逻辑回归思考

     -- (为什么要引入logistic函数)

  • 从广义线性模型到逻辑回归思考

          -- (为什么要是logistic函数)

  • 逻辑回归结果是概率么

  • 下章期待

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

Logistic equation追溯

https://mathworld.wolfram.com/LogisticEquation.html 是关于一些数学方法的历史。直接给你link到Logistic

% 1) 从人口增长的计算来

6a24e55ced5504ce322a5f48ab420163.png 

N(t): 人口的数量

t: 时刻; r: 变化率 - 人口数量的变化率

如果不加任何的限制人口的数量会随着时间的增长而增长。

% 2) 加入限制( 人口增长必定收到自然限制)

a7321a5ea9b3baef37c2794935426fe4.png

N是人口数量,K表示最大承载量, 变换:

89f126292ade6a13b66b1f3e07e2343f.png

即当加入了(1-N(t)/K) 后,N

% 3) 抽象一下函数

两边同除K,并且让x = N/ K

6b44f8b7b5b09e7698f17e19ce56831d.png

被挡住的是rx(1-x)

% 4) 求解得出x(t),感兴趣求解过程看最后附录推导

981a2864ead554bdf46b6efc136f94f1.png

% 5)手动在python看下这个图

import numpy as np import math import matplotlib.pyplot as plt  x=np.arange(0,20,0.1) x0 = np.arange(0,2,0.1) r=0.8 y=[] for t in x:     y0=1/(1+(1/x0 - 1)*math.exp(-r*t))     y.append(y0) plt.plot(x,y,label="Logistic Equation") plt.xlabel('x') plt.ylabel('y')  plt.ylim(0,2.2)

0ac42d56463f82f3e472c0d165a1975a.png

% 6) 观感

  • 曲线多因为我x初始值[0,2]设定了很多个

  • 无论初始值是几,就算大于1,曲线都会回归1

  • 最底部蓝色的线(x轴重叠), 刚开始是0就一直是0

% 7) 抽logistic等式形式

上图所示:在1以下的时候,并且无限接近0的时候(橙色),是一条S形的曲线,当我们试着把这个曲线抽离出来,设置x的范围是(-5,5),x0=0.5, r=1 得出的图为:

f90c478cd18eb558d8f4e2404533ef39.png

带入数值得函数变成

62fe32defd9af1814c8c60541b21c9a2.png

这里只是看下logistic等式原生态(多年前,(感觉小编有点硬凑哈哈)当然不是因为这样有了等式,我们就去拍脑袋用它。请往后看其中的联系。记住这个S曲线图的感觉。

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

从线性回归到逻辑回归的联系看

为什么要引入logistic /sigmoid函数

大家应该会比较熟悉线性回归。

从线性回归说起。我们一般用线性回归去做连续目标值的预测。如果用其做分类问题,不是很适合,因为它的数值是不确定的,没有范围的,如果要是做分类预测,是需要把数值映射到一个区间范围的。如果是二分类的问题,那就是映射到0,1之间,此时是一个概率问题。(想象每本书总要举的例子掷硬币, 非黑即白)。

第一反应,阶梯函数,比如

cbbe79477c98a900449851695c429bf6.png

但是这个函数不连续,有断层,不能作为一个连接渠道,所以想有没有近似的连续函数作为一个联系。这里联想到了引入logistic函数,也叫做sigmoid函数。

62fe32defd9af1814c8c60541b21c9a2.png

sigmoid函数特征(再放一次图)

f90c478cd18eb558d8f4e2404533ef39.png

0ab03da7b9f646c02357d7ad2f675737.png

  • sigmoid单调递增且连续

  • sigmoid函数关于(0,0.5)对称

  • sigmoid可以将输出值映射到0~1之间

  • 其次是现实问题会有类似的非线性关系,当自变量很大或很小时对因变量影响很小,但是在某个阈值范围上时影响很大

当把t输入到这个函数中,结果会被映射到0,1之间。

再来,这里单看的t,表示一个数值。但是如果把t看成空间中一系列样本的特征线性组合,每一个样本都有很多特征点t,特征点也有自己的权重a。此时可以变成:

7c56500d9f26fef73b1c8035e508f3fd.png

这权重a看成一个矩阵,t本身也看成一个

1c933f9bd0f82137c5a9593738876441.png456b3f4999f5c5efdee7619456890b2f.png

b4a8356ffcc70bc7b8b392d8efff1e40.png

所以logistic函数也可以表示成

378480387255a01fc54b42ff61cbb1cb.png

  • 如果g(t) > 0,f(t)分母 < 2, f(t) >0.5

  • 反之g(t) < 0, f(t) <0.5, 

  • y=0.5 是一个分界点,分类无法确定。

  • 所以当f(t)越小,越靠近0分类,f(t) 越大越靠近1分类,靠近临界点,分类的准确性会降低。

83051fc0d696b2b76133ba4fc0c19122.png所以:简单来说为什么要用sigmoid,即线性回归的预测是一个数,但是二分类效果是01结果,我们需要有一个联系在其中映射 ,sigmoid是连续的可微的,是能够把实数转换成一个01区间内的数值,并且数值约接近1,我们认为1的可能性更大。

到这里会觉得logistic/sigmoid真的有很多优点,又可以帮助映射区间,所以我们才使用,是的也不完全是,因为如果有数学的方式能够推导出这个函数,是不是可信度更高?那从推导角度看看。

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

从数学推导的角度看

逻辑回归为什么是logistic /sigmoid形式?

在ML中很多模型都是广义线性模型,比如线性回归,逻辑回归, 多项式回归等。我们是可以从广义线性模型推导出各种回归,他们的区别是各个回归的样本数据分布不同,比如样本和噪声服从高斯分布那就是线性回归,服从伯努利分布就是逻辑回归等。

我们的步骤是

  • 了解广义线性模型和其基本假设

  • 了解伯努利分布

  • 证明伯努利分布属于指数分布族

         -- 因为GML是基于指数分布族的

            而逻辑回归的假设前提是伯努利分布

  • 在此基础上推导出逻辑回归的sigmoid函数

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

广义线性模型有三个假设

1. GML是基于指数分布族的

  即给定样本以及参数,样本分类服从指数家族中的某一个分布; 指数分布族的形式为

8b19b925974b131f33b7fb99ff88a3b0.png 

不要觉得很可怕我简单解释一下

  • η 是自然参数,η 不同的时候,分布就会不同

  • 你熟悉的高斯分布,泊松分布,伯努利分布等都是指数分布家族成员

  • 我们看到的原始分布表达式(参数概率分布)不一样,但是都可以通过数学上的变换得到上图的表达形式。(下文会证明伯努利分布是指数分布家族成员)。

2. 分布模型的参数η 与输入的样本为线性关系

3. 给定一个输入x,我们的目标函数为h(θ)=E[T(y)/x]

解释: 即1是我们能在指数分布范围内部讨论y的概率,第二条是为了设计决策函数是线性的,第三个是我们的预测值具有有实际均值的分布。

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

伯努利分布

简单想一下,逻辑回归主要去解决01二分类的问题,可以很自然的联想到用伯努利分布

伯努利分布指的是对于随机变量X有, 参数为p(0

伯努利分布函数的形式为:

29865f5c2cb8c603e5ce61f374e8ae46.png      (1)

还简单可以写成

p(y=1;p) = p, p(y=0;p) = 1-p ,p看成均值

如果你掷硬币,y=1or0代表正面和反面,你得到正面的概率就是p,反面的概率是1-p

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

验证伯努利是指数分布族成员

推出sigmoid函数

把(1)进行如下变换,(2)是指数分布族的形式

ce2de6be6ae5fe50d3b743b209bc891b.png

结果

  • 1和2可以完全对应上;证明了伯努利是指数家族

  • P是伯努利函数里唯一参数, η 指数分布族里的分布决定参数, 通过等式12对应,关注橙色部分,这两个参数之间隐藏了sigmoid函数的形式。

  • 根据GLM的假设3:h(θ) = E[y/x, θ]  又因为伯努利的期望就是 p ,所以 h(θ) = E = p = 

ee63d3c6c3d7c18d5e4b37fe0d638a4a.png

以上推出二项式分布要用sigmoid形式作为响应函数

7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif7acd2bc7b6a0e5a64d70aa3aa3977ee3.gif

逻辑回归输出的数值真的是概率么? 

我们的逻辑回归是建立在服从伯努利分布的基础上的,但是事实情况大多不会完全满足数学上的假设,这就不能完全把结果当晨一个概率数值,所以我们最好只看作数值越靠近1,1的可能性就越大,反之。

后续发展

之后我会紧接着更新逻辑回归2甚至3,讲解损失函数,一些积累的面试问题(当然我会去收集),python实现,案例实际操作等。期待吧。我觉得调包很多人都会,拉开距离的还是基础和细节,所以从源头开始慢慢梳理。

28bef489b81840b7ebae89fb3c8ab2b8.png

附录:上面有一步细节证明

573e98a4c8c49a188caa6b0f15f9557b.png

END

如果觉得还ok,可以点点关注和在看哈哈 谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值