码迷,mamicode.com
首页 > 其他好文 > 详细

02-13 Softmax回归

时间:2019-10-16 17:32:49      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:数据结构   get   sum   https   因此   target   特征   log   有一个   

更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

Softmax回归

Softmax回归属于多分类\(c_1,c_2,\ldots,c_k\)模型,它通过估计某个样本属于\(k\)个类别的各自的概率达到多分类的目的。它是逻辑回归的一般形式,即当\(k=2\)的时候退化为逻辑回归。

一、Softmax回归详解

1.1 让步比

由于softmax回归更多的是逻辑回归的多分类形式,此处只给出softmax的定义及公式。
让步比可以理解成有利于某一特定事件的概率,可以定义为
\[ {\frac{p}{1-p}} \]
在已知二分类问题的情况下每个分类的概率分别为\(\hat{y_i}\)\(1-\hat{y_i}\),可以定义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{it}(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}^{k-1} e^{{\omega_i^T}x}}}\)

通过\(p(y=k|x,\omega)\)即可推出\(p(y=j|x,\omega)={\frac{e^{{\omega_j^T}x}}{1+\sum_{t=1}^{k-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_k^T}x=0\)计算出每个分类的概率,然而现实中往往\({\omega_k^T}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 \]

二、Softmax回归优缺点

2.1 优点

  1. 基于模型本身可以处理多分类问题

2.2 缺点

  1. 计算极其复杂

\(2^2\)

02-13 Softmax回归

标签:数据结构   get   sum   https   因此   target   特征   log   有一个   

原文地址:https://www.cnblogs.com/nickchen121/p/11686742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!