logistic回归解决的是二元分类问题,对于多元分类问题,需要通过softmax回归模型来解决。回顾一下logistic模型(《机器学习学习笔记(8)----logistic回归模型》),假设事件A发生的概率是p,那么:
p=1/(1+exp(-wTx)) (1)
其中:wT=(w0 w1 ..... wn),x=(x0 x1 ...... xn)T,x0=1,T表示矩阵的转置。
如果对(1)式右边的分数表达式的分子和分母都乘以一个exp(w1Tx),得:
p=exp(w1Tx)/(exp(w1Tx)+exp(w2Tx)) (2)
那么对于A事件不发生的概率:
1-p=exp(w2Tx)/(exp(w1Tx)+exp(w2Tx)) (3)
这样,对于多元分类问题,假设有K个分类,那么第k个事件发生的概率,可以写成:

(4)
接下来,我们用y=k表示第k个事件发生,那么
P(y=k|x)= Pk =hk(x) (5)
假设我们的训练集有m个样例,那么第i个样例的条件概率可以表示成:
(6)
I(y(i)=j)被称为指示函数。可以看出,当y(i)=k时,公式(6)简化成公式(5)。
与logistic回归相似,我们假设训练集中的各个样本都是相互独立的,那么这些样本对于y=y(i)同时出现的联合概率:
(7)
问题转换成L(w)的最大值,对(7)式两端取对数:
(8)
类似logistic回归模型,可以定义损失函数:
J(w) = -(1/m)l(w) (9)
把(8)代入到(9)式,得到softmax的损失函数的公式:
(10)
对于损失函数求最小值和对数似然函数求出最大值实际上是等价的,后面的工作就是求J(w)的梯度了。
(11)
同样,这个损失函数的最小值没有解析解。
因此我们需要用批量梯度下降优化方法通过每次把所有的样本作为输入,通过迭代计算来获得最优的wr参数。
对于随机梯度下降优化方法,可以抽取公式(11)的i=k时的值,得梯度公式:
(12)
参考资料:
《Python机器学习算法:原理,实现与案例》