逻辑回归(纯理论)

news2024/9/20 6:29:52

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 path

plt.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.coloradmin.cn/o/1919485.html

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

相关文章

数学建模·熵权法

熵权法 一种计算评价指标之间权重的方法。熵权法是一种客观的方法&#xff0c;没有主观性&#xff0c;比较可靠。具体定义 熵权法的核心在于计算信息熵&#xff0c;信息熵反映了一个信息的紊乱程度&#xff0c;体现了信息的可靠性具体步骤 Step1正向化处理 将所以评价指标转…

财务RPA的ROI——如何计算财务RPA的回报率

近几年各企业纷纷利用RPA加速推进数字化转型进程&#xff0c;从企业效益角度来看&#xff0c;RPA能够帮助企业节省人力和运营成本&#xff0c;实现提质增效&#xff0c;但是每个企业运营管理的实际情况多有不同&#xff0c;在实施RPA前&#xff0c;还是要仔细评估投资和效益的问…

元组列表之案例

1.列表推导式 基本语法&#xff1a; [表达式 for语句1 if 语句1 for语句2 if语句2 ........ ] 1.零到九的平方列表 a [i*i for i in range(10)] print(a) 2.for 循环前面加if else #如果是偶数乘以2&#xff0c;如果是奇数直接输出 a [i*2 if i%2 0 else i for i in ran…

Codeforces Round 954 (Div. 3)(A~D题)

A. X Axis 思路: 1~10暴力枚举一下所有可能 代码: #include<bits/stdc.h> using namespace std; #define N 1000005 typedef long long ll; typedef unsigned long long ull; ll n, m, t, h, k; ll a, b, c; ll ans, num, sum, cnt; ll temp[N], f1[N], f2[N]; bool f…

卤味江湖中,周黑鸭究竟该抓住什么赛点?

近年来&#xff0c;卤味江湖的决斗从未停止。 随着休闲卤味、佐餐卤味等细分赛道逐渐形成&#xff0c;“卤味三巨头”&#xff08;周黑鸭、绝味食品、煌上煌&#xff09;的牌桌上有了更多新对手&#xff0c;赛道变挤了&#xff0c;“周黑鸭们”也到了转型关键期。 这个夏天&a…

【eNSP模拟实验】三层交换机实现VLAN通信

实验需求 让PC1和PC2能够互相通讯&#xff0c;其中PC1在vlan10中&#xff0c;PC2在vlan20中。 实验操作 首先把PC1和PC2都配置好ip&#xff0c;配置好之后&#xff0c;点击右下角的应用 然后&#xff0c;在S2交换机&#xff08;S3700&#xff09;上做如下配置 #进入系统 <…

Springboot中使用@Async注解7大失效场景及解决方案

文章目录 前言一、配置类未启用异步支持二、线程池未正确配置三、Spring代理未生效四、方法不是 public 的五、调用者与被调用者在同一个类中六、异常处理不当七、使用 Transactional 与 Async 同时注解方法&#xff0c;导致事务失效总结 前言 在Spring Boot中&#xff0c;Asyn…

DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径 我的代码&#xff08;报错&#xff09; 写的过程中感到很迷惑的点&#xff1a;①二维数组和这道题目的对应弄不清除&#xff0c;m n的初始化 是 dp[m][n] 还是 dp[n][m] ② class Solution {public int uniquePaths(int m, int n) {int[][]dp new int[m1][n1];d…

LabVIEW电子水泵性能测试平台

开发了一种车用电子水泵性能测试平台&#xff0c;该平台以工控机为载体&#xff0c;利用LabVIEW开发上位机软件&#xff0c;采用PLC控制阀门和水泵等电气元件&#xff0c;通过RS485进行数据采集并传输到上位机。通过上位机与下位机的协同控制&#xff0c;实现了数据交互处理和性…

关于力反馈设备应用方向的探讨

力反馈是在虚拟现实 (VR)等模拟环境中通过机动运动或阻力模拟真实世界的物理触觉。大多数人都是通过视频游戏控制器&#xff08;如方向盘或踏板&#xff09;和其他设备&#xff08;如飞行模拟器操纵杆&#xff09;来了解力反馈效果。但我们都知道该技术的用途远不止于游戏。 触…

ENSP中OSPF配置

题目 划分网段&#xff0c;配置ip OSPF配置按照区域划分&#xff0c;这个网段也要按照区域个数划分&#xff0c;如这一题&#xff0c;分成两个区域&#xff0c;所以将192.168.1.0/24划分先为两个网段&#xff0c;然后在具体的划分区域中的网段。 以交换机为中心的三条线属于一…

探索AI人才培养新范式,合合信息与同济大学软件学院签署产教融合人才培养协议

随着科学技术的发展&#xff0c;促进人工智能产业与高校人才培养相融合&#xff0c;正成为业界关注的焦点。7月3日&#xff0c;上海合合信息科技股份有限公司&#xff08;以下简称&#xff1a;合合信息&#xff09;与同济大学软件学院“产教融合人才培养签约暨创新实践基地”揭…

模式物种葡萄基因组(T2T)--文献精读29

The complete reference genome for grapevine (Vitis vinifera L.) genetics and breeding 葡萄&#xff08;Vitis vinifera L.&#xff09;遗传学和育种的完整参考基因组 摘要 葡萄是全球最具经济重要性的作物之一。然而&#xff0c;以往版本的葡萄参考基因组通常由成千上万…

Qt/C++项目积累: 2.主机监控器 - 2.2 历史功能实现

修订历史&#xff1a; 20240711&#xff1a;初始表设计&#xff0c;采用sqlite 正文&#xff1a; 关于历史数据存储&#xff0c;考虑的是用数据库来完成&#xff0c;目前考虑使用Sqlite和mysql&#xff0c;先用sqlite来实现&#xff0c;设计表过程如下&#xff1a; 机器总览…

【栈和队列OJ题】

栈和队列OJ题 文章目录 栈和队列OJ题1. 用队列实现栈2. 用栈实现队列3. 括号匹配问题4. 循环队列 1. 用队列实现栈 OJ链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 好的&#xff0c;我们一起来看一下题目&#xff0c;题目是这样说的 思路&…

IDEA实现热部署

什么是热部署&#xff1f; 热部署&#xff08;Hot Deployment&#xff09;是指在应用程序运行过程中&#xff0c;无需停止整个应用程序或重新启动服务器&#xff0c;就能够部署新的代码、资源或配置文件&#xff0c;使其立即生效。这种部署方式有助于提高开发效率和系统的可用性…

这些免费看电视的直播软件,还能免费追剧的app,需要的收藏!

想看中央台和地方卫视的电视直播app有什么呢&#xff1f;支持手机和智能电视的电视直播软件有哪些&#xff1f;今天要跟大家聊聊那些让人眼前一亮的电视直播软件&#xff0c;特别是2024年还能免费看电视直播的神器&#xff0c;让家里的老人也能享受到精彩的电视节目&#xff0c…

无线领夹麦克风哪个牌子好,热门无线麦克风十大排名推荐

​在这个信息爆炸的时代&#xff0c;声音的传递变得愈发重要。无论是直播中的激情解说&#xff0c;还是视频创作中的精彩对白&#xff0c;亦或是远程会议中的清晰发言&#xff0c;一款出色的无线领夹麦克风都能成为你的得力助手。今天&#xff0c;就让我们一同探索多款备受瞩目…

【测开能力提升-fastapi框架】fastapi模版引擎简单使用

1.6 通过模版引擎返回HTM页面 import uvicorn from fastapi import FastAPI, Request from fastapi.templating import Jinja2Templatesapp FastAPI()# 初始化模版引擎存放位置 templates Jinja2Templates(directory"templates")app.get("/") async def…

在Office里面无缝使用任何一家AI大模型,免费的!

昨天一个朋友说他在Word里面&#xff0c;用了一个插件&#xff0c;可以在右侧和AI对话&#xff0c;然后把AI生成的内容载入到左边的文档中。 我当时心理的想法&#xff1a;我这是穿越了吗&#xff1f;这不是我去年2月就实现&#xff0c;然后又扔掉的功能吗&#xff1f; 是的&a…