[TOC] 更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlhtml
Softmax回归
Softmax回归属于多分类$c_1,c_2,\ldots,c_k$模型,它经过估计某个样本属于$k$个类别的各自的几率达到多分类的目的。它是逻辑回归的通常形式,即当$k=2$的时候退化为逻辑回归。python
1、Softmax回归详解
1.1 让步比
因为softmax回归更多的是逻辑回归的多分类形式,此处只给出softmax的定义及公式。 让步比能够理解成有利于某一特定事件的几率,能够定义为git
\[ {\frac{p}{1-p}} \]
在已知二分类问题的状况下每一个分类的几率分别为$\hat$和$1-\hat$,能够定义logit函数,即让步比的对数形式(log-odds)为算法
\[ \begin{align} \log{it}(\hat{y_i}) & = \log{\frac{p(y=1|x,\omega)}{p(y=0|x,\omega)}} \\ & = \log{\frac{\hat{y_i}}{1-\hat{y_i}}} \\ & = \log{\frac{{\frac{1}{1+e^{-\omega^Tx}}}}{{\frac{-\omega^Tx}{1+e^{-\omega^Tx}}}}} \\ & = \omega^Tx \end{align} \]
其中$\log(p)$函数等于事件发生的几率除以不发生的几率取对数,即表示特征值和对数几率之间的线性关系。数据结构
1.2 不一样类之间的几率分布
如今假设有一个$k$元分类模型,即样本的输出值为$c_1,c_2,\ldots,c_k$,对于某一个实例预测为$c_i$样本的几率总和为$1$,即机器学习
\[ \sum_{i=1}^k p(y=i|x,\omega) =1 \]
该$k$元分类模型依据让步比的对数形式能够获得函数
\[ \begin{align} & \ln{\frac{p(y=1|x,\omega)}{p(y=k|x,\omega)}} = {\omega_1^T}x \\ & \ln{\frac{p(y=2|x,\omega)}{p(y=k|x,\omega)}} = {\omega_2^T}x \\ & \cdots \\ & \ln{\frac{p(y=k-1|x,\omega)}{p(y=k|x,\omega)}} = {\omega_{k-1}^T}x \\ & \ln{\frac{p(y=k|x,\omega)}{p(y=k|x,\omega)}} = {\omega_{k}^T}x = 0 \\ \end{align} \]
经过对上述公式化简可得学习
\[ \begin{align} & {\frac{p(y=1|x,\omega)}{p(y=k|x,\omega)}} = e^{{\omega_1^T}x} \\ & {\frac{p(y=2|x,\omega)}{p(y=k|x,\omega)}} = e^{{\omega_2^T}x} \\ & \cdots \\ & {\frac{p(y=k-1|x,\omega)}{p(y=k|x,\omega)}} = e^{{\omega_{k-1}^T}x} \\ \end{align} \]
\[ \begin{align} e^{{\omega_1^T}x}+e^{{\omega_1^T}x}+\cdots+e^{{\omega_{k-1}^T}x} & = \sum_{i=1}^{k-1} e^{{\omega_i^T}x} \\ & = {\frac{p(y=1|x,\omega)}{p(y=k|x,\omega)}} + {\frac{p(y=2|x,\omega)}{p(y=k|x,\omega)}} + \cdots + {\frac{p(y=k-1|x,\omega)}{p(y=k|x,\omega)}} \\ & = {\frac{p(y=1|x,\omega)+p(y=2|x,\omega)+\cdots+p(y=k-1|x,\omega)}{p(y=k|x,\omega)}} \\ & = {\frac{1-p(y=k|x,\omega)}{p(y=k|x,\omega)}} \\ \end{align} \]
既得$p(y=k|x,\omega)={\frac{1}{1+\sum_{i=1} e{{\omega_i^T}x}}}$网站
经过$p(y=k|x,\omega)$便可推出$p(y=j|x,\omega)={\frac{e^{{\omega_jT}x}}{1+\sum_{t=1} e^{{\omega_t^T}x}}} \quad j=1,2,\ldots,k-1$,所以能够获得$k$元分类模型的$k$个类的几率分布为人工智能
\[ p(c=k|x,\omega)= \begin{cases} {\frac{e^{{\omega_j^T}x}}{1+\sum_{t=1}^{k-1} e^{{\omega_t^T}x}}} \quad j=1,2,\ldots,k-1 \quad if类别为1,2,\ldots,k-1 \\ {\frac{1}{1+\sum_{i=1}^{k-1} e^{{\omega_i^T}x}}} \quad if类别为k \\ \end{cases} \]
1.3 目标函数
上一节基于${\omega_kT}x=0$计算出每一个分类的几率,然而现实中每每${\omega_kT}x\neq0$,可使用上一节的推导过程假设${\omega_k^T}x\neq0$则能够推导出$k$元分类模型的$k$个类的几率分布为
\[ p(c=k|x,\omega)={\frac{e^{{\omega_j^T}x}}{\sum_{t=1}^{k} e^{{\omega_t^T}x}}} \quad j=1,2,\ldots,k \]
经过上述$k$个类别的几率分布可得似然函数
\[ \begin{align} L(\omega) & = \prod_{i=1}^m \prod_{k=1}^k p(c=k|x_i,\omega)^{{y_i}_k} \\ & = \prod_{i=1}^m \prod_{k=1}^k ({\frac{e^{({\omega_k^T}x_i)}}{\sum_{t=1}^k e^{{\omega_t^T}x_i}}})^{y_ik} \end{align} \]
经过似然函数便可得对数似然函数即目标函数(注:该目标函数与交叉熵损失函数的形式一致,二元逻辑回归能够理解为交叉熵损失函数两个类变量的特殊形式,Softmax回归能够理解成交叉熵损失函数的多个类变量的特殊形式,交叉熵为
\[ \begin{align} J_m(\omega) & = \log{L(\omega)} \\ & = \sum_{i=1}^m\sum_{k=1}^k {y_i}_k ({\omega_k^T}x_i - \log\sum_{t=1}^k e^{({\omega_t^T}x_i)}) \end{align} \]
1.4 目标函数最大化
因为Softmax回归和逻辑回归均可以使用梯度上升法使得目标函数最大化,而且方式同样,所以此处只给出目标函数对参数的偏导。
\[ {\frac{\partial{J(\omega)}}{\partial\omega_k}}=\sum_{i=1}^m ({y_i}_k-p({y_i}_k|x_i,\omega_k))x_i \]
2、Softmax回归优缺点
2.1 优势
- 基于模型自己能够处理多分类问题
2.2 缺点
- 计算极其复杂
$2^2$