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

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

从线性分类器谈起

        给定一些数据集合,他们分别属于两个不同的类别。例如对于广告数据来说,是典型的二分类问题,一般将被点击的数据称为正样本,没被点击的数据称为负样本。现在我们要找到一个线性分类器,将这些数据分为两类。用X表示样本数据,Y表示样本类别(例如1与-1,或者1与0)。我们线性分类器的目的,就是找到一个超平面将两类样本分开。对于这个超平面,可以用以下式子描述:

对于logistic回归,有:

其中x为样本,x=[x1,x2,⋯,xn]为n维向量,函g为我们常说的logistic函数g的更一般公式为:

为什么要用Logistic函数

        分类器中最简单的自然是线性分类器,线性分类器中,最简单的应该就属于感知器了。在上个世纪五六十年代,感知器就出现了:

         感知器的思想,就是对所有特征与权重做点积(内积),然后根据与阈值做大小比较,将样本分为两类。稍微了解一点神经网络的同学,对一下这幅图一定不陌生,这幅图描述的就是一个感知器。

        感知器相当于控制原理中的阶跃函数:

        这两者的本质都是一致的,即通过划定一个阈值,然后比较样本与阈值的大小来分类。

        这个模型简单直观,实现起来也比较容易。但是问题在于,这个模型不够光滑。第一,假设t0=10,现在有一个样本进来,最后计算出来的值为10.01,你说这个样本分类应该是为1还是0呢?第二,这个函数在t0这点有个阶跃,有从0到1的突变,导致这点不连续,在数学上处理起来也不方便。

        因此使用logistic函数对比前面的感知器或者阶跃函数,通过logistic函数的图像,我们很容易总结出他的以下优点:
        1.logistic函数的输入范围是−∞→+∞,而之于刚好为(0,1),正好满足概率分布为(0,1)的要求。我们用概率去描述分类器,自然比单纯的某个阈值要方便很多;
        2.logistic函数是一个单调上升的函数,具有良好的连续性,不存在不连续点。

有监督学习

        机器学习分为有监督学习,无监督学习,半监督学习,强化学习。对于逻辑回归来说,就是一种典型的有监督学习。既然是有监督学习,训练集自然可以用如下方式表述:

对于这m个训练样本,每个样本本身有n维特征。再加上一个偏置项x0 ,则每个样本包含n+1维特征:

                                                                                                                        其中x∈Rn+1,x0=1y∈{0,1}

李航博士在统计学习方法一书中给分类问题做了如下定义:
        分类是监督学习的一个核心问题,在监督学习中,当输出变量Y取有限个离散值时,预测问题便成为分类问题。这时,输入变量X可以是离散的,也可以是连续的。监督学习从数据中学习一个分类模型或分类决策函数,称为分类器。分类器对新的输入进行输出的预测,称为分类(classification).

为什么要使用logistic函数:

其中一个重要的原因,就是要将Hypothesis(NG课程里的说法)的输出映射到0与1之间,既:

统计学习方法都是由模型,策略,和算法构成的,即统计学习方法由三要素构成,可以简单表示为:
        方法=模型+策略+算法方法=模型+策略+算法
        方法=模型+策略+算法

对于logistic回归来说,模型自然就是logistic回归,策略最常用的方法是用一个损失/代价函数来度量预测错误程度,算法则是求解过程。

logistic回归模型

        逻辑回归(Logistic Regression)是机器学习中最常见的一种用于二分类的算法模型,由于其数学原理简单易懂,作用高效,其实际应用非常广泛。虽然带回归二字,实则是分类模型,下面从logit变换开始。

logit变换

        我们在研究某一结果y与一系列因素(x1,x2,⋯ ,xn)之间的关系的时候,最直白的想法是建立因变量和自变量的多元线性关系

        其中(θ0,θ1,θ2,⋯ ,θn)为模型的参数,如果因变量是数值型的话,可以解释成某某因素xi变化了多少导致结果y发生了多少变化,如果因变量y是用来刻画某特定结果发生的概率(0~1)呢?这时候因素xi变化导致结果y的变化恐怕微乎其微,有时候甚至忽略不计。于是,我们需要让不显著的线性关系变得显著,使得模型能够很好解释随因素的变化,结果也会发生较显著的变化,这时候,人们想到了logit变换,下图是对数函数图像

        从对数函数的图像来看,其在(0,1)之间的因变量的变化是很迅速的,也就是说自变量的微小变化会导致因变量的巨大变化,这就符合了之前想要的效果。于是,对因变量进行对数变换,右边依然保持线性关系,有下面式子

        虽然上式解决了因变量随自变量变化的敏感性问题,同时也约束了y的取值范围为(0,+∞)。我们知道概率是用来描述某件事发生的可能性,事件发生与不发生有对立性,结果可以走向必然发生(概率为1),也可以走向必然不发生(概率为0),因此概率的取值范围为(0,1),而等式左边y的取值范围是(0,+∞),所以需要进一步压缩,又引进了几率。

几率

        几率(odd)是指事件发生的概率与不发生的概率之比,假设事件A发生的概率为p,不发生的概率为1−p,那么事件A的几率为

        几率恰好反应了某一事件两个对立面,具有很好的对称性,下面我们再来看一下概率和几率的关系

        首先,我们看到概率从0.01不断增大到0.99,几率也从0.01随之不断变大到99,两者具有很好的正相关系,我们再对p向两端取极限有

        于是,几率的取值范围就在(0,+∞),这符合我们之前的因变量取值范围的假设。

logistic模型

        正因为概率和几率有如此密切对等关系,于是想能不能用几率来代替概率刻画结果发生的可能性大小,这样既能满足结果对特定因素的敏感性,又能满足对称性,便有了下面式子

现在,我们稍微改一改,让等式左边对数变成自然对数ln=loge,等式右边改成向量乘积形式,便有       

   其中θ=(1,θ1,θ2,⋯ ,θn),X=(1,x1,x2,⋯ ,xn)T,解得

 其中e是自然常数,保留5位小数是2.71828。这就是我们常见的logistic模型表达式,作出其函数图像如下


        我们看到logistic/sigmoid函数图像是一条S型曲线,以(0,0.5)为对称中心,随着自变量x不断增大,其函数值不断增大接近1,随自变量x不断减小,其函数值不断降低接近0,函数的取值范围在(0,1)之间,且函数曲线在中心位置变化速度最快,在两端的变化速率较慢。

        从上面的操作,我们可以看到逻辑回归模型从最初的线性回归模型基础上对因变量进行logit变换,使得因变量对自变量显著,同时约束因变量取值范围为0到正无穷大,然后用概率表示几率,最后求出概率关于自变量的表达式,把线性回归的结果压缩在(0,1)范围内,这样最后计算出的结果是一个0到1之间的概率值,表示某事件发生的可能性大小,可以做概率建模,这也是为什么逻辑回归叫逻辑回归,而不叫逻辑分类。

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

连载。。。。

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/8QCYCXF6.shtml

相关文章

阻滞增长模型--Logistic模型

文章目录 写在前面一、思路二、原始数据三、源代码四、结果 写在前面 做了一个作业,觉得挺有意思,有空就发上来了。 阻滞增长模型–Logistic模型的部分推导、思路,并给出参考代码。 参考书籍:《数学模型》第四版,姜启…

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

二项逻辑回归模型 既然logistic回归把结果压缩到连续的区间(0,1),而不是离散的0或者1,然后我们可以取定一个阈值,通常以0.5为阈值,如果计算出来的概率大于0.5,则将结果归为一类(1),…

从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屏幕编程 建立程序: 设计…