逻辑回归

本文深入解析了对数几率回归模型的核心原理,包括sigmod函数的应用、对数几率的概念、模型参数的求解过程及损失函数推导。同时探讨了模型在分类任务中的评估方法,如错误率、精度、查准率和查全率,以及解决类别不平衡问题的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理与预测函数

我们使用sigmod函数作为“广义线性模型”的单调可微函数g(.),得到
y = 1 1 + e − ( w T x + b ) ( 1 ) y=\frac {1}{1+e^{-(w^T x+b)}} \qquad (1) y=1+e(wTx+b)1(1)
上式可变换为
l n y 1 − y = w T x + b ( 2 ) ln \frac{y}{1-y}=w^Tx+b \qquad (2) ln1yy=wTx+b(2)
若将y视为样本x作为正例的可能性,则1-y是其反例的可能性。两者的比值\( \frac{y}{1-y} \)称为几率,反映了x作为正例的相对可能性,对几率去对数得到对数几率
l n y 1 − y ln \frac {y}{1-y} ln1yy

由(2)式可知,实际上是用线性回归模型的预测结果去逼近真实标记的对数几率,其模型称为“对数几率回归

我们来看如何求w和b,我们把(1)式的y视为类后验概率估计p(y=1|x),在(2)式重写为

l n p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) = w T x + b ln \frac {p(y=1|x)}{p(y=0|x)} =w^Tx+b lnp(y=0x)p(y=1x)=wTx+b

显然有
p ( y = 1 ∣ x ) = e w T x + b 1 + e w T x + b p(y=1|x)=\frac{e^{w^T x+b}}{1+e^{w^T x+b}} p(y=1x)=1+ewTx+bewTx+b
p ( y = 0 ∣ x ) = 1 1 + e w T x + b p(y=0|x)=\frac{1}{1+e^{w^T x+b}} p(y=0x)=1+ewTx+b1
预测函数,拿我们讨论的最标准的二分类来说,分别计算p(y=1|x),p(y=0|x)哪个条件概率大就分到哪一类

损失函数推导

对于给定的数据集 \( {(x_i,y_i)}^N_{i=1},y \in {0,1} \),

设P(Y=1|x)=g(x),P(Y=0|x)=1-g(x)

p ( y ∣ x ) = { g ( x ) , if  y  is 1 1 − g ( x ) , if  y  is 0 p(y|x)= \begin{cases} g(x), & \text {if $y$ is 1} \\ 1-g(x), & \text{if $y$ is 0} \end{cases} p(yx)={g(x),1g(x),if y is 1if y is 0

可以合在一起写为
p ( y ∣ x ) = [ g ( x i ) ] y i [ 1 − g ( x i ) ] 1 − y i p(y|x)= [g(x_i)]^{y_i} [1-g(x_i)]^{1-y_i} p(yx)=[g(xi)]yi[1g(xi)]1yi
两边取对数为
l o g   p ( y ∣ x ) = y i l o g   g ( x i ) + ( 1 − y i ) l o g   ( 1 − g ( x i ) ) log\ p(y|x) = y_i log\ g(x_i)+(1-y_i)log\ (1- g(x_i)) log p(yx)=yilog g(xi)+(1yi)log (1g(xi))
p(y|x)的值需要最大化,但是我们损失函数需要最小化,所以前面加一个负号,就变成
L ( w , b ) = − { y i l o g   g ( x i ) + ( 1 − y i ) l o g   ( 1 − g ( x i ) ) } L(w,b)=-\{ y_i log\ g(x_i)+(1-y_i)log\ (1- g(x_i))\} L(w,b)={yilog g(xi)+(1yi)log (1g(xi))}
就是交叉熵损失函数,其基本形式为
H ( p , q ) = − ∑ x p ( x ) l n ( q ( x ) H(p,q)=-\sum_x p(x)ln(q(x) H(p,q)=xp(x)ln(q(x)
反映了两个概率分布之间的差异信息,其中p表示真实分布,q表示非真实分布,即反应我们推测的分布和真实分布的差异大小信息。

损失函数求解

似然函数为
∏ i = 1 N [ g ( x i ) ] i y [ 1 − g ( x i ) ] 1 − y i \prod^N_{i=1} [g(x_i)]^y_i [1-g(x_i)]^{1-y_i} i=1N[g(xi)]iy[1g(xi)]1yi
对数似然函数为
L ( w ) = Σ i = 1 N [ y i l o g ( x i ) + ( 1 − y i ) l o g ( 1 − g ( x i ) ) ] L(w)=\Sigma ^N_{i=1} [y_ilog(x_i)+(1-y_i)log(1-g(x_i))] L(w)=Σi=1N[yilog(xi)+(1yi)log(1g(xi))]
= Σ i = 1 N [ y i l o g g ( x i ) 1 − g ( x i ) + l o g ( 1 − g ( x i ) ) ] =\Sigma^N_{i=1}[y_ilog \frac {g(x_i)}{1-g(x_i)} + log(1-g(x_i))] =Σi=1N[yilog1g(xi)g(xi)+log(1g(xi))]
= Σ i = 1 N [ y i ( w ∗ x i ) − l o g ( 1 + exp ⁡ ( w ∗ x i ) ) ] =\Sigma^N_{i=1}[y_i (w \ast x_i)-log(1+\exp(w \ast x_i))] =Σi=1N[yi(wxi)log(1+exp(wxi))]
对L(w)求最大值,得到w的估计值,常用梯度下降和牛顿法解决

如果采用梯度下降,更新公式为

正则化

看这里
https://sumenpuyuan.github.io/2018/12/05/改善神经网络:第一周深度学习的实用层面/#zhengze

模型评估

错误率和精度

错误率和精度,这是分类任务中最常用的两种性能度量, 既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样 本总数的比例,精度则是分类正确的样本数占样本总数的比例.

查准率,查全率

错误率和精度虽常用,但并不能满足所有任务需求.以西瓜问题为例,假定 瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡 量了有多少比例的瓜被判别错误.但是若我们关心的是"挑出的西瓜中有多少 比例是好瓜",或者"所有好瓜中有多少比例被挑了出来 那么错误率就不够用了’这时需要使用其他的性能度量.
类似的需求在信息检索、 Web搜索等应用中经常出现?例如在信息检索 中,我们经常会关心"检索出的信息中有多少比例是用户感兴趣的" 用 户感兴趣的信息中有多少被检索出来了 查准率和查全率是更为适用于此类需求的性能度量.
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划 分为真正例(true positive)、假正例(false positive)、真反例(true negative)、 假反例(false negative)四种情形,令 TP、 FP、 TN、 FN 分别表示其对应的 样例数,则显然有 TP+FP+TN+FN=样例总数.分类结果的"混淆矩 阵" (confusion matrix)如下图所示

查准率P和查全率R分别定义为

P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

类别不平衡问题

问题定义

类别数据不均衡是分类任务中一个典型的存在的问题。简而言之,即数据集中,每个类别下的样本数目相差很大。例如,在一个二分类问题中,共有100个样本(100行数据,每一行数据为一个样本的表征),其中80个样本属于class 1,其余的20个样本属于class 2,class 1:class2=80:20=4:1,这便属于类别不均衡。当然,类别不均衡问同样会发生在多分类任务中。

解决方法

  1. 扩增数据集
  2. 尝试其他评价指标,如查全率或查准率
  3. 对数据重采样,小分类样本过采样,大分类样本欠采样
  4. 产生人工数据样本,SMOTE采样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值