更新、更全的《机器学习》的更新网站,更有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)为

\[\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回归的更多相关文章

  1. TensorFlow实现Softmax回归(模型存储与加载)

    # -*- coding: utf-8 -*- """ Created on Thu Oct 18 18:02:26 2018 @author: zhen "& ...

  2. Logistic回归(逻辑回归)和softmax回归

    一.Logistic回归 Logistic回归(Logistic Regression,简称LR)是一种常用的处理二类分类问题的模型. 在二类分类问题中,把因变量y可能属于的两个类分别称为负类和正类, ...

  3. 机器学习之softmax回归笔记

    本次笔记绝大部分转自https://www.cnblogs.com/Luv-GEM/p/10674719.html softmax回归 Logistic回归是用来解决二类分类问题的,如果要解决的问题是 ...

  4. 《动手学深度学习》系列笔记—— 1.2 Softmax回归与分类模型

    目录 softmax的基本概念 交叉熵损失函数 模型训练和预测 获取Fashion-MNIST训练集和读取数据 get dataset softmax从零开始的实现 获取训练集数据和测试集数据 模型参 ...

  5. 机器学习——softmax回归

    softmax回归 前面介绍了线性回归模型适用于输出为连续值的情景.在另一类情景中,模型输出可以是一个像图像类别这样的离散值.对于这样的离散值预测问题,我们可以使用诸如 softmax 回归在内的分类 ...

  6. 【深度学习】softmax回归——原理、one-hot编码、结构和运算、交叉熵损失

    1. softmax回归是分类问题 回归(Regression)是用于预测某个值为"多少"的问题,如房屋的价格.患者住院的天数等. 分类(Classification)不是问&qu ...

  7. Softmax回归

    Reference: http://ufldl.stanford.edu/wiki/index.php/Softmax_regression http://deeplearning.net/tutor ...

  8. Softmax回归(Softmax Regression)

    转载请注明出处:http://www.cnblogs.com/BYRans/ 多分类问题 在一个多分类问题中,因变量y有k个取值,即.例如在邮件分类问题中,我们要把邮件分为垃圾邮件.个人邮件.工作邮件 ...

  9. DeepLearning之路(二)SoftMax回归

    Softmax回归   1. softmax回归模型 softmax回归模型是logistic回归模型在多分类问题上的扩展(logistic回归解决的是二分类问题). 对于训练集,有. 对于给定的测试 ...

  10. Machine Learning 学习笔记 (3) —— 泊松回归与Softmax回归

    本系列文章允许转载,转载请保留全文! [请先阅读][说明&总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 泊松回归 (Poisson ...

随机推荐

  1. 基于SpringBoot从零构建博客网站 - 开发文章详情页面

    文章详情页面是博客系统中最为重要的页面,登录用户与游客都可以浏览文章详情页面,只不过只有登录用户才能进行其它的一些操作,比如评论.点赞和收藏等等. 本次的开发任务只是将文章详情页面展示出来,至于一些收 ...

  2. 移动端rem距离单位的使用

    在做移动端开发的时候大家肯定会遇到适配问题,手机的屏幕大小有非常多的类别,使用传统的px距离单位已经无法满足我们的需要,于是rem便横空出世,他与百分比定位是比较像的,但是也是有一定的区别,在这里就跟 ...

  3. 安卓手机360浏览器神奇bug,难以理解的

    今天渠道组,说广告在安卓手机360浏览器上显示不了,我就去排查这个问题,发现所有安卓浏览器还真看不到广告,本来以为是360浏览器屏蔽了,,但是另一个项目就没事,后来经过几个小时的不断alert断点调试 ...

  4. 在Word指定位置插入富文本域值(html文本)

    遇到此问题,首先想到的就是各种百度.结果度娘了一会并没有发现有用的有效的解决方法,哎,看来还得靠自己啊. 首先整理了下手头上的资源,一是HtmlAgilityPack,专门解析Html文本用的:二是我 ...

  5. Redis的最常被问到知识点总结

    1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...

  6. SpringBoot中获取微信用户信息从未如此简单!

    前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...

  7. 关于Elasticsearch文档的描述以及如何操作文档的详细总结

    文档 什么是文档 在大多数应用中,多数实体或对象可以被序列化为包含键值对的 JSON 对象. 一个 键 可以是一个字段或字段的名称,一个 值 可以是一个字符串,一个数字,一个布尔值, 另一个对象,一些 ...

  8. Java位运算实现加减乘除四则运算

    本文是继<一文了解有趣的位运算>的第二篇文章. 我们知道,计算机最基本的操作单元是字节(byte),一个字节由8个位(bit)组成,一个位只能存储一个0或1,其实也就是高低电平.无论多么复 ...

  9. Spring Boot(一) Hello World

    一.Spring Boot之我见     Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...

  10. [LeetCode]Power of N

    题目:Power of Two Given an integer, write a function to determine if it is a power of two. 题意:判断一个数是否是 ...