理论和代码-逻辑回归-多分类-理论

步骤1:模型假设,如何选择模型;

$f(x)=p(C_{i}|x)=y_{i}=\frac{e^{z_{i}}}{\Sigma_{j}^{c}e^{z_{j}}}$,c为类别的个数
$z_{i}=b_{i}+\Sigma_{j}^{m} w^{j}x^{j}=b_{i}+W_{i}X$,m为样本特征向量维度

步骤2:模型评估,如何判断哪个模型好坏;一般是通过损失函数;

这里是用交叉熵,$\Sigma_{j}^{c}-\widehat{y_{j}}ln(y_{j})$表示某一个样本的估计分布与真实分布的差异,越小越好
$L(w, b)=\frac{1}{n}\Sigma_{k=1}^{n}\Sigma_{j}^{c}-\widehat{y_{j}}ln(y_{j})$,
c是类别的个数,n是样本的个数
因为$\widehat{y_{j}}$只有在类别为j的时候才取1,其他取0,所以$\Sigma_{j}^{c}-\widehat{y_{j}}ln(y_{j})=-\widehat{y_{j}}ln(y_{j})$
所以有另外一种写法,$L(w, b)=\frac{1}{n}\Sigma_{k=1}^{n}-\widehat{y_{j}}ln(y_{j})$,
两种写法本质一致,
可以看出,$(w, b)$组合在一起时一个$c*(m+1)$的二维数组,每一行对于一个$z_{i}$的$w, b$

步骤3:模型优化,如何筛选出最优的模型;梯度下降是常见方法之一;

损失函数用写法1,可以有
$L=L(w, b)=\frac{1}{n}\Sigma_{k=1}^{n}\Sigma_{j}^{c}-\widehat{y_{j}}ln(y_{j})$,
$\frac{\partial{L}}{z_{i}}$
$=\frac{\partial{L}}{y_{j}}\frac{\partial{y_{j}}}{\partial{z_{i}}}$
$=-\frac{1}{n}\Sigma_{k=1}^{n}\Sigma_{j}^{c}\frac{\widehat{y_{j}}}{y_{j}}\frac{\partial{y_{j}}}{\partial{z_{i}}}$

当$j=i$时,
$\frac{\partial{y_{j}}}{\partial{z_{i}}}=y_{i}(1-y_{i})$
当$j\neq i$时,
$\frac{\partial{y_{j}}}{\partial{z_{i}}}=-y_{i}y_{j}$
所以,
$\frac{\partial{L}}{z_{i}}$
$=\frac{\partial{L}}{y_{j}}\frac{\partial{y_{j}}}{\partial{z_{i}}}$
$=-\frac{1}{n}\Sigma_{k=1}^{n}\Sigma_{j}^{c}\frac{\widehat{y_{j}}}{y_{j}}\frac{\partial{y_{j}}}{\partial{z_{i}}}$
$=-\frac{1}{n}\Sigma_{k=1}^{n}(\frac{\widehat{y_{i}}}{y_{i}}y_{i}(1-y_{i})+\Sigma_{j\neq i}^{c}\frac{\widehat{y_{j}}}{y_{j}}(-y_{i}y_{j}))$
$=-\frac{1}{n}\Sigma_{k=1}^{n}(\widehat{y_{i}}(1-y_{i})+\Sigma_{j\neq i}^{c}\widehat{y_{j}}(-y_{i}))$
$=-\frac{1}{n}\Sigma_{k=1}^{n}(\widehat{y_{i}}-\widehat{y_{i}}y_{i}-\Sigma_{j\neq i}^{c}\widehat{y_{j}}y_{i})$
$=-\frac{1}{n}\Sigma_{k=1}^{n}(\widehat{y_{i}}-y_{i})$

$\frac{\partial{z_{i}}}{W_{i}}=X^{T}$
$\frac{\partial{z_{i}}}{b_{i}}=1$

坚持原创技术分享,您的支持将鼓励我继续创作!