【Python机器学习】1.6. 逻辑回归理论(基础):逻辑函数、逻辑回归的原理、分类任务基本框架、通过线性回归求解分类问题

喜欢的话别忘了点赞、收藏加关注哦(关注即可查看全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=^・ω・^=)

1.6.1. 如何求解分类问题?

举个简单的例子:根据余额,判断小明是否会去看电影。

从这幅图中我们可以看到:

  • y = 0代表不看电影、y = 1代表去看电影
  • 余额为1、2、3、4、5时,去看电影(正样本)
  • 余额为-1、-2、-3、-4、-5时,不看电影(负样本)

1.6.2. 分类任务基本框架

那么如何让计算器来进行这样的分类任务呢?我们需要数学的帮助:
{ y = f ( x 1 , x 2 ⋯ x n ) 判断为类别 N , 如果 y = n \left\{ \begin{array}{l} y = f(x_1, x_2 \cdots x_n) \\ \text{判断为类别 } N, \text{ 如果 } y = n \end{array} \right. {y=f(x1,x2⋯xn)判断为类别 N, 如果 y=n

分类任务分成两步:

  • 第一步是去求解预测出的结果,这个结果还不是我们最终想要的类别,而是类似于0、1、2这样的数字(离散的数)。
  • 第二步就是根据这个数字来判断它属于什么类别,比如说0的时候代表不看电影,1的时候代表看电影

具体到我们这里的看电影这个例子中,数学表述就是:
y = f ( x ) ∈ { 0 , 1 } y = f(x) \in \{0,1\} y=f(x)∈{0,1}
f(x)的结果,也就是y,属于{0, 1},也就是说要么是0,要么是1。而在上文的图中我们也说过了y = 0代表不看电影(负样本)、y = 1代表去看电影(正样本).

那么此时这个例子的核心问题就转变为了寻找f(x)

1.6.3. 通过线性回归求解分类问题

我们先采用一个非常简单的模型,就是我们之前讲的线性回归模型(原理详见 1.2. 线性回归理论)。使用这个模型的目的在于预测点的分布情况。

我们首先不管是正样本还是负样本,我们现在要做的只是把点的分布给模拟出来:

拟合出来的线是y = 0.1364x + 0.5,这就是展现点可能的分布的函数。

这条线上的点不只有0和1怎么办呢?很简单,我们只要取0和1的中点------0.5即可。只要是分布函数的y值大于0.5,我们就把它认定为是1,也就是去看电影;反之就认定为0,不会去看电影。

更专业地说,我们会把0.5叫做阈值 。而这种把很多值(分布函数上的值)根据阈值最终整理为两个值(0或1)的操作叫做二值化

这样一来我们就完成了一个非常简单的分类任务的预测。我们再来总结一下步骤:
( 1 ) Y = 0.1364 x + 0.5 ( 2 ) y = f ( x ) = { 1 , Y ≥ 0.5 0 , Y < 0.5 \begin{aligned} (1) \quad Y &= 0.1364x + 0.5 \\ (2) \quad y &= f(x) = \begin{cases} 1, & Y \geq 0.5 \\ 0, & Y < 0.5 \end{cases} \end{aligned} (1)Y(2)y=0.1364x+0.5=f(x)={1,0,Y≥0.5Y<0.5

  • 第一步是找出f(x),也就是这里的Y
  • 第二步就是确定阈值,根据阈值来进行二次筛选

我们把Y带入原来的数据点,看一下效果:

x Y(x)分布函数的值 y(x)二值化之后的值 实际y
-5 -0.18 0 0
-4 -0.05 0 0
-3 0.09 0 0
-2 0.23 0 0
-1 0.36 0 0
1 0.64 1 1
2 0.77 1 1
3 0.91 1 1
4 1.05 1 1
5 1.18 1 1

这么一看线性回归的效果好像还不错,但其实它的局限性还蛮大的。

1.6.4. 线性回归求解分类问题的局限性

线性回归的主要问题在于:样本量变大,准确率就会下降。

原本的数据中x的值仅在-5到5。而这时如果我们添加一个比较远的点,比如(50, 1),就会对线性回归计算出的线产生巨大的影响。

我们还是一样的把Y带入原来的数据点,看一下效果:

x Y(x)分布函数的值 y(x)二值化之后的值 实际y
-5 0.39 0 0
-4 0.41 0 0
-3 0.43 0 0
-2 0.44 0 0
-1 0.46 0 0
1 0.49 0 1
2 0.51 1 1
3 0.52 1 1
4 0.54 1 1
5 0.55 1 1
50 1.26 1 1
x = 1时,由于Y(x)的结果0.49,小于0.5,导致二值化之后y(x) = 0,但是实际情况是x = 1y = 1

1.6.5. 逻辑回归的原理

逻辑回归对于求解分类问题的第一步进行了优化:
( 1 ) Y = 1 1 + e − x ( 2 ) y = f ( x ) = { 1 , Y ≥ 0.5 0 , Y < 0.5 \begin{aligned} (1) \quad Y &= \frac{1}{1 + e^{-x}} \\ (2) \quad y &= f(x) = \begin{cases} 1, & Y \geq 0.5 \\ 0, & Y < 0.5 \end{cases} \end{aligned} (1)Y(2)y=1+e−x1=f(x)={1,0,Y≥0.5Y<0.5

之所以叫做逻辑回归是因为第一步的这个函数叫做Sigmoid函数 (逻辑函数),它将输入x映射到 (0,1)之间

它根据数据的特征或属性,计算其归属于某一类别的概率P(x),根据概率数值来判断其所属类别。

它的主要应用场景就是二分类问题(也就是只有两种可能性的问题)。

它的数学表达式是:
P ( x ) = 1 1 + e − x y = { 1 , P ( x ) ≥ 0.5 0 , P ( x ) < 0.5 \begin{aligned} P(x) &= \frac{1}{1 + e^{-x}} \\ y &= \begin{cases} 1, & P(x) \geq 0.5 \\ 0, & P(x) < 0.5 \end{cases} \end{aligned} P(x)y=1+e−x1={1,0,P(x)≥0.5P(x)<0.5

  • y为类别结果
  • P为概率分布
  • x为特征值

它的效果如下:

如果我们使用逻辑函数作为Y

x Y(x)使用逻辑函数 y(x)二值化之后的值 实际y
-5 0.01 0 0
-4 0.02 0 0
-3 0.05 0 0
-2 0.12 0 0
-1 0.27 0 0
1 0.73 1 1
2 0.88 1 1
3 0.95 1 1
4 0.98 1 1
5 0.99 1 1
50 1.00 1 1
1000 1.00 1 1

可以看到它并不会因为数据量增多而导致准确率下降。

逻辑回归只是用于解决分类问题的一种模型(你可以使用其它模型,只是效果可能没这么好)。其实它的思想与线性回归差不多,只不过换用了逻辑函数。

1.6.6. 利用逻辑函数解问题

我们就用逻辑回归解决一下本文开篇提出的那个问题:根据余额,判断小明是否会去看电影(余额-10、100的情况下)

只需要带入逻辑方程即可:


余额为-10的情况下:
P ( x = − 10 ) = 1 1 + e 10 = 4.5 × 1 0 − 5 < 0.5 P(x = -10) = \frac{1}{1 + e^{10}} = 4.5 \times 10^{-5} < 0.5 P(x=−10)=1+e101=4.5×10−5<0.5

由于计算出的值小于0.5,所以会被二值化为0,也就是不会去看电影。


余额为100的情况下:
P ( x = 100 ) = 1 1 + e − 100 = 1 > 0.5 P(x = 100) = \frac{1}{1 + e^{-100}} = 1 > 0.5 P(x=100)=1+e−1001=1>0.5

由于计算出的值大于0.5,所以会被二值化为1,也就是会去看电影。

相关推荐
新智元3 分钟前
1 次搭建完胜 1 亿次编码,MCP 硅谷疯传!Anthropic 协议解锁智能体「万能手」
人工智能·openai
程序员~小强5 分钟前
让知识触手可及!基于Neo4j的机械设备知识图谱问答系统
人工智能·python·django·知识图谱·neo4j
机器之心11 分钟前
稚晖君的「好东西」揭晓!首个通用具身基座模型,机器人告别「看得懂做不来」
人工智能·openai
大刘讲IT18 分钟前
Zabbix+AI大模型实战:智能故障诊断与工单预警系统设计
人工智能·zabbix
DuDuTalk18 分钟前
DuDuTalk接入DeepSeek,重构企业沟通数字化新范式
大数据·人工智能
DanCheng-studio19 分钟前
智科 机器学习毕业设计题目指导
python·毕业设计·毕设
ZhuBin36523 分钟前
推测gpt4o视觉皮层建立的过程
人工智能·深度学习·计算机视觉
大数据追光猿26 分钟前
Qwen 模型与 LlamaFactory 结合训练详细步骤教程
大数据·人工智能·深度学习·计算机视觉·语言模型
何仙鸟43 分钟前
深度学习网格搜索实战
人工智能·深度学习
java1234_小锋1 小时前
一周学会Flask3 Python Web开发-SQLAlchemy定义数据库模型
python·flask·sqlalchemy·flask3