5 逻辑回归

step1 逻辑回归的函数集

在这里插入图片描述
将函数集可视化:
在这里插入图片描述

逻辑回归模型和线性回归的对比:
在这里插入图片描述

step2 定义损失函数

在这里插入图片描述
利用最大似然估计找到最合适的w,bw,bw,b .也就是w∗,b∗w^*,b^*w,b
将训练集数字化(1对应class1,0对应class 2),并且w∗,b∗=argmaxw,bL(w,b)w^*,b^*=arg max_{w,b}L(w,b)w,b=argmaxw,bL(w,b)求max通过取负自然对数转化为求min :
在这里插入图片描述
−lnL(w,b)-lnL(w,b)lnL(w,b)改写:
![[attachment/Pasted image 20260322224922.png]] 在这里插入图片描述

图中蓝色划线部分代表两个伯努利分布(Bernoulli distribution,0-1分布或两点分布)的交叉熵(cross entropy)

交叉熵:假设有两个分布p和q,这两个分布之间交叉熵的计算方式就是H(p,q)H(p,q)H(p,q)
交叉熵的值表示这两个分布有多接近。如果两个分布一摸一样,那么计算出来的交叉熵就是0

将逻辑回归的损失函数与线性回归的损失函数做对比:
在这里插入图片描述

对于逻辑函数的损失函数的直观理解:找到参数w,bw,bw,b ,将 模型输出和y^n\hat{y}^ny^n 看作两个伯努利分布,这两个分布越接近越好。

step3 找最好函数

利用梯度下降求解:
先分别对lnfw,b(xn)、ln(1−fw,b(xn)lnf_{w,b}(x^n)、ln(1-f_{w,b}(x^n)lnfw,b(xn)ln(1fw,b(xn)wiw_iwi的偏微分
在这里插入图片描述

![[attachment/Pasted image 20260323085258.png]]

然后求整个LLL损失函数对wiw_iwi 的偏微分
![[attachment/Pasted image 20260323085326.png]]

WiW_iWi 的更新取决于学习率ηηηxinx_i^nxin 和紫色划线部分(预测值与真实值的差距) 对于如何挑选最好的 function,逻辑回归与线性回归的对比:

  • 逻辑回归:真实值y^\hat{y}y^ 只能是0或者1,模型输出(functionfunctionfunction)范围确定,只能在(0,1)之间
  • 线性回归:真实值与模型输出都可以是任意值
    在这里插入图片描述

损失函数:为什么不用线性回归的平方误差

对于梯度下降寻找最优function的停止点是微分为0的地方。对逻辑回归如果使用平方误差作为损失函数:
在这里插入图片描述

假设 yn=1y^n=1yn=1 ,如果 fw,b(xn)=1f_w,_b(x_n)=1fw,b(xn)=1,就是非常接近target,会导致偏微分中第一部分为0,从而偏微分为0;而 fw,b(xn)=0f_w,_b(x_n)=0fw,b(xn)=0,会导致第二部分为0,从而偏微分也是0。→\rightarrow 参数停止更新,从而导致找到w,bw,bw,b不是w∗,b∗w^*,b^*w,b
对于w,bw,bw,b参数变化,对这两种损失函数画图:

在这里插入图片描述

  • 交叉熵:距离y^\hat{y}y^ 真实值越远,微分越大,更新参数更快
  • 平方差:距离真实值很远的时候,微分很小,导致参数更新缓慢,效果不好

判别模型 vs 生成模型

逻辑回归的方法→\rightarrow Discriminative(判别方法)
使用高斯分布描述后验概率 →\rightarrow Generative (生成方法)
两者函数集都是一样的:
在这里插入图片描述

  • 逻辑回归:直接用梯度下降找出w,bw,bw,b
  • 概率生成模型:先通过最大似然估计找到μ1、μ2,∑−1\mu^1、\mu^2,\sum^{-1}μ1μ2,1 后,计算w,bw,bw,b
    逻辑回归模型与概率生成模型找出来的w,bw,bw,b不一样的
    在这里插入图片描述

图中只考虑了两个因素,如果考虑所有因素。逻辑回归的效果更好。

一个好玩的例子

在这里插入图片描述

假设:训练数据中有13组数据,类别1为(1,1),类别二为(1,0),(0,1),(0,0).
测试数据给(1,1),人类判断自然是类别1.但如果用朴素贝叶斯分类器(Naive Bayes):
朴素贝叶斯分类器:xxx属于CiC_iCi的概率等于每个特征属于CiC_iCi 概率的乘积。
在这里插入图片描述

计算出P(C1∣x)P(C_1|x)P(C1x) 的结果小于0.5,也就是说朴素贝叶斯分类器来说,测试数据是属于类别2
造成原因:训练集的数据量太小

判别方法不一定比生成方法好

  • 训练数据量很小:
    • 判别方法没有做任何假设,看着训练集来训练,训练数量越大,error越小
    • 生成方法会自己脑补,受到数据集的影响比较小 →\rightarrow 对于噪声数据有更好的鲁棒性

多类别分类

Softmax

假设:三个类别,每个类被都有自己的w,bw,bw,b
在这里插入图片描述

z1,z2,z3z_1,z_2,z_3z1,z2,z3 放进softmax的方程中:ezi∑j=1ezj\frac{e^{z_i}}{\sum_{j=1}e^{z_j}}j=1ezjezi
原本ziz_izi 可以是任意值,经过softmax处理后被限制,都在0和1之间。softmax做的事就是对最大值进行强化
上图中,输入xxx属于类别1的概率是0.88,属于类别2的概率是0.12,属于类别3的概率是0.softmax的输出是用于估计后验概率(posterior probability),为什么可以?

为什么softmax的输出可以用来估计后验概率?

1.生成模型推导
假设3个类别,这3个类别都是高斯分布,共用一个协方差矩阵。使用上篇提到的方法进行推导能够推导出softmax
2.指数簇分布的特性
信息论学科中有Maximum Entropy(最大熵)的概念,也可以推出softmax。对信息论学科中的最大熵,指数簇分布的最大熵等价于其指数形式的最大似然界,二项式的最大熵解等价于其指数形式的最大似然,多项式的最大熵等价于多项式分布指数形式的最大似然。
指数簇分布最大熵的特性 →\rightarrow sigmoid函数

softmax中真实值的定义

![[attachment/Pasted image 20260323141234.png]]

直接定义y1^,y2^,y3^\hat{y_1},\hat{y_2},\hat{y_3}y1^,y2^,y3^ 数值会导致类别1、类别2、类别3存在某种关系。
y^\hat{y}y^定义为矩阵就可以避免这个问题。

逻辑回归的限制

在这里插入图片描述

对于这样的数据使用逻辑回归处理的话,会出现下面的情况:
在这里插入图片描述

始终无法实现将同一类别的数据分在一起

特征转换

在这里插入图片描述

  • x1x_1x1 :转化为到点(0,0)的距离
  • x2x_2x2 :转化为到点(1,1)的距离
    经过这样的转换可以进行逻辑回归。但是一般特征转换的方式不好找,并且这种方式过于依赖人工寻找,而不是机器。所以…

初级逻辑回归模型

可以将很多的逻辑回归连接到一起,就可以实现特征转换
在这里插入图片描述

图中使用两个逻辑回归对x1,x2x_1,x_2x1,x2进行特征转换得到x1′,x2′x_1^{'},x_2^{'}x1,x2 ,然后将转换后的特征再输入一个逻辑回归进行分类。
在这里插入图片描述

最终实现可以通过逻辑回归进行分类的目的。

深度学习

在这里插入图片描述

一个逻辑回归的输入可以来源于其他逻辑回归的输出,这个逻辑回归的输出可以是其他逻辑回归的输入。

  • 神经元(Neuron):每个逻辑回归陈伟一个神经元
  • 神经网络(Neural Network):这些神经元连接起来的网络
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐