logistic回归和最大熵
回顾发现,李航的《统计学习方法》有些章节还没看完,为了记录,特意再水一文。
0 - logistic分布
如《统计学习方法》书上,设X是连续随机变量,X服从logistic分布是指X具有以下分布函数和密度函数:
\[F(x) = P(X \leq x)=\frac{1}{1+e^{-(x-\mu)/\gamma}}\]
\[f(x) = F'(x) = \frac{e^{-(x-\mu)/\gamma}}{1+e^{-(x-\mu)/\gamma}}\]
其中\(\mu\)是位置参数,\(\gamma\)是形状参数,logistic分布函数是一条S形曲线,该曲线以点\((\mu,\frac{1}{2})\)为中心对称,即:
\[F(-x+\mu)-\frac{1}{2} = -F(x-\mu)+\frac{1}{2}\]
\(\gamma\)参数越小,那么该曲线越往中间缩,则中心附近增长越快
图0.1 logistic 密度函数和分布函数
1 - 二项logistic回归
我们通常所说的逻辑回归就是这里的二项logistic回归,它有如下的式子:
\[h_\theta(\bf x)=g(\theta^T\bf x) = \frac{1}{1+e^{-\theta^T\bf x }}\]
这个函数叫做logistic函数,也被称为sigmoid函数,其中\(x_i\in{\bf R}^n,y_i\in\{0,1\}\)且有如下式子:
\(P(y=1|\bf x;\theta) = h_\theta(\bf x)\)
\(P(y=0|\bf x;\theta) =1- h_\theta(\bf x)\)
\(\log\frac{P(y=1|\bf x;\theta) }{1-P(y=1|\bf x;\theta) }=\theta^T\bf x\)
即紧凑的写法为:
\[p(y|\bf x; \theta) = (h_\theta(x))^y(1-h_\theta(\bf x))^{1-y}\]
基于\(m\)个训练样本,通过极大似然函数来求解该模型的参数:
\[\begin{eqnarray}L(\theta)
&=&\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)\\
&=&\prod_{i=1}^m(h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(\bf x^{(i)}))^{1-y^{(i)}}
\end{eqnarray}\]
将其转换成log最大似然:
\[\begin{eqnarray}\it l(\theta)
&=&\log L(\theta)\\
&=&\sum_{i=1}^my^{(i)}\log h(x^{(i)})+(1-y^{(i)})\log (1-h(x^{(i)}))
\end{eqnarray}\]
而该sigmoid函数的导数为:\(g'(z) = g(z)(1-g(z))\),假设\(m=1\)(即随机梯度下降法),将上述式子对关于\(\theta_j\)求导得:
ps:上述式子是单样本下梯度更新过程,且基于第\(j\)个参数(标量)进行求导,即涉及到输入样本\(x\)的第\(j\)个元素\(x_j\)
而关于参数\(\theta\)的更新为:\(\theta:=\theta+\alpha\nabla_\theta\it l(\theta)\)
ps:上面式子是加号而不是减号,是因为这里是为了最大化,而不是最小化
通过多次迭代,使得模型收敛,并得到最后的模型参数。
2 - 多项logistic回归
假设离散型随机变量\(Y\)的取值集合为\({1,2,...,K}\),那么多项logistic回归模型为:
\[P(Y=k|x) = \frac{e^{(\theta_k* \bf x)}}{1+\sum_{k=1}^{K-1}e^{(\theta_k* \bf x)}},k=1,2,...K-1\]
而第\(K\)个概率为:
\[P(Y=K|x) = \frac{1}{1+\sum_{k=1}^{K-1}e^{(\theta_k* \bf x)}}\]
这里\(x\in{\bf R}^{n+1},\theta_k\in {\bf R}^{n+1}\),即引入偏置。
3 - softmax
logistic回归模型的代价函数为:
\[J(\theta) = -\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)}\log h_\theta({\bf x}^{(i)})+(1-y^{(i)})\log (1-h_\theta({\bf x}^{(i)})) \right]\]
而softmax是当多分类问题,即\(y^{(i)}\in \{1,2,...,K\}\)。对于给定的样本向量\(\bf x\),模型对每个类别都会输出一个概率值\(p(y=j|\bf x)\),则如下图:
其中\(\theta_1,\theta_2,...\theta_k \in R^{n+1}\)都是模型的参数,其中分母是为了归一化使得所有概率之和为1.
从而softmax的代价函数为:
\[\begin{eqnarray}J(\theta)
&=& -\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=1}^K1\{y^{(i)}=j\}\log \frac{e^{\theta_j^T{\bf x}^{(i)}}}{\sum_{l=1}^Ke^{\theta_l^T{\bf x}^{(i)}}}\right]\\
&=& -\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=1}^K1\{y^{(i)}=j\}\left[\log {e^{\theta_j^T{\bf x}^{(i)}}}-\log{\sum_{l=1}^Ke^{\theta_l^T{\bf x}^{(i)}}}\right]\right]
\end{eqnarray}\]
其中,\(p(y^{(i)}=j|{\bf x}^{(i)};\theta)=\frac{e^{\theta_j^T{\bf x}^{(i)}}}{\sum_{l=1}^Ke^{\theta_l^T{\bf x}^{(i)}}}\)该代价函数关于第j个参数的导数为:
\[\begin{eqnarray}\nabla_{\theta_j}J(\theta)
&=&-\frac{1}{m}\sum_{i=1}^{m}1\{y^{(i)}=j\}\left[\frac{e^{\theta_j^T{\bf x}^{(i)}}* {\bf x}^{(i)}}{e^{\theta_j^T{\bf x}^{(i)}}}-\frac{e^{\theta_j^T{\bf x}^{(i)}}* {\bf x}^{(i)}}{\sum_{l=1}^Ke^{\theta_l^T{\bf x}^{(i)}}}\right]\\
&=&-\frac{1}{m}\sum_{i=1}^{m}1\{y^{(i)}=j\}\left[{\bf x}^{(i)}-\frac{e^{\theta_j^T{\bf x}^{(i)}}* {\bf x}^{(i)}}{\sum_{l=1}^Ke^{\theta_l^T{\bf x}^{(i)}}}\right]\\
&=&-\frac{1}{m}\sum_{i=1}^{m}{\bf x}^{(i)}\left(1\{y^{(i)}=j\}-\frac{e^{\theta_j^T{\bf x}^{(i)}}}{\sum_{l=1}^Ke^{\theta_l^T{\bf x}^{(i)}}}\right)\\
&=&-\frac{1}{m}\sum_{i=1}^{m}{\bf x}^{(i)}\left[1\{y^{(i)}=j\} - p(y^{(i)}=j|{\bf x}^{(i)};\theta)\right]
\end{eqnarray}\]
ps:因为在关于\(\theta_j\)求导的时候,其他非\(\theta_j\)引起的函数对该导数为0。所以\(\sum_{j=1}^K\)中省去了其他部分
ps:这里的\(\theta_j\)不同于逻辑回归部分,这里是一个向量;
4 - softmax与logistic的关系
将逻辑回归写成如下形式:
\[\begin{eqnarray}J(\theta)
&=& -\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)}\log h_\theta({\bf x}^{(i)})+(1-y^{(i)})\log (1-h_\theta({\bf x}^{(i)})) \right]\\
&=& -\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{j=0}^11\{y^{(i)}=j\}\log p(y^{(i)}=j|{\bf x}^{(i)};\theta)\right]
\end{eqnarray}\]
可以看出当k=2的时候,softmax就是逻辑回归模型
参考资料:
[] 李航,统计学习方法
[] 周志华,机器学习
[] CS229 Lecture notes Andrew Ng
[] ufldl
[] Foundations of Machine Learning
logistic回归和最大熵的更多相关文章
- 统计学习方法6—logistic回归和最大熵模型
目录 logistic回归和最大熵模型 1. logistic回归模型 1.1 logistic分布 1.2 二项logistic回归模型 1.3 模型参数估计 2. 最大熵模型 2.1 最大熵原理 ...
- Logistic回归和SVM的异同
这个问题在最近面试的时候被问了几次,让谈一下Logistic回归(以下简称LR)和SVM的异同.由于之前没有对比分析过,而且不知道从哪个角度去分析,一时语塞,只能不知为不知. 现在对这二者做一个对比分 ...
- 机器学习之线性回归以及Logistic回归
1.线性回归 回归的目的是预测数值型数据的目标值.目标值的计算是通过一个线性方程得到的,这个方程称为回归方程,各未知量(特征)前的系数为回归系数,求这些系数的过程就是回归. 对于普通线性回归使用的损失 ...
- 神经网络、logistic回归等分类算法简单实现
最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...
- 机器学习——Logistic回归
1.基于Logistic回归和Sigmoid函数的分类 2.基于最优化方法的最佳回归系数确定 2.1 梯度上升法 参考:机器学习--梯度下降算法 2.2 训练算法:使用梯度上升找到最佳参数 Logis ...
- logistic回归
logistic回归 回归就是对已知公式的未知参数进行估计.比如已知公式是$y = a*x + b$,未知参数是a和b,利用多真实的(x,y)训练数据对a和b的取值去自动估计.估计的方法是在给定训练样 ...
- Logistic回归 python实现
Logistic回归 算法优缺点: 1.计算代价不高,易于理解和实现2.容易欠拟合,分类精度可能不高3.适用数据类型:数值型和标称型 算法思想: 其实就我的理解来说,logistic回归实际上就是加了 ...
- Logistic回归的使用
Logistic回归的使用和缺失值的处理 从疝气病预测病马的死亡率 数据集: UCI上的数据,368个样本,28个特征 测试方法: 交叉测试 实现细节: 1.数据中因为存在缺失值所以要进行预处理,这点 ...
- 如何在R语言中使用Logistic回归模型
在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...
随机推荐
- 29.Odoo产品分析 (四) – 工具板块(2) – 搜索和仪表盘(1)
查看Odoo产品分析系列--目录 "项目管理"是一个用于管理你的项目,且将它们与其他应用关联起来的非常灵活的模块,他允许您的公司管理项目阶段,分配团队,甚至跟踪与项目相关的时间和工 ...
- Eclipse For JavaSE安装、配置、测试
Eclipse For JavaSE安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6. ...
- Android为TV端助力 Canvas 和 Paint用法
自定义view里面的onDraw方法,在这里我们可以绘制各种图形,onDraw里面有两个API我们需要了解清楚他们的用法:Canvas 和 Paint. Canvas翻译成中文就是画布的意思,Canv ...
- Linux-pthread如何设置线程的优先级
设置线程优先级的函数: int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param ...
- git 入门教程之基本概念
基本概念 了解工作区,暂存区和版本库的区别和联系有助于我们更好理解 git 的工作流程,了解命令的操作意图. git 和其他版本控制系统如 svn 的不同之处就是有暂存区的概念. 基本概念 工作区 | ...
- Java:Hibernate报错记录:Error executing DDL via JDBC Statement
想着写一篇hibernate的博文,于是准备从头开始,从官网下了最新的稳定版本来做讲述. 结果利用hibernate自动建表的时候发生下面这个问题. 我很纳闷,之前用低版本一点的没有发生这个问题啊. ...
- eclipse配置环境变量 (特别是输入javac无显示问题)
下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 最近win10恢复了一下系统,重新给eclipse配一 ...
- Docker EE 安装 on centos7
本文演示如何在CentOS7上安装Docker EE. 1 安装方式 有两种方法可以 在Centos上安装和升级Docker企业版(Docker EE): YUM存储库:设置Docker存储库并从中安 ...
- 使用Visual Studio Team Services持续集成(一)——构建ASP.NET Core
使用Visual Studio Team Services持续集成(一)--构建ASP.NET Core 概述 持续集成(CI)是将代码尽可能频繁地集成到共享仓库中的过程.在代码集成期间,构建中断或测 ...
- PhantomJs浏览器下载
下载地址: http://phantomjs.org/download.html 链接:https://pan.baidu.com/s/1g9ZHLm0Fg56LN30CsDu-CA 密码:qhar