逻辑回归(纯理论)

1.什么是逻辑回归?

逻辑回归是一种常用的统计学习方法,主要用于解决分类问题。尽管名字中包含"回归",但它实际上是一种分类算法

2.为什么机器学习需要使用逻辑回归

1.二元分类

这是逻辑回归最基本和常见的用途。它可以预测某个事件是否会发生,输出结果为是或否

例如:

  • 预测用户是否会点击广告
  • 判断邮件是否为垃圾邮件
  • 诊断患者是否患有某种疾病

这些例子都有一个共同的特征,就是只有两个结果,真(1)和假(0)

2.多类别分类

通过一对多(One-vs-Rest)或softmax等方法,逻辑回归可以扩展到多类别分类问题

例如:

  • 图像识别中的物体分类
  • 文本分类(新闻分类、情感分析等)

这些例子都有一个共同的特征,就是同一种对象有多个可能的结果,类似于咱们常见的单选题,选项有多个,但是最符合答案的选项只有一个

3.概率预测

逻辑回归不仅给出分类结果,还能输出概率值,这在很多场景下非常有用

例如:

  • 预测客户购买某产品的概率
  • 评估贷款申请人的违约风险概率

这些例子都有一个共同的特征,那就是预测,即用已知的结果去推出未知的结果

如果你还没有听懂逻辑回归的作用,没关系,我再给你举个通俗易懂的例子

  想象你是一个医生,需要判断病人是否患有某种疾病。逻辑回归就像一个智能助手,帮你做这个判断。就像医生会看病人的各项体检指标一样,逻辑回归会考虑多个相关因素(我们称之为特征)。有些指标可能比其他指标更重要。逻辑回归会给每个因素分配一个"权重",反映其重要性。最后,它不会简单地说"是"或"否",而是给出一个概率。比如"这个病人患病的可能性是70%"。你可以设定一个标准,比如超过50%就认为是"是",否则就是"否"。逻辑回归通过大量的已知案例来"学习"。就像医生通过大量病例积累经验一样。

当然,逻辑回归的作用远不止于此,限于篇幅(其实是我自己想偷懒),就不多做介绍了

3.OK,接下来我们来引入逻辑回归的公式

我个人不喜欢啰里啰唆的给你一大堆数学公式,然后告诉你底层原理就是这些数学公式,让你自己慢慢去领悟。我希望的是能把几个核心的公式给刨析出来,为什么需要用这几个公式就够了,这是我希望能够在我的文章里讲明白的事情

1.线性回归公式

y = b0 + b1x1 + b2x2 + ... + bn*xn

  • y 是因变量,即我们要预测的值。
  • b0 是截距,表示当所有自变量都为 0 时,因变量的值
  • b1, b2, ..., bn 是回归系数,表示每个自变量对因变量的影响程度
  • x1, x2, ..., xn 是自变量,即用来预测因变量的值

这里举出一个线性回归的样例

代码看不懂没关系,看图就行了

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm# Generate some simulated house data
np.random.seed(0)
area = np.random.rand(100) * 200 + 50  # House area (square meters)
price = 2 * area + 5000 + np.random.randn(100) * 500  # House price (ten thousand yuan)# Fit the data using linear regression
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(area.reshape(-1, 1), price)# Get the regression coefficients
b0 = model.intercept_
b1 = model.coef_[0]# Plot the scatter plot
plt.scatter(area, price, label="House Data")# Plot the regression line
plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")# Set the plot title and axis labels
plt.title("Linear Regression of House Area and Price")# Set the font to SimSun (楷体)
font_prop = fm.FontProperties(fname=r"C:\Windows\Fonts\simkai.ttf", size=12)  # Replace with your SimSun font pathplt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)# Add legend
plt.legend()# Show the plot
plt.show()

1.生成100个房屋模拟数据

np.random.seed(0)
area = np.random.rand(100) * 200 + 50
price = 2 * area + 5000 + np.random.randn(100) * 500 

2.使用线性回归拟合数据

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(area.reshape(-1, 1), price)

3.获取回归系数(b0 ~ bn)

b0 = model.intercept_
b1 = model.coef_[0]

4.绘制散点图

plt.scatter(area, price, label="House Data")

5.绘制回归线

plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")

6.设置文章标题

plt.title("Linear Regression of House Area and Price")

7. 设置字体为楷体&&字体大小(如果有的话)

font_prop = fm.FontProperties(fname=r"C:\Windows\Fonts\simkai.ttf", size=12)
plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)

8. 添加图例

plt.legend()

9.展示图表

plt.show()

这段代码使用线性回归来拟合房屋面积和价格之间的关系(用英文描述横纵标题是为了不报错) 

运行结果如下: 

有人可能就会问了:我们搞这么一大堆数据出来干嘛呢?

问得好~

有了这些数据,我们是不是就可以大致算出 y = b0 + b1x1 + b2x2 + ... + bn*xn 的系数了呢?

具体来说:

  • y 代表我们要预测的目标变量,例如房屋价格。
  • x1, x2, ... xn 代表影响目标变量的因素,例如房屋面积、房间数量、地理位置等等。
  • b0, b1, b2, ... bn 代表每个因素对目标变量的影响程度,也就是我们要算出的系数。

通过收集大量数据,我们可以使用线性回归模型来计算出这些系数,并建立一个预测模型。 这个模型可以帮助我们理解不同因素对目标变量的影响,并预测未来目标变量的值(类似于数学里的 y = kx + b,有了具体的k和b,我们就可以通过得到x来预测y,区别就是这里的系数k更多)

2.sigmoid 函数公式

σ(x) = 1 / (1 + exp(-x))

sig函数的图像如下所示:

 问题一:为什么选用sigmoid函数?

我们之前说到过,逻辑回归最基本的用途是为了解决二分类问题的

逻辑回归的目标是将线性模型的输出(可以是任何实数)转化为一个概率值,这个概率值代表着某事件发生的可能性,而概率值自然应该在 0 到 1 之间。

sigmoid 函数就完美地完成了这个任务:它将线性模型的输出压缩到 0 到 1 之间,并且随着输入值的增加,输出值也逐渐增加,这与概率值的变化趋势相吻合

你看sig的函数,趋近于正无穷则无限趋近于1,趋近于负无穷则无限趋近于0,是不是正好符合我们的非0即1的问题呀~

问题二:sigmoid函数如何分类?

那有人又要说了,那你这也不对啊,虽然说两边的可以无限趋近,但是中间的没法弄啊,比如说0.5在0和1的中间,那你说0.5是趋近于0还是趋近于1呢?

虽然说中间的数不能够趋近,但是我可以人为规定啊~

比如我将 >= 0.5 的数归到1的分类里,将 < 0.5的数归到0的分类里,这样问题不就解决了~

所以,0.5 并不是一个临界点,而是我们人为设定用来进行分类的阈值

3.逻辑回归公式

p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn)))

之前我们说了这么多,就是为了引入这个公式

是不是看着就头疼?我看着也头疼,不如我们将它简化一下吧~

你看,这样是不是就清爽多了,就像一个不爱打扮的帅哥,稍微整理了一下自己的容貌,之后你发现,哇塞原来这个人长得这么帅~

咳咳,跑题了~ 所以逻辑回归其实就是 线性回归 + sigmoid函数

sigmoid函数里的 z 就是用线性回归的 y = b0 + b1x1 + b2x2 + ... + bn*xn 去替代

那么这样有什么作用呢?

OK,来让我们看一看~

4.逻辑回归的本质及作用

逻辑回归的本质是预测事件发生的概率。它并不是直接对数据进行分类,而是通过一个函数(Sigmoid 函数)将线性回归的结果映射到 0~1 区间,这个区间内的值代表着事件发生的可能性

逻辑回归的基础是线性回归。线性回归建立一个线性模型,试图用一个线性函数来拟合数据,得到一个预测值。这个预测值可以是任何值,不受 0~1 区间的限制

Sigmoid 函数是一个“魔法”函数,它将线性回归得到的预测值转换到 0~1 区间,并且这个区间内的值可以被解释为事件发生的概率

为了进行二分类,我们需要设置一个阈值,通常是 0.5。如果预测的概率大于阈值,则判定为正类,否则判定为负类

例如这样:

左边函数可以看成 线性回归函数 而右边函数则是映射后的 sigmoid 函数

 本文所有图片来源于【机器学习】逻辑回归十分钟学会,通俗易懂(内含spark求解过程)_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【HMAC(C/C++)】

HMAC(C/C) HMAC是密钥相关的哈希运算消息认证码&#xff08;Hash-based Message Authentication Code&#xff09;&#xff0c;是一种基于Hash函数和密钥进行消息认证的方法。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 生…

计算机SCI期刊,闭眼投,保证检索,命中率100%

一、期刊名称 Pervasive and Mobile Computing 二、期刊简介 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机 影响因子&#xff1a;3 中科院分区&#xff1a;3区 三、期刊简介 Pervasive and Mobile Computing Journal &#xff08;PMC&#xff09; 是一本高影响力…

基于前馈神经网络 FNN 实现股票单变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…

自定义View-渐变TextView(重点:绘制文本)

源码链接 夸克网盘分享 效果展示 分析 动态效果&#xff0c;使用Animator实现自定义View 继承TextView使用TextView的测量&#xff0c;不重写使用TextView的布局&#xff0c;不重写绘制-重写绘制 使用两种颜色绘制文本颜色占比不同&#xff0c;百分比从0~1 实现 自定义属性…

论文发表作图必备:训练结果对比,多结果绘在一个图片【Precision】【Recall】【mAP0.5】【mAP0.5-0.95】【loss】

前言:Hello大家好,我是小哥谈。YOLO(You Only Look Once)算法是一种目标检测算法,它可以在图像中实时地检测和定位目标物体。YOLO算法通过将图像划分为多个网格,并在每个网格中检测目标物体,从而实现快速的目标检测。本文所介绍的作图教程适用于所有YOLO系列版本算法,接…

Go泛型详解

引子 如果我们要写一个函数分别比较2个整数和浮点数的大小&#xff0c;我们就要写2个函数。如下&#xff1a; func Min(x, y float64) float64 {if x < y {return x}return y }func MinInt(x, y int) int {if x < y {return x}return y }2个函数&#xff0c;除了数据类…

Idea在线搜索Maven依赖-好用工具分享

maven_search 等价于网页搜索maven依赖&#xff0c;非常方便快捷 下载安装后&#xff0c;使用&#xff1a; 点击上方Tools Maven Search 或者快捷键 Ctrl Shift M 最后选择依赖&#xff0c;复制即可

Vue 3 与 TypeScript:最佳实践详解

大家好,我是CodeQi! 很多人问我为什么要用TypeScript? 因为 Vue3 喜欢它! 开个玩笑... 在我们开始探索 Vue 3 和 TypeScript 最佳实践之前,让我们先打个比方。 如果你曾经尝试过在没有 GPS 的情况下开车到一个陌生的地方,你可能会知道那种迷失方向的感觉。 而 Typ…

昇思学习打卡-17-热门LLM及其他AI应用/基于MobileNetv2的垃圾分类

文章目录 网络介绍读取数据集训练训练策略模型保存损失函数优化器模型训练 网络介绍 MobileNetv2专注于移动端、嵌入式或IoT设备的轻量级CNN网络。MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;的思想在准确率小幅度降低的前提下&…

分享一款嵌入式开源LED指示灯控制代码框架cotLed

一、工程简介 cotLed是一款轻量级的LED控制软件框架&#xff0c;可以十分方便地控制及自定义LED的各种状态&#xff0c;移植方便&#xff0c;无需修改&#xff0c;只需要在初始化时实现单片机硬件GPIO初始化&#xff0c;同时为框架接口提供GPIO写函数即可。 框架代码工程地址&a…

Apache Dubbo与Nacos整合过程

Dubbo服务发现 Dubbo 提供的是一种 Client-Based 的服务发现机制&#xff0c;依赖第三方注册中心组件来协调服务发现过程&#xff0c;支持常用的注册中心如 Nacos、Consul、Zookeeper 等。 以下是 Dubbo 服务发现机制的基本工作原理图&#xff1a; 服务发现包含提供者、消费者…

LabVIEW中使用 DAQmx Connect Terminals作用意义

该图展示了如何在LabVIEW中使用 DAQmx Connect Terminals.vi 将一个信号从一个源端口连接到一个目标端口。这种处理有以下几个主要目的和作用&#xff1a; 同步操作&#xff1a; 在多任务、多通道或多设备系统中&#xff0c;可能需要不同的组件在同一时刻执行某些操作。通过将触…

redis相关知识记录

redis基本数据类型 Redis⽀持五种主要数据结构&#xff1a;字符串&#xff08;Strings&#xff09;、列表&#xff08;Lists&#xff09;、哈希表&#xff08;Hashes&#xff09;、集合&#xff08;Sets&#xff09;和有序集合&#xff08;Sorted Sets&#xff09;。这些数据结…

winform4

json using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //导入json第三方库 使用nuget搜索 …

断电的固态硬盘数据能放多久?

近日收到一个网友的提问&#xff0c;在这里粗浅表达一下见解&#xff1a; “网传固态硬盘断电后数据只能放一年&#xff0c;一年之后就会损坏。但是我有一个固态硬盘已经放了五六年了&#xff08;上次通电还是在2018年左右&#xff0c;我读初中的时候&#xff09;&#xff0c;…

《长相思》第二季回归:好剧质量,永恒的王牌

在万千剧迷的翘首以盼中&#xff0c;《长相思》第二季终于携着前作的辉煌与期待&#xff0c;缓缓拉开了序幕。这部自播出以来便以其精湛的剧情、出色的演员阵容以及独到的宣传策略&#xff0c;赢得了广泛好评与持续关注。如今&#xff0c;第二季的回归&#xff0c;无疑再次证明…

Linux 初识

目录 ​编辑 1.Linux发展史 1.1UNIX发展历史 1.2Linux发展历史 2.Linux的开源属性 2.1 开源软件的定义 2.2 Linux的开源许可证 2.3 开源社区与协作 3.Linux的企业应用现状 3.1 服务器 3.1.1 Web服务器 3.1.2 数据库服务器 3.1.3 文件服务器 3.1.4 电子邮件服务器 …

某客户管理系统Oracle RAC节点异常重启问题详细分析记录

一、故障概述 某日10:58分左右客户管理系统数据库节点1所有实例异常重启&#xff0c;重启后业务恢复正常。经过分析发现&#xff0c;此次实例异常重启的是数据库节点1。 二、故障原因分析 1、数据库日志分析 从节点1的数据库日志来看&#xff0c;10:58:49的时候数据库进程开始…

新火种AI|微软和苹果放弃OpenAI董事会观察员席位

作者&#xff1a;一号 编辑&#xff1a;美美 微软苹果双双不做OpenAI“观察员”&#xff0c;OpenAI能更自由吗&#xff1f; 7月10消息&#xff0c;微软当地时间周一宣布将放弃在OpenAI董事会的观察员席位&#xff0c;他们称&#xff0c;OpenAI在过去八个月中取得了“重大进展…

国内的几款强大的智能—AI语言模型

AI 绘图 链接&#xff1a;点我进入 1、国内百度研发的&#xff0c;文心一言&#xff1a; https://yiyan.baidu.com/welcome 大家如果像我的界面一样有【开始体验】就是可以使用的&#xff0c;否则就是说明在等待中&#xff01; 优点&#xff1a;会画画&#xff0c;暂无次数限…