欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Python机器学习】1.7. 逻辑回归理论(进阶):多维度(因子)逻辑回归问题、决策边界、交叉熵损失函数、最小化损失函数

【Python机器学习】1.7. 逻辑回归理论(进阶):多维度(因子)逻辑回归问题、决策边界、交叉熵损失函数、最小化损失函数

2025/3/10 11:10:31 来源:https://blog.csdn.net/weixin_71793197/article/details/146084954  浏览:    关键词:【Python机器学习】1.7. 逻辑回归理论(进阶):多维度(因子)逻辑回归问题、决策边界、交叉熵损失函数、最小化损失函数

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

1.7.1. 多维度(因子)逻辑回归问题

在上一篇文章 1.6. 逻辑回归理论(基础) 中我们讨论了简单的逻辑回归问题。这篇文章我们来讨论复杂的逻辑回归问题:
请添加图片描述

原来我们只有一个维度(比如说小明的余额),但这个图里我们有两个维度——x_1x_2

虽然这个图看上去仍然是一个二维图像,但是它的两个轴都是输入变量。实际的输出是图中的三角形和圆形。

也就是说,这里的目标是通过x_1x_2去分辨三角形和圆形。

怎么去求解呢?对于逻辑回归问题肯定得用逻辑函数:
P ( x ) = 1 1 + e − x P(x) = \frac{1}{1 + e^{-x}} P(x)=1+ex1
但是这个函数的参数只有一个,所以我们得改一下:
P ( x ) = 1 1 + e − g ( x ) g ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 \begin{aligned} P(x) &= \frac{1}{1 + e^{-g(x)}} \\ g(x) &= \theta_0 + \theta_1 x_1 + \theta_2 x_2 \end{aligned} P(x)g(x)=1+eg(x)1=θ0+θ1x1+θ2x2

  • e的指数中的x替换为了g(x)
  • g(x)实际上是一个线性回归方程,代表了图中的蓝色线,其中:
    • θ_0截距(bias)
    • θ_1, θ_2特征的权重(回归系数)
    • x_1, x_2是输入的两个特征(因子)

不仅如此,这里我们只展示了有两个输入变量的情况,g(x)还可以有更多的输入变量:
g ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n g(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n g(x)=θ0+θ1x1+θ2x2++θnxn

g(x),也就是蓝色这条线通过点(4,0)(0,4),可以表示为:
x 1 + x 2 = 4 x_1 + x_2 = 4 x1+x2=4
就可以等价地写为:
g ( x ) = − 4 + x 1 + x 2 = 0 g(x) = -4 + x_1 + x_2 = 0 g(x)=4+x1+x2=0

这条线又叫决策边界(decision boundary)。有了决策边界之后,我们就能把三角形和圆形的分开:
g ( x ) = − 4 + x 1 + x 2 > 0 : 三角形 g ( x ) = − 4 + x 1 + x 2 < 0 : 圆形 \begin{aligned} g(x) = -4 + x_1 + x_2 > 0 & : \text{ 三角形} \\ g(x) = -4 + x_1 + x_2 < 0 & : \text{ 圆形} \end{aligned} g(x)=4+x1+x2>0g(x)=4+x1+x2<0: 三角形: 圆形

对于多维度(因子)的逻辑回归问题来说,最重要也是最难的步骤就是找出这条决策边界。


这时候再增加一点难度,如果决策边界是圆怎么办?
请添加图片描述

首先确定逻辑函数是保持不变的:
P ( x ) = 1 1 + e − g ( x ) P(x) = \frac{1}{1 + e^{-g(x)}} P(x)=1+eg(x)1
目标是要找出决策曲线,也就是逻辑函数中的g(x)这一项的表达式。

这里我提供两种解法:

方法1: 根据圆的表达式来推导

其实很简单,大家还记得圆在平面直角坐标系的表达式吗:
( x − a ) 2 + ( y − b ) 2 = r 2 (x - a)^2 + (y - b)^2 = r^2 (xa)2+(yb)2=r2
由于这里圆心在原点上,所以可以化简为:
x 2 + y 2 = r 2 x^2 + y^2 = r^2 x2+y2=r2
因为图中决策曲线这个圆过了(1,0)(-1,0)(0,1)(0,-1),所以知道半径r = 1,代入原式:
x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1
再移项即可得:
g ( x ) = − 1 + x 2 + y 2 = 0 g(x) = -1 + x^2 + y^2 = 0 g(x)=1+x2+y2=0
这就是我们所要的决策边界解析式,由此可得:

g ( x ) = − 1 + x 1 2 + x 2 2 { > 0 , 三角形 < 0 , 圆形 g(x) = -1 + x_1^2 + x_2^2 \begin{cases} > 0, & \text{三角形} \\ < 0, & \text{圆形} \end{cases} g(x)=1+x12+x22{>0,<0,三角形圆形


方法2: 从回归方程推导

我们都知道线性回归方程基本式长这样:
g ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 g(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 g(x)=θ0+θ1x1+θ2x2
但是我们这里是有曲线的,所以不可能是线性的。也就是说,x的指数不可能只有1次。所以我们要引入二次项:
g ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 g(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_1^2 + \theta_4 x_2^2 g(x)=θ0+θ1x1+θ2x2+θ3x12+θ4x22

  • x_12和`x_2`2是新的非线性特征,用于捕捉曲线(尤其是圆形)模式
  • 这样,我们的决策边界可以不再是直线,而是更复杂的形状,比如椭圆或圆

如果我们进一步简化,只保留二次项(假设θ_1 = θ_2 = 0),我们得到:
g ( x ) = θ 0 + θ 3 x 1 2 + θ 4 x 2 2 g(x) = \theta_0 + \theta_3 x_1^2 + \theta_4 x_2^2 g(x)=θ0+θ3x12+θ4x22
θ_0 = -r^2 θ_3 = θ_4 = 1,我们得到:
g ( x ) = x 1 2 + x 2 2 − r 2 g(x) = x_1^2 + x_2^2 - r^2 g(x)=x12+x22r2
g(x) = 0时:
x 1 2 + x 2 2 = r 2 x_1^2 + x_2^2 = r^2 x12+x22=r2
这正是圆的方程!然后我们就可以根据法1的逻辑推理到g(x)的解析式了。


从这些例子我们可以看出:逻辑回归结合多项式边界函数可以解决复杂的分类问题。

1.7.2. 逻辑回归的本质

我们把逻辑回归的函数放在这里:
P ( x ) = 1 1 + e − g ( x ) g ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . \begin{aligned} P(x) &= \frac{1}{1 + e^{-g(x)}} \\ g(x) &= \theta_0 + \theta_1 x_1 + \theta_2 x_2 + ... \end{aligned} P(x)g(x)=1+eg(x)1=θ0+θ1x1+θ2x2+...
根据刚才的讲解,我们清楚了:逻辑回归问题的关键在于寻找决策边界g(x),而寻找逻辑边界g(x)的关键就在于寻找参数θ_0θ_1θ_2

有没有觉得熟悉?寻找g(x)中各项的参数不就是线性回归模型在做的事吗!那我可不可以用最小化损失函数呢:
minimize { 1 2 m ∑ i = 1 m ( y i ′ − y i ) 2 } \textit{minimize} \left\{ \frac{1}{2m} \sum_{i=1}^{m} (y'_i - y_i)^2 \right\} minimize{2m1i=1m(yiyi)2}

会让你感到失望的是,这样做其实是不行的。因为分类问题标签和预测结果都是离散的点(比如说只有0和1两个值),不是连续的值,使用它无法求导,也就无法寻找到极小值点。

但是思路没有问题,我们就是要找一个损失函数并让它的结果尽可能的小。John Nelder和Robert Wedderburn在1972年的论文《Generalized Linear Models》中提出了交叉熵损失(Cross-Entropy Loss)函数:
$$
J_i =
\begin{cases}

  • \log(P(x_i)), & \text{if } y_i = 1 \
  • \log(1 - P(x_i)), & \text{if } y_i = 0
    \end{cases}
    $$
    它的核心思想是:
  • y = 1时(也就是真实情况是1),你计算出的P(x)(也就是你的模型预估出的情况)越接近1就代表损失越小,越接近0就代表损失越大
  • y = 0时(也就是真实情况是1),你计算出的P(x)(也就是你的模型预估出的情况)越接近0就代表损失越小,越接近1就代表损失越大
    请添加图片描述

把两个方程式结合起来,转化为下面这个方程,获得交叉熵损失的平均值:
J = 1 m ∑ i = 1 m J i = − 1 m [ ∑ i = 1 m ( y i log ⁡ P ( x i ) + ( 1 − y i ) log ⁡ ( 1 − P ( x i ) ) ) ] J = \frac{1}{m} \sum_{i=1}^{m} J_i = -\frac{1}{m} \left[ \sum_{i=1}^{m} \left( y_i \log P(x_i) + (1 - y_i) \log (1 - P(x_i)) \right) \right] J=m1i=1mJi=m1[i=1m(yilogP(xi)+(1yi)log(1P(xi)))]
而其中:
P ( x ) = 1 1 + e − g ( x ) g ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . \begin{aligned} P(x) &= \frac{1}{1 + e^{-g(x)}} \\ g(x) &= \theta_0 + \theta_1 x_1 + \theta_2 x_2 + ... \end{aligned} P(x)g(x)=1+eg(x)1=θ0+θ1x1+θ2x2+...
所以说逻辑回归最核心的就是:
minimize { J ( θ ) } \textit{minimize} \left\{ J(\theta) \right\} minimize{J(θ)}

1.7.3. 最小化损失函数

我们知道了如何计算损失之后,又该如何最小化它呢?其实它的思路跟线性回归的梯度下降法差不多。

我们先来回顾一下梯度下降法:
p i + 1 = p i − α ∂ ∂ p i f ( p i ) p_{i+1} = p_i - \alpha \frac{\partial}{\partial p_i} f(p_i) pi+1=piαpif(pi)

  • p_i+1是更新后的参数值,由当前值p_i进行调整
  • α(学习率):控制每次更新的步长
  • α后面跟的那一串是函数f(p) 在当前点p_i处的梯度(偏导数),表示f(p)在该点变化的方向和大小。

逻辑回归也要运用梯度下降法:
{ temp θ j = θ j − α ∂ ∂ θ j J ( θ ) θ j = temp θ j \left\{ \begin{array}{l} \textit{temp}_{\theta_j} = \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta) \\ \theta_j = \textit{temp}_{\theta_j} \end{array} \right. {tempθj=θjαθjJ(θ)θj=tempθj
也是一样的通过系数减梯度不断重复计算直到函数收敛。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词