逻辑回归的前因后果

2023-11-24 20:10
文章标签 逻辑 回归 前因后果

本文主要是介绍逻辑回归的前因后果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

逻辑回归的前因后果

这里写图片描述

LR的泛化形式 – 广义线性模型

最简单的线性回归模型,函数对于xw都是线性的:

y(x)=wTx+w0

它是二维坐标系中的一条直线,或者三维空间中的一个平面,在高维空间则是超平面。为了把它用于分类,可以给它加一个激活函数,把值域压缩到小区间,比如(0, 1)之间,这就是广义线性模型:
y(x)=f(wTx+w0)

当激活函数是logistic-sigmoid函数时,这个分类方法就是LR:
p(C1|ϕ)=σ(wTϕ)

从回归方法演化而来,LR虽用于分类,它的输出却不是{0,1}两类,而是一个连续的函数,所以名字还叫“回归”而不是“分类”。

为什么用logistic-sigmoid函数

首先,LR是判别模型,即它直接求后验概率,那么想象一下,一个只有两类的后验概率应该是什么形状

用例子说明,假设男女比例相等,男女两类的先验概率:p(男人)=1/2,p(女人)=1/2

现在给先验概率加一个条件:身高,即知道一个人的身高,猜它是男的概率,是女的概率。高个子通常是男的,但也可能是女的。在各种不同身高条件下,有了一系列后验概率

p(男|150)=1/8 | p(男|160)=1/5 | p(男|170)=1/2 | p(男|180)=4/5 | p(男|190)=7/8
p(女|150)=7/8 | p(女|160)=4/5 | p(女|170)=1/2 | p(女|180)=1/5 | p(女|190)=1/8

如下图,后验概率就应该是比较平缓的S形:

这里写图片描述

我们就照这个形状去找,发现sigmoid很合适。当然S形函数不只它一个,比如用-1和1表示两类时,常用的tanh,也可以用于拟合后验概率。

但是理由不止于此,logistic-sigmoid其实来源于条件概率(class-conditional)符合协方差相同的高斯分布的假设。在生成模型中,假设各个类内的分布,即class-conditional符合高斯分布,且协方差矩阵相等,推导可知,高斯分布中x的2次幂抵消,成为sigmoid激活函数中的线性函数。

当我们训练w时我们在训练什么

后验概率公式最外层是个sigmoid,它形状固定不变,但是从不同尺度看上去效果会不一样,小尺度分类模糊,大尺度分类明确,形状不变,只是观感不同,如下图,(a)图其实只是(b)图的局部放大。

对于输入x,如果我们训练得到的是一个很小的w,那么sigmoid函数的每个输入 wTx 都很小,整个数据集区分效果如(a)图;如果我们训练得到的是一个很大的w,数据集区分效果如(b)图。

这里写图片描述

比如通过身高x判断性别,区分度就不高,训练得到的参数w很小,而对于完全可分数据,训练得到的w就很大,近似阶跃函数。样本较少时,可能遇到完全可分的情况,容易出现过拟合。

理解 wTϕ

wTϕ 不考虑x的非线性,即 wTx ,以二维面上的两类样本为例,样本平面就是 x1 , x2 扩展成的平面, z=wTx 是面上的点到样本平面的投影距离,当z=0,即 wTx=0 是样本平面和取值平面的交线,对应样本的判别函数。
这里写图片描述

交叉熵or最小二乘

线性回归用最小二乘(LS)做参数估计,它是最大似然估计(MLE)的一种特殊形式,LS比MLE多一个额外条件:误差符合高斯分布,LS形如 L=12(yt)2 ,此处t只能取0,1,而估计值y却是连续的,离散值和连续值的差不能很好的描述误差值,LS不适合逻辑回归。

交叉熵损失函数是用MLE推导得来(参考PRML 4.3.2):

L=(tlny+(1t)ln(1y))

它有两个和项,分别对应t的两个离散值,这样就没有离散值和连续值求差的问题了,直觉理解,y越接近t,损失越小:

当t=1,若要最小化 L=lny ,就需要最大化 y,y(0,1) ,就期望 y 尽量等于1。

当t=0,若要最小化L=ln(1y),就需要最小化 y,y(0,1) ,就期望 y 尽量等于0。

此处交叉熵损失函数是从MLE推导的,其实也可以直接去理解它的定义(可以参考cross-entropy )它可以表示两个概率分布的距离。

牛顿法vs梯度下降

由于sigmoid引入了非线性,似然函数没有解析解,可以使用梯度下降或这牛顿法。

梯度下降用一阶导数,找到最陡的斜坡,滚下去。

牛顿法用二阶导数,求一阶导数f(x)的根,想象二维坐标系中的曲线, f(x1) 是曲线某点的切线,二阶导数可以求得切线与x轴的交点,即 f(x) 的根,作为迭代的下一个值。可参考wiki上的动图演示。

梯度下降计算量少,迭代次数多,对函数的连续性、平滑性要求低;牛顿法计算要用海森矩阵,计算量大,但收敛快,由于二阶导数,对函数的连续性、平滑性要求更高。

这篇关于逻辑回归的前因后果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/422492

相关文章

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

逻辑表达式,最小项

目录 得到此图的逻辑电路 1.画出它的真值表 2.根据真值表写出逻辑式 3.画逻辑图 逻辑函数的表示 逻辑表达式 最小项 定义 基本性质 最小项编号 最小项表达式   得到此图的逻辑电路 1.画出它的真值表 这是同或的逻辑式。 2.根据真值表写出逻辑式   3.画逻辑图   有两种画法,1是根据运算优先级非>与>或得到,第二种是采

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

深度学习与大模型第3课:线性回归模型的构建与训练

文章目录 使用Python实现线性回归:从基础到scikit-learn1. 环境准备2. 数据准备和可视化3. 使用numpy实现线性回归4. 使用模型进行预测5. 可视化预测结果6. 使用scikit-learn实现线性回归7. 梯度下降法8. 随机梯度下降和小批量梯度下降9. 比较不同的梯度下降方法总结 使用Python实现线性回归:从基础到scikit-learn 线性

【python因果推断库11】工具变量回归与使用 pymc 验证工具变量4

目录  Wald 估计与简单控制回归的比较 CausalPy 和 多变量模型 感兴趣的系数 复杂化工具变量公式  Wald 估计与简单控制回归的比较 但现在我们可以将这个估计与仅包含教育作为控制变量的简单回归进行比较。 naive_reg_model, idata_reg = make_reg_model(covariate_df.assign(education=df[

什么是GPT-3的自回归架构?为什么GPT-3无需梯度更新和微调

文章目录 知识回顾GPT-3的自回归架构何为自回归架构为什么架构会影响任务表现自回归架构的局限性与双向模型的对比小结 为何无需梯度更新和微调为什么不需要怎么做到不需要 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习 🦅个人主页:@逐梦苍穹 📕所属专栏:人工智能 🌻gitee地址:x

【Java编程的逻辑】原子变量 CAS 显示锁

原子变量 在理解synchronized中有使用synchronized保证原子更新操作,但是使用synchronized成本太高了,需要先获取锁,最后还要释放锁,如果获取不到锁还需要等到。这些成本都是比较高的,对于这种情况,可以使用原子变量。 Java并发包中的基本原子变量类型有以下几种: AtomicBoolean:原子Boolean类型,常用来在程序中表示一个标志位 AtomicIn

【Java编程的逻辑】容器类的总结

抽象容器类 用法和特点 容器类有两个根接口,分别是Collection 和 Map ,Collection表示单个元素的集合,Map表示键值对的集合 。 Collection Collection表示的数据集合有基本的增、删、查、遍历等方法,但没有定义元素间的顺序或位置,也没有规定是否有重复元素。 List: 是Collection的子接口,表示有顺序或位置的数据集合,增加了根据

【Java编程的逻辑】堆与优先级队列PriorityQueue

完全二叉树 & 满二叉树 & 堆 基本概念 满二叉树是指除了最后一层外,每个节点都有两个孩子,而最后一层都是叶子节点,都没有孩子。 满二叉树一定是完全二叉树,但完全二叉树不要求最后一层是满的,但如果不满,则要求所有节点必须集中在最左边,从左到右是连续的,中间不能有空的。 特点 在完全二叉树中,可以给每个节点一个编号,编号从1开始连续递增,从上到下,从左到右 完全二叉树有一