机器学习算法之Softmax Regression

由于Logistic Regression算法复杂度低、容易实现等特点,在工业界中得到广泛使用,如计算广告中的点击率预估等。但是,Logistic Regression算法主要是用于处理二分类问题,若需要处理的是多分类问题,如手写字识别,即识别是{0,1,…,9}中的数字,此时,需要使用能够处理多分类问题的算法。Softmax Regression算法是Logistic Regression算法在多分类问题上的推广,主要用于处理多分类问题,其中,任意两个类之间是线性可分的。

Logistic Regression

在Logistic回归中比较重要的有两个公式,一个是阶跃函数:

$$h_{\theta}(x)=\frac{1}{1+e^{-\theta^{T} x}}$$

另一个是对应的损失函数:

$$J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]$$

最终,Logistic回归需要求出的是两个概率:$P(y=1|x;\theta )$和$P(y=0|x;\theta )$。具体的Logistic回归的过程可参见“机器学习算法之逻辑回归”。

Softmax Regression

在Logistic回归需要求解的是两个概率,而在Softmax Regression中将不是两个概率,而是k个概率,k表示的是分类的个数。我们需要求出以下的概率值:

$$h_{\theta}\left(x^{(i)}\right)=\left(\begin{array}{c}{P\left(y^{(i)}=1 | x^{(i)} ; \theta\right)} \\ {P\left(y^{(i)}=2 | x^{(i)} ; \theta\right)} \\ {\cdots} \\ {P\left(y^{(i)}=k | x^{(i)} ; \theta\right)}\end{array}\right)=\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}}\left[\begin{array}{c}{e^{\theta_{1}^{T} x^{(i)}}} \\ {e^{\theta_{2}^{T} x^{(i)}}} \\ {\cdots} \\ {e^{\theta_{k}^{T} x^{(i)}}}\end{array}\right]$$

此时的损失函数为:

$$J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=1}^{k} I\left\{y^{(i)}=j\right\} \log \frac{e^{\theta_{j}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}\right]$$

其中I{}是一个指示性函数,意思是大括号里的值为真时,该函数的结果为1,否则为0。下面就这几个公式做个解释:

损失函数的由来

概率函数可以表示为:

$$P(y | x ; \theta)=\prod_{j=1}^{k} (\frac{e^{\theta_{j}^{T} x}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x}})^{I\{y=j\}}$$

其似然函数为:

$$L(\theta)=\prod_{i=1}^{m} \prod_{j=1}^{k} (\frac{e^{\theta_{j}^{T} x}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x}})^{I\{y=j\}}$$

$\log$似然为:

$$l(\theta)=\log L(\theta)=\sum_{i=1}^{m} \sum_{j=1}^{k} I\{y=j\} \log \frac{e^{\theta_{j}^{T} x}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x}}$$

我们要最大化似然函数,即求$\max l(\theta )$。再转化成损失函数。

对$\log$似然(或者是损失函数)求偏导

为了简单,我们仅取一个样本,则可简单表示为:

$$l(\theta)=\sum_{j=1}^{k} I\{y=j\} \log \frac{e^{\theta_{j}^{T} x}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x}}$$

对$l(\theta )$求偏导:

$$\frac{\partial l(\theta)}{\partial \theta_{j}^{(m)}}=\sum_{j=1}^{k} I\{y=j\}\left(x^{(m)}-\frac{e^{\theta_{j}^{T} x}}{\sum_{l=1}^{k} e_{l}^{f_{l}} x} \cdot x^{(m)}\right)=[I\{y=j\}-P(y=j | x ; \theta)] x^{(m)}$$

其中,表示第维。如Logistic回归中一样,可以使用基于梯度的方法来求解这样的最大化问题。

使用Python实现Softmax Regression

使用scikit-learn中的Softmax Regression

softmax和LogisticRegression分别适用于多分类和二分类问题,sklearn将这两者放在一起,只需设置相应的参数即可选择分类器与对应的优化算法,需要注意的是loss function是否收敛。

参考链接:https://towardsdatascience.com/logistic-regression-the-good-parts-55efa68e11df

微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

时间序列趋势判断

判断时间序列数据是上升还是下降是我们常见的问题。比如某个股票在过去一年整体趋势是上升还是下降。我们可以通过画图

聚类算法之Affinity Propagation(AP)

Affinity Propagation算法简介 AP(Affinity Propagation)通常被翻译为

机器学习算法之朴素贝叶斯

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类

发表评论

电子邮件地址不会被公开。 必填项已用*标注