Logistic回归6—多类分类任务

多类分类任务的实现方式:1对其他

∙ \bullet 一对其他(One-vs-Rest, OVR)。对每个类别c,训练一个Logistic回归分类器 f w c ( x ) f_{w}^c(\mathbf x) fwc(x),预测 y = c y=c y=c的概率。
f w c ( x ) = P ( y = c ∣ x , w ) , c = 1 , 2 , 3 f_{w}^c(\mathbf x) = P(y=c|\mathbf x, \mathbf w), c=1,2,3 fwc(x)=P(y=cx,w),c=1,2,3
∙ \bullet 每类的模型都有自己的正则参数和权重参数。
∙ \bullet 对新的输入x,选择使得 f w c ( x ) f_{w}^c(\mathbf x) fwc(x)最大的类别作为预测(最大后验估计,MAP):
y ^ = a r g m a x c f w c ( w ) \hat y = argmax_{c} f_{w}^c(\mathbf w) y^=argmaxcfwc(w)

多分类任务的实现方式:多项分布

∙ \bullet 在概率分布中,贝努利(Bernoulli)分布的输出只有两种取值。
∙ \bullet Multinoulli分布,或称为范畴分布(Categorical distribution),输出有K种取值。
∙ \bullet 类似Bernoulli分布描述两分类的概率分布,可用Multinoulli分布描述多类分类的概率分布,其参数为向量 θ = ( θ i , . . . , θ c ) \theta = (\theta_{i},...,\theta_{c}) θ=(θi,...,θc),其中 ∑ c = 1 C θ c = 1 \sum_{c=1}^{C}\theta_{c} = 1 c=1Cθc=1,其中每一个分量 θ c \theta_{c} θc 表示第c个状态的概率。我们用符号 C a t ( y ; θ ) Cat(y;\mathbf \theta) Cat(y;θ)表示
在这里插入图片描述
∙ \bullet 注意:贝努利分布和二项分布是两个不同的概念。
∙ \bullet 将类别y用独热(One Hot)编码(编码为c维向量,当y=c时,第c维为1,其他元素均为0),记为向量 y \mathbf y y
∙ \bullet Multilnoulli分布的概率函数为: C a t ( y ; θ ) = ∏ c = 1 C θ c y c Cat(\mathbf y;\mathbf \theta) =\prod_{c=1}^{C}\theta_{c}^{y_c} Cat(y;θ)=c=1Cθcyc其中 y c y_{c} yc表示向量y的第c个元素。
∙ \bullet 或者用标量形式记为: C a t ( y ; θ ) = ∏ c = 1 C θ c I ( y c ) Cat(\mathbf y;\mathbf \theta) =\prod_{c=1}^{C}\theta_{c}^{I(y_c)} Cat(y;θ)=c=1CθcI(yc)其中 I ( . ) I(.) I(.)为示性函数,当括号中条件满足时,函数值为1,否则为0。

Softmax分类器

∙ \bullet 类似两类分类模型推导,假设输出 y = c y=c y=c的概率可以由 x \mathbf x x的线性组合,再经过sigmoid函数变换得到,则模型为: p ( y = c ∣ x , w ) = e x p ( w T x ) ∑ c ′ = 1 C e x p ( w c ′ T x ) p(y=c|\mathbf x,\mathbf w) = \frac{exp(\mathbf w^T\mathbf x)}{\sum_{c'=1}^{C}exp(\mathbf w_{c'}^T\mathbf x)} p(y=cx,w)=c=1Cexp(wcTx)exp(wTx)
∙ \bullet 上述等式右边为Softmax函数。Softmax函数为Sigmoid函数的推广,讲 C C C维向量的每个元素转换为[0,1]的数,且变换后的元素之和为1:
σ ( z c ) = e z c ∑ c ′ = 1 C e z c ′ \sigma(z_{c}) = \frac{e^{z_{c}}}{\sum_{c'=1}^{C}e^{z_{c'}}} σ(zc)=c=1Cezcezc
∙ \bullet 因此得到的分类器被称为Softmax。但是觉得跟之前的OVR差不多,这里也是C个分类器,经过Softmax转换后,概率最大的那个,仍然能胜出。经过仔细检查,后边有提到OVR的分类器是分别训练,而Softmax中各个分类的参数是整体训练的。
∙ \bullet 将类别y用独热编码编为向量 y \mathbf y y y c = I ( y = c ) y_{c} = I(y=c) yc=I(y=c)
∙ \bullet 向量 μ \mu μ表示multinoulli分布的参数: μ c = p ( y = c ∣ x , w ) = e x p ( w c T x ) ∑ c ′ = 1 C ( w c ′ T x ) \mu_{c} = p(y=c| \mathbf x, \mathbf w) = \frac{exp(\mathbf w_{c}^T \mathbf x)}{\sum_{c'=1}^{C}(\mathbf w_{c'}^T \mathbf x)} μc=p(y=cx,w)=c=1C(wcTx)exp(wcTx)
∙ \bullet μ i c = e x p ( w c T x i ) ∑ c ′ = 1 C ( w c ′ T x i ) \mu_{ic} = \frac{exp(\mathbf w_{c}^T \mathbf x_{i})}{\sum_{c'=1}^{C}(\mathbf w_{c'}^T \mathbf x_{i})} μic=c=1C(wcTxi)exp(wcTxi) y i c y_{ic} yic为第i个样本的分类,则Softmax分类模型的log似然函数为: ζ ( M ) = ∑ i = 1 N l o g ( ∏ c = 1 C μ i c y i c ) \zeta(\mathbf M) = \sum_{i=1}^{N}log(\prod_{c=1}^{C}\mu_{ic}^{y_{ic}}) ζ(M)=i=1Nlog(c=1Cμicyic) = ∑ i = 1 N ∑ c = 1 C y i c l o g ( μ i c ) =\sum_{i=1}^{N}\sum_{c=1}^{C}y_{ic}log(\mu_{ic}) =i=1Nc=1Cyiclog(μic)注意:这里的似然函数省略了 乘积取log = 取log再相加 的那一步
∙ \bullet 定义Softmax损失为: L ( y , μ ) = − ∑ c = 1 C y c l o g ( μ c ) L(\mathbf y, \mathbf\mu) = -\sum_{c=1}^{C}y_{c}log(\mu_{c}) L(y,μ)=c=1Cyclog(μc)
∙ \bullet 则极大似然估计等价于最小训练集上的Softmax损失/负log似然损失: J ( w ) = − ∑ i = 1 N ∑ c = 1 C y i c l o g ( μ i c ) J(\mathbf w) = -\sum_{i=1}^{N}\sum_{c=1}^{C}y_{ic}log(\mu_{ic}) J(w)=i=1Nc=1Cyiclog(μic)
= ∑ i = 1 N ( ∑ c = 1 C y i c w c T x − l o g ( ∑ c ′ = 1 C e x p ( w c ′ T x ) ) ) =\sum_{i=1}^{N}(\sum_{c=1}^{C}y_{ic}\mathbf w_{c}^T\mathbf x - log(\sum_{c'=1}^{C}exp(\mathbf w_{c'}^T\mathbf x))) =i=1N(c=1CyicwcTxlog(c=1Cexp(wcTx)))
上式最后一步推导,觉得好像由问题,log之前是不是还应该有 y i c y_{ic} yic ∑ i = 1 C \sum_{i=1}^{C} i=1C?
∙ \bullet 正则项:Softmaxt分类模型的正则项与两分类模型相同
∙ \bullet 目标函数的优化方法:同两分类模型。
∙ \bullet Scikit-Learn中对Softmax模型的实现。

class sklearn.linear_model.LogisticRegression(penalty='l2',...,solver='liblinear', multi_class='ovr',...)

参数multi_class决定了多类分类的实现方式,可选:
a)‘ovr’:即1对其他(one-vs-rest,OvR),将多类分类任务转化为多个二类分类任务。为了完成第c类的分类决策,将所有第c类的样本作为正例,除了第c类样本以外的所有样本都作为负例,每个类别的二分类器单独训练。之前说的是C类有C个分类器,每个分类器求出为对应分类的概率,概率最大的那一个分类,则为预测分类。不太清楚前边绿色的那句话,在这样的算法里起到什么作用。
b)‘multinomial’:Softmax回归分类,对多项分布概率整体进行训练。
注意:multi_class选择会影响优化算法solver参数的选择
OvR: 可用所有的solver
Multinomial:只能选择newton-cg、lbfgs和sag/saga(liblinear不支持)
可是前边说的优化方法与二分类相同啊,这种看起来矛盾的地方,是否有什么特别的说法呢?
Softmax个人简要理解:依然使用负log似然损失,既将各个样本的概率表达式相乘再取负数。但概率表达式的推导相对复杂,它在最外层使用多项分布( C a t ( y ; θ ) = ∏ c = 1 C θ c y c Cat(\mathbf y;\mathbf \theta) =\prod_{c=1}^{C}\theta_{c}^{y_c} Cat(y;θ)=c=1Cθcyc,上文中概率 θ \theta θ有时也用函数 μ \mu μ来表示)来表示样本的概率,该多项分布是各个分类概率0或1次方的乘积,只有真实属于的那个分类才是1次方,也是真正起作用的那一项,而各个分类的概率则使用sigmoid的推广函数softmax函数( e z c ∑ c ′ = 1 C e z c ′ \frac{e^{z_{c}}}{\sum_{c'=1}^{C}e^{z_{c'}}} c=1Cezcezc)进行计算。

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值