logistic模型原理与推导过程分析(2)

article/2025/8/27 16:38:03

二项逻辑回归模型

既然logistic回归把结果压缩到连续的区间(0,1),而不是离散的0或者1,然后我们可以取定一个阈值,通常以0.5为阈值,如果计算出来的概率大于0.5,则将结果归为一类(1),如果计算出来的概率小于0.5,则将结果归为另一类(0),用分段函数写出来便是

这样逻辑回归就可以用来进行2分类了,假设数据结构如下

其中m表示样本个数,n表示影响因数的个数,yi(i=0,1,⋯ ,m)取0或者1。现在我们结合数据,利用条件概率分布模型给出基于概率的二项logistic模型如下:

其中,X表示自变量,y表示因变量所属的类别,θ为模型待求的参数,模型解释为在特定的因素下,模型结果取1的概率和取0的概率。模型建好了,接下来就需要进行机器训练,而怎么来给训练一种恰当反馈呢?答案是损失函数,通过损失函数来评估模型学习的好坏和改进机制。

损失函数

机器学习或者统计机器学习常见的损失函数如下:

1.0-1损失函数(0-1 loss function)

2.平方损失函数(quadratic loss function)


3.绝对值损失函数(absolute oss function)

4.对数损失函数(logarithmic loss function)或对数似然损失函数(log - like hood loss function)

逻辑回归中,采用的则是对数损失函数。如果损失函数越小,表示模型越好

说说对数损失函数与平方损失函数

        在逻辑回归的推导中,我们假设样本是服从伯努利分布(0-1分布)的,然后求得满足该分布的似然函数,最终求该似然函数的极大值。整体的思想就是求极大似然函数的思想。而取对数,只是为了方便我们的在求MLE(Maximum Likelihood Estimation)过程中采取的一种数学手段而已。

        由前面阈值的取定原则,我们知道相当于我们用一个类别值代替概率值,而类别值是sigmoid函数的两个最值,概率不可能时时刻刻都取到最值,这势必会造成误差,我们把这种误差称为损失,为了给出损失函数表达式,我们假设模型第i个样本所求的概率值为Pi,而真实类别值可能是0或者1。

当类别真实值是1的情况下:
        所求的概率值pi越小,越接近0,被划为类别0的可能性越大,被划为类别1的可能性越小,导致的损失越大。
        所求的概率值pi越大,越接近1,被划为类别1的可能性越大,被划为类别0的可能性越小,导致的损失越小。我们用下面的函数来描述这种变化关系

其中pi∈(0,1),其图像大致如下

当类别真实值是0的情况下:
        所求的概率值pi越大,越接近1,其结果的类别判定更偏向于1,导致的损失越大。
        所求的概率值pi越小,越接近0,其结果的类别判断更偏向于0,导致的损失越小。我们用下面的函数来描述这种变化关系

其中pi∈(0,1),其图像大致如下

------------------------ ---------- ---------- 分割线内容,hθ等于Pi --------------------------------

根据上面的内容,我们可以得到逻辑回归的对数似然损失函数cost function:

当y=1时,假定这个样本为正类:
        ①如果此时预测的概率hθ(x)=1 ,则单对这个样本而言的cost=0,表示这个样本的预测完全准确。那如果所有样本都预测准确,则总损失total_cost=0
        ②如果此时预测的概率hθ(x)=0,那么单对这个样本而言的cost→∞。也就是说预测y=1的概率为0,那么此时就要对损失函数加一个很大的惩罚项。

当y=0时,推理过程跟上述完全一致,不再累赘。

将以上两个表达式合并为一个,则单个样本的损失函数可以描述为:

 

梯度下降的原理

由上述可知在单个样本中,其损失函数为:

现在问题就转化为一个无约束优化问题,即我们找出最小的θ,使得costfunction达到最小。而在无约束优化问题中,最重要最基本的方法莫过于梯度下降了。

梯度下降的过程:

现在就要把两种情况结合起来并且绘制成全样本的损失函数,就不需要分真实值是1还是0两种情况讨论,求出其期望值,做成一个交叉熵(cross entropy)的全体样本的损失函数如下:

        因为yi只有两种取值情况1或0,分别令y=1或y=0,即可得到原来的分段表示式。

        其中yi表示第i个样本的真实值,pi或者hθ(x)是根据模型计算出来的概率值。

        当yi=1时,costi=−log(pi),yi=0时,costi=−log(1−pi),这符合前面两种情况。

假设现在有m个样本,总体的损失函数为

 上式即为二项逻辑回归的损失函数,是一个关于参数θ和X的二元函数,也叫对数似然函数,现在问题转化为以对数似然函数为目标函数的最优化问题,其中θ为模型待求的参数,为了求参数θ,可以对目标函数求偏导数,记

对L(X∣θ)求关于θ的偏导,主要是里面对数函数关于θ的偏导数求解

--------------------------------------------------------分割线内容中hθ等于Pi-------------------------------------

logistic回归模型的应用

        既然logistic回归主要用来二分类,用logistic回归模型二分类的场景,用logistic回归模型预测某件事情的发生概率,我们常见的logistic回归模型的应用场景有

(1)根据申请人的提供的资料,预测其违约的可能性大小,进而决定是否给其贷款。

(2)根据购买记录预测用户下一次是否会购买某件商品。

(3)舆论平台做情感分类器。如根据某网友对某些特定主题的历史评论数据,预测其下次对某类型的主题是否会给出正面的评论。

(4)在医疗领域,根据病人症状,预测其肿瘤是良性的还是恶性的。

(5)根据CT,流行病学,旅行史,检测试剂结果等特点预测某位疑似病人是否真感染新型冠状病毒。

(6)在精准营销领域,预测某个产品的收益。

logistic回归模型的评价

        从logistic回归的数学原理,在阈值取定的时候一刀切的做法上面,我们能够根据logistic回归的这些特点给出模型优缺点评价

优点:

1、原理简单,模型清晰,操作高效,背后的概率的推导过程经得住推敲,在研究中,通常以Logistic回归模型作为基准,再尝试使用更复杂的算法,可以在大数据场景中使用。

2、使用online learning的方式更新轻松更新参数,不需要重新训练整个模型

3、基于概率建模,输出值落在0到1之间,并且有概率意义

4、求出来的参数θi代表每个特征对输出的影响,可解释性强

5、解决过拟合的方法很多,如L1、L2正则化,L2正则化就可以解决多重共线性问题

缺点:

1、对数据依赖性强,需要做特征工程,主要用来解决线性可分问题

2、Logistic回归模型本质上是一个线性的分类器,处理不好特征之间相关的情况,对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转,正好变负号。

3、logit变换过程是非线性的,在两端随着变化率微乎其微,而中间的变化很大,很敏感。导致很多区间的变量变化对目标概率的影响没有区分度,很难确定阀值。

4、当特征空间很大时,性能不好

5、容易欠拟合,精度不高

---------------------------------------------------------------------------------------------------------

logistic模型原理与推导过程分析(1)_LiBiGor的博客-CSDN博客
https://blog.csdn.net/qq_39237205/article/details/121031296

logistic模型原理与推导过程分析(2)_LiBiGor的博客-CSDN博客
https://blog.csdn.net/qq_39237205/article/details/121031899

logistic模型原理与推导过程分析(2)_LiBiGor的博客-CSDN博客
https://blog.csdn.net/qq_39237205/article/details/121031899


http://chatgpt.dhexx.cn/article/tTkAd49S.shtml

相关文章

从logit变换到logistic模型

从logit变换到logistic模型 logit变换几率logistic模型 前面我们知道对数函数和对数函数的一些基本性质,也许你会问,为什么要引入对数函数?而且还是一个基本初等函数?这就要从logit变换说起。 logit变换 我们在研究某一结果&…

Gompertz模型绘图 matlab,Logistic模型matlab求解

Logistic模型求解怎么用matlab求解啊? 悬赏分:100 - 解决时间:2008-11-17 23:09 已知 x0:1:12 y[43.65 109.86 187.21 312.67 496.58 707.65 960.25 1238.75 1560.00 1824.29 2199.00 2438.89 2737.71] yL/(1a*exp(-k*x)) 利用线性回归模型所…

数学建模-Logistic模型

文章目录 Malthus模型模型假设建模与求解模型评价 Logistic模型模型假设建模与求解模型检验 为了更好地理解Logistic模型,我们先看看Malthus模型 Malthus模型 这是英国神父Malthus通过对一百多年人口统计资料的分析之后提出的人口模型假设 模型假设 设x(t)表示t时…

数学建模-Logistic模型附Matlab代码

目录 一、Logistic模型介绍 二、Logistic模型实例 三、Logistic模型原理 3.1 Logistic 方程定义 3.2 Yule算法 3.2 Rhodes算法 3.3 Nair算法 4、Logistic模型Matlab部分代码 4.1 Yule算法 4.2 Rhodes算法 4.3 Nair算法 一、Logistic模型介绍 logistic回归又称logi…

logistic回归模型—基于R

logistic回归模型—基于R 数据理解和准备一. 对缺失值的处理二.虚拟变量的赋值三.箱线图四.相关性分析 训练集与测试集的划分模型构建与评价一.logistic回归模型二.检查模型在训练数据集和测试数据集上的表现使用交叉验证的logistic回归 logistic回归又称logistic回归分析&…

数学模型——Logistic回归模型(含Matlab代码)

写在前面 Logistic回归模型是一种非常常见的统计回归模型,在处理大量数据,揭示各自变量如何作用于因变量(描述X与Y之间的关系)时有着十分重要的作用。笔者在写Logit回归模型前参加了一次市场调研比赛,在这次比赛中学到…

菜鸟的数学建模之路(五):Logistic模型

matlab实现 Logistic回归跟多元线性回归差不多,但是有区别: (1) 线性回归:y是一个定量的变量,这时y对于不同的自变量来说有相应的值。 (2) Logistic回归:y是一个定性的变…

自学鸿蒙应用开发(25)- 基本的CommonDialog

动作演示 对话框是应用程序的主要输入手段之一,但是遗憾的是目前鸿蒙的开发网站上只有ToastDialog用法,其他类型的对话框则只能参考为数不多的英文文档。 以下是作者经过不断尝试,终于鼓捣出来的CommonDialog对话框。 CommonDialog1 代码实…

Builder设计模式构建通用型Dialog

目录 写在前面 一、什么是Builder模式 二、AlertDialog源码分析 2.1、源码阅读 2.2、Builder模式工作流程 三、代码实战——Builder模式构建通用型Dialog 3.1、基本框架搭建 3.2、完善Builder 3.3、完善真正的构建器 3.4、自定义参数配置 四、使用Dialog 写在前面 …

自学鸿蒙应用开发(26)- 自定义CommonDialog

执行效果 上一篇文章中说过,直接使用鸿蒙系统中的CommonDialog大致是下面的效果: 这个效果实在是无法用于实际的应用开发。本文介绍如何定制自己的CommonDialog。还是先看演示视频: CustomizeCommonDialog 准备布局 定制CommonDialog的第一…

Android炫酷翻转Dialog及高仿苹果IOS的Dialog

简单的Android弹出Dialog效果(圆角) 最近一段时间工作挺忙的,一直想写一篇博文,总是被各种事情打破计划,终于这次利用这个周末来开始自己第一次的技术文章的写作,提前说明,本人还是个菜鸟&#…

Android 全局Dialog

前沿 android 弹窗好几种,全局弹窗是什么?和普通Dialog(必须依附activity上下文的弹窗)有什么区别? 逛技术blog发现【全局dialog】这个名词,之前用FragmentDialog,自定义dialog。以及dialog的…

Android开发dialog内存泄露,Android中导致内存泄漏的竟然是它----Dialog

一. 内存泄漏的 Bug 猛增 最近在 App 进行 mokey 测试的时候检测到一些内存泄漏问题。在前天的测试中,楼主一瞬间收到了4个这样的 Bug 单,瞬间心理无比纠结,真有千万只羊驼向我奔来。 登录页面出现内存泄漏??!!楼主的代码是如此的***而无懈可击,这么可能出现这么多泄漏的…

dialog.setOnDismissListener(null)过程分析

前提 为解决DialogFragment的内存泄漏,使用了此篇博客的处理方法 DialogFragment 内存泄露,简单说就是给 dialog 设置 getDialog().setOnCancelListener(null); getDialog().setOnDismissListener(null);但发现了一个问题,当用户返回Activi…

深入分析Android中Dialog

在Android中,Dialog是一个非常重要的UI, 它可以方便的给用户提示,用最简洁的方式向用户展示信息, 以下的图片是Dialog的一个整体架构,通过它,可以总体对Dialog有一个很清晰的认识. 从这张图中可以看到,Dialog为父类, 其下有最重要的&#xf…

android自定义dialog去除title,Android 自定义Dialog去除title导航栏的解决方法

Android 自定义Dialog去除title导航栏的解决方法 如下所示: Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); 以上这篇Android 自定义Dialog去除title导航栏的解决方法就是小编分享给大家的全部内…

android常见的dialog的使用及认识

介绍 在实际开发过程中 , 我们难免要经常使用提示框 (dialog), 根据不同的场景使用不同的样式的提示框(dialog). androd提供了丰富的dialog函数 , 本文将介绍在实际开发中经常使用的对话框, 包括普通对话框 , 列表对话框 , 单选对话框 , 多选对话框 , 等待对话框, 进度条对话框…

ABAP屏幕设计Dialog

目录 一、概览 1.屏幕 2.程序组织 3.屏幕定义和维护 用途: 组成: Dialog的屏幕执行过程: 属性: 创建: 4.屏幕属性的动态修改 5.屏幕序列 二、Screen编程实例 1.Hello World屏幕编程 建立程序: 设计…

Android Dialog 源码研究

Android Dialog 源码研究 在阅读Dialog源代码之前,我给自己提出了4个问题,带着这4个问题的疑问,我才开始看源码,这样的好处能让阅读中有了侧重点,往往能更快的理解某些代码的意图,这也正是为什么总说提出问题本身,要比解决问题困难。 我下面要思考的4个问题是: Dialo…

android 判断dialog,Android 7.0经验谈:Dialog不显示之迷

最近遇到个怪问题,在其他手机上都能正常的显示Dialog,但是在Android 7.0的手机上只能显示Dialog的半透明背景,无法显示Dialog的内容。 用图给大家展示一个遇到的现象,正常时应该是这个样子的: 而我们遇到的情况如下,更坏的是如果我们设置Dialog不能点击空白处取消(dismis…