[有监督学习]3.详细图解逻辑回归

逻辑回归

逻辑回归是一种用于有监督学习的分类任务的简单算法。虽然算法的名字中包含“回归”二字,但其实它是用于分类问题的算法。逻辑回归通过计算数据属于各类别的概率来进行分类。


概述
逻辑回归是一种学习某个事件发生概率的算法。利用这个概率,可以对某个事件发生或不发生进行二元分类。
虽然逻辑回归本来是二元分类的算法,但也可以用于三种类别以上的分类问题。
为了理解这个算法,请思考以下例子。
你在回家的路上发现下雪了。如果明天积雪,你就必须从鞋柜里翻出雪天穿的靴子做好准备。现在的气温是 2 ℃。请问明天不积雪,你可以穿平时的鞋子出门的概率是多少呢?
这里使用虚构的 100 天的数据,通过逻辑回归求出可以穿平时的鞋子出门的概率。以气温为横轴 x,当出现积雪而需要穿着雪天穿的靴子出门时,纵轴 y 的值为 0;当雪已经融化、可以穿着平时的鞋子外出时,纵轴 y 的值为 1,绘制得到的数据散点图如图 2-12 所示。

▲图 2-12 使用 100 天的数据绘制的散点图


在这里使用逻辑回归,我们就可以得到如图 2-13 中的绿线所示的曲线,并利用该曲线求出在不同的气温下,雪已经融化、可以穿着平时的鞋子外出的概率。

▲图 2-13 逻辑回归


具体来说,计算得到的概率分别是:气温为 0 ℃时的概率为 14%,为 1 ℃时的概率为 63%,为 2 ℃时的概率为 94%。看起来明天可以穿平时的鞋子外出。


算法说明
如前所述,逻辑回归根据数据 x 和表示其所属类别的标签y 进行学习,计算概率。数据 x 可以当作由特征值组成的向量处理。如果标签是二元分类,则可以使用前面的 y = 0,1 这种二元数值表示。
逻辑回归的基本思想与线性回归一样,对数据 x 乘以权重向量 w,再加上偏置 w0,计算 的值。逻辑回归和线性回归在从数据中学习权重 w 和偏置 w0 这一点上是相同的。
与线性回归不同的是,为了计算概率,逻辑回归的输出范围必须限制在 0 和 1 之间。逻辑回归使用 Sigmoid 函数,返回 0 和 1 之间的数值。Sigmoid 函数的图形如图 2-14 所示。

▲图 2-14 Sigmoid 函数


我们对输入数据 x 使用 Sigmoid 函数,即使用 计算标签为 y 的概率 p。二元分类通常将预测概率 0.5 作为阈值进行分类。例如,当概率小于 0.5 时,将 y 的预测值分类为 0;当概率大于 0.5 时,将 y 的预测值分类为 1。根据问题的不同,有时会将阈值设置为大于或小于 0.5 的值。
在学习过程中,我们使用逻辑损失作为误差函数进行最小化。与其他误差函数一样,逻辑损失是在分类失败时返回大值,在分类成功时返回小值的函数。与在误差回归中引入的均方误差不同的是,我们无法通过式子变形来计算逻辑损失的最小值,因此需要采用梯度下降法通过数值计算来求解。
对于无法通过式子变形严密求解的情况,机器学习中经常会通过数值计算来近似求解。


示例代码
下面使用与前面的“概述”部分相同的数据,计算在 0 ℃、1 ℃、2 ℃时积雪的概率。由于数据是使用随机数生成的,所以每次执行时结果都有所不同。

import numpy as np
from sklearn.linear_model import LogisticRegression
# 创建两个 50 个样本的一维数组,这些样本来自于具有均值为 3 和标准差为 1 的正态分布,以及具有均值为-1 和标准差为 1 的正态分布。然后,将这两个数组在垂直方向上连接起来,形成一个 100 行、1 列的二维数组。这样,X_train 就变成了一个包含 100 个样本的训练数据,每个样本是一个数字。
X_train = np.r_[np.random.normal(3, 1, size=50), np.random.normal(-1, 1 , size=50)].reshape((100, -1))
# 创建一个包含 50 个 1 的一维数组和一个包含 50 个 0 的一维数组,然后将它们在垂直方向上连接起来,形成一个 100 维的数组。这个数组的前 50 个元素都是 1,后 50 个元素都是 0。
y_train = np.r_[np.ones(50), np.zeros(50)]
model = LogisticRegression()
model.fit(X_train, y_train)
# 使用模型来预测输入数据的概率分布。[[0], [1], [2]] 是输入数据的三个样本,模型会对每个样本生成一个概率分布。[:, 1]表示在一般情况下,概率分布通常是一个二维数组,其中第一列表示一个类别,第二列表示该类别对应的概率。通过 [:, 1],只选择了第二列,即概率值。
model.predict_proba([[0], [1], [2]])[:, 1]

array([0.1411774 , 0.63543147, 0.94866702])

计算可知,在 0 ℃、1 ℃、2 ℃时概率的值(保留小数点后两位)分别约为 0.14、0.63、0.94。


详细说明
决策边界
在解决分类问题时,如果让学习后的模型对未知数据分类,模型就会以某个地方为边界来区分分类结果,这个边界就叫作决策边界。逻辑回归的决策边界是计算出的概率正好为 50% 的地方。
下面看一下在平面的情况下的决策边界的图形。使用逻辑回归学习时的训练数据和决策边界如图 2-15 所示。

▲图 2-15 决策边界的图形


决策边界的形状因使用的算法不同而有很大的不同。在平面的情况下,逻辑回归的决策边界是直线。在其他算法中,比如 KNN 和神经网络,决策边界是更复杂的形式。详细内容将在介绍相应算法时进行说明。


对特征的解释
我们可以查看逻辑回归中每个特征的系数。通过查看每个特征的系数的符号,可以知道它对概率是正影响还是负影响。这里以第 1 章的鸢尾花数据为例,只使用其中的 setosa(山鸢尾)和 versicolor(杂色鸢尾)这两种鸢尾花的数据来确认这一点。表 2-9 所示为逻辑回归学习得到的每个特征的权重的结果。对应于 versicolor 和 setosa 的目标变量分别为 1 和 0。
▼表 2-9 每个特征的权重

这些值表示在特征值发生变化时,特征值对模型将数据标签分类为 versicolor 的概率的影响程度。下面使用 sepal width 和 petal length 两个特征绘制散点图,来查看训练数据的分布。绘制结果如图 2-16 所示。

▲图 2-16 对特征的解释


一方面,由于纵轴的 petal length 的权重是正值,所以结合权重来看,如果 petal length 变大,数据被分类为 versicolor 的比例会变大。总的来看,在图 2-16 中的上方的数据被分类为 versicolor 的比例大,而下方的数据被分类为 setosa 的比例大。
另一方面,由于 sepal width 的权重是负值,所以如果 sepal width 变小,数据被分类为 versicolor 的比例会变大。我们可以得出如下结论:在图 2-16 中偏左的地方分布着 versicolor,在偏右的地方分布着 setosa。

———————————————————————————————————————————

文章来源:书籍《图解机器学习算法》

作者:秋庭伸也 杉山阿圣 寺田学

出版社:人民邮电出版社

ISBN:9787115563569

本篇文章仅用于学习和研究目的,不会用于任何商业用途。引用书籍《图解机器学习算法》的内容旨在分享知识和启发思考,尊重原著作者宫崎修一和石田保辉的知识产权。如有侵权或者版权纠纷,请及时联系作者。
———————————————————————————————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/667629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

simulink基础学习笔记

写在前面 这个笔记是看B站UP 快乐的宇航boy 所出的simulink基础教程系列视频过程中记下来的,写的很粗糙不完整,也不会补。视频教程很细跟着做就行。 lesson1-7节的笔记up有,可以加up的群,里面大佬挺活跃的。 lesson8 for循环 For …

AI科技,赋能企业财务管理

AI技术已深入千行百业,其实际任务解决能力愈发凸显和强劲。正如乔布斯所强调“技术不是为工程师而生,而是为应用而生”。 胜意科技深度集成业内领先技术,将AI融入到实际的财务工作流中,与OCR、RPA等智能技术组合式输出&#xff0c…

Android Coil的简单介绍及使用

前言: 本文是借鉴网上大佬的Coil相关技术文章及结合自己项目中的实际使用情况,对Coil作一个简单介绍。 简介: Coil是一个Android的图片加载框架库,是通过Kotlin协程的方式加载图片的,相对于Glide、Picasso、Fresco等…

CRMEB多店版v3.0前端技术革新与实践

摘要 随着移动互联网技术的飞速发展,用户对移动应用的体验要求日益提高。CRMEB多店版v3.0作为一款针对多门店管理的电商系统,在前端技术层面进行了全面的革新与优化。本文将从移动端UI设计、页面功能更新、DIY设计功能升级、移动端平台与门店管理、营销…

数据链路层相关知识

正文: 1.概述 数据链路层是计算机网络体系结构中的第二层,负责实现数据在物理层上的传输。在数据链路层中,数据被组织成帧(frame),并且通过MAC地址来进行寻址,以确保数据包能够被正确地发送到…

2020 6.s081——Lab1:Xv6 and Unix utilities梦开始的地方

一任宫长骁瘦 台高冰泪难流 锦书送罢蓦回首 无余岁可偷 ——知否知否 完整代码见:6.s081/kernel at util SnowLegend-star/6.s081 (github.com) Lecture 01知识点总结 首先透彻理解Lecture01的知识很是重要 ①pidwait((int *) 0); “wait(int *status)”函数用于…

【Java数据结构】详解LinkedList与链表(二)

目录 1.❤️❤️前言~🥳🎉🎉🎉 2.反转一个单链表 3. 找到链表的中间节点 4.输入一个链表,输出该链表中倒数第k个结点。 5.合并两个有序链表 6.链表分割 7. 判定链表的回文结构 8.输入两个链表,找…

Java 代码审计---反序列化

Java 序列化是一种将对象转换为字节流的过程,以便可以将对象保存到磁盘上,将其传输到网络上,或者将其存储在内存中,以后再进行反序列化,将字节流重新转换为对象。 序列化在 Java 中是通过 java.io.Serializable 接口来…

C++候捷stl-视频笔记2

深度搜索list list是双向链表:底部实现是环状双向链表 list内部除了存data之外,还要存一个前向指针prev和一个后向指针next list的iterator,当迭代器的时候,是从一个节点走到下一个节点,是通过访问next指针实现的 主要…

C语言:深入了解(联合体和枚举)

目录 联合体 联合体的类型的声明 联合体的特点 相同成员的结构体和联合体对比 联合体大小的计算 联合体的使用举例 联合体的类型:判断联合体是大端还是小端 枚举类型 枚举类型声明 枚举类型的优点 枚举类型的使用 联合体 联合体的类型的声明 像结构体⼀…

(含笔试题)深度解析数据在内存中的存储

目录 本章重点 前言: 1.整型在内存中的存储 1.1原码、反码、补码 原码 反码 补码 2.大小端字节序介绍 什么是大小端字节序: 为什么会有大小端字节序: 3.浮点数存储规则 本章重点 1. 整形在内存中的存储:原码、反码…

刷机 iPhone 进入恢复模式

文章目录 第 1 步:确保你有一台电脑(Mac 或 PC)第 2 步:将 iPhone 关机第 3 步:将 iPhone 置于恢复模式第 4 步:使用 Mac 或 PC 恢复 iPhone需要更多协助? 本文转载自:如果你忘记了 …

【嵌入式硬件】DRV8874电机驱动

目录 1 芯片介绍 1.1 特性简介 1.2 引脚配置 1.3 最佳运行条件 2 详细说明 2.1 PMODE配置控制模式 2.1.1 PH/EN 控制模式 2.1.2 PWM 控制模式 2.1.3 独立半桥控制模式 2.2 电流感测和调节 2.2.1 IPROPI电流感测 2.2.2 IMODE电流调节 3.应用 3.1设计要求 3.2 设计…

逆天工具一键修复图片,视频去码。本地部署超详细!!

上一篇文章:逆天工具一键修复图片,视频去码。简直不要太好用!-CSDN博客 根据上一篇文章展示的效果,本文章主要讲如何部署本地github开源项目。博主走了无数弯路,最后精化下来的步骤,超级详细!&a…

统计信号处理基础 习题解答10-5

题目 通过令 并进行计算来重新推导MMSE估计量。提示:利用结果 解答 首先需要明确的是: 上式是关于观测值x 的函数 其次需要说明一下这个结果 和教材一样,我们用求期望,需要注意的是,在贝叶斯情况下,是个…

Amis源码 embed渲染方法解析(json结构渲染原理):

js sdk中的渲染函数embed使用方式如下: const amis amisRequire("amis/embed"); const amisScoped amis.embed( self.$refs["mnode"],amisJSON, {}, amisEnv); //env会有默认值,默认值与传来的参数进行合并({默认值…

【学习Day5】操作系统

✍🏻记录学习过程中的输出,坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞👍🏻收藏⭐评论✍🏻指点🙏 学习编辑文章的时间不太够用,先放思维导图,后续复习完善细节。

【每日刷题】Day53

【每日刷题】Day53 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1019. 链表中的下一个更大节点 - 力扣(LeetCode) 2. 116. 填充每个节点的下一…

mac多媒体影音库:Emby for Mac 中文版

Emby软件是一款功能强大的媒体服务器软件,旨在为用户提供丰富的多媒体体验。以下是关于Emby软件的详细介绍: 下载地址:https://www.macz.com/mac/7964.html?idOTI2NjQ5Jl8mMjcuMTg2LjE1LjE4Mg%3D%3D 主要功能 媒体管理:Emby允许用…

python编程:SQLite 管理图片数据库

在本博客中,我们将介绍如何使用 wxPython 和 sqlite3 模块构建一个 GUI 应用程序,该程序可以遍历指定文件夹中的所有图片,并将其信息存储到 SQLite 数据库中。 C:\pythoncode\new\InputImageOFFolderTOSqlite.py 项目简介 我们的目标是创建…