• 02-13 Softmax回归



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

    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)为

    [egin{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)元分类模型依据让步比的对数形式可以得到

    [egin{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} ]

    通过对上述公式化简可得

    [egin{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} ]

    [egin{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)= egin{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 eq0),可以使用上一节的推导过程假设({omega_k^T}x eq0)则可以推导出(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)个类别的概率分布可得似然函数

    [egin{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回归可以理解成交叉熵损失函数的多个类变量的特殊形式,交叉熵为

    [egin{align} J_m(omega) & = log{L(omega)} \ & = sum_{i=1}^msum_{k=1}^k {y_i}_k ({omega_k^T}x_i - logsum_{t=1}^k e^{({omega_t^T}x_i)}) end{align} ]

    1.4 目标函数最大化

    由于Softmax回归和逻辑回归都可以使用梯度上升法使得目标函数最大化,并且方式一样,因此此处只给出目标函数对参数的偏导。

    [{frac{partial{J(omega)}}{partialomega_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)

    
    
  • 相关阅读:
    Neo4j 第五篇:批量更新数据
    Neo4j 第四篇:使用.NET驱动访问Neo4j
    Neo4j 第三篇:Cypher查询入门
    Neo4j 第二篇:图形数据库
    Neo4j 第一篇:在Windows环境中安装Neo4j
    ElasticSearch入门 第九篇:实现正则表达式查询的思路
    ElasticSearch入门 第八篇:存储
    ElasticSearch入门 第七篇:分词
    ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套
    Package 设计3:数据源的提取和使用暂存
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11686742.html
Copyright © 2020-2023  润新知