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.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...
随机推荐
- jQuery 简单案例
案例一:全选.反选.取消实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- Android项目实战(四十九):Andoird 7.0+相机适配
解决方案类似: Android项目实战(四十):Andoird 7.0+ 安装APK适配 解决方法: 一.在AndroidManifest.xml 文件中添加 四大组件之一的 <provider ...
- Android项目实战(四十):Andoird 7.0+ 安装APK适配
首先看一下安装apk文件的代码 /** * 通过隐式意图调用系统安装程序安装APK */ public static void install(Context context) { Intent in ...
- [20181108]12c sqlplus rowfetch参数4.txt
[20181108]12c sqlplus rowfetch参数4.txt --//12cR2 可以改变缺省rowfetch参数.11g之前缺省是1.通过一些测试说明问题.--//前几天做的测试有点乱 ...
- mssql sqlserver null数据类型专题
摘要: 下文将详细讲述sql server NULL(空值)的相关知识,如下所示: 实验环境: sql server 2008 R2 NULL(空值)简介: mssql sqlserver null数 ...
- Windows Server 2016-Win Ser 2016新增功能
本来想着整个系列都是与Active Directory相关的内容,上一章节我们应读者要求补充了Window Server 2016标准版与数据中心版的区别,鉴于读者的疑惑,从本章节开始补充三到五章与W ...
- linux ubuntu 关于vim得一些基本命令
1.vim显示行号 :set number 2. 快捷键 J 向下 K 往上 H 向左 L 向右 ctrl+shift+T 打开新窗口 ctrl+Page Down 所有vim窗口向下切换 ctrl+ ...
- 推荐几本FPGA书籍(更新中)
1.<数字信号处理的FPGA实现>第三版 讲解比较详细的DSP理论,使用FPGA实现,不过使用VHDL语言:也颇具参考性. 2. <Xilinx Zynq-7000 嵌入式系统设计与 ...
- python3编写网络爬虫18-代理池的维护
一.代理池的维护 上面我们利用代理可以解决目标网站封IP的问题 在网上有大量公开的免费代理 或者我们也可以购买付费的代理IP但是无论是免费的还是付费的,都不能保证都是可用的 因为可能此IP被其他人使用 ...
- Hadoop下添加节点和删除节点
添加节点 1.修改host 和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves 添加新增节点的ip或host 3.在新节点的机器 ...