Logistic Regression推导
记录一下Logistic Regression以及对应的推导
首先Logistic Regression虽然被称为逻辑回归,但是主要是用来解决分类问题。
基本原理
Logistic Regression和Linear Regression的原理是相似的,简单描述为:
(1)找一个合适的预测函数(hypothesis),一般表示为h函数,该函数就是我们需要找的分类函数,用来预测输入数据的判断结果。这个过程非常关键,需要对数据有一定的了解或分析,或者知道函数的“大概”形式,比如是线性函数还是非线性函数。
(2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)J(θ)J(θ)函数,表示所有训练数据预测值与实际类别的偏差。
(3)显然,j(θ)j(\theta)j(θ)函数的值越小表示预测函数越准确(即h函数约准确),所以这一步需要做的是找到J(θ)J(θ)J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。
hθ(x)=y=11+e−zh_\theta(x) = y = \frac{1}{1+e^{-z}}hθ(x)=y=1+e−z1,其中z=ωTx+bz = \omega^Tx+bz=ωTx+b
sigmoid的函数输出是介于(0,1)之间的,中间值是0.5, 于是之前的公式hθ(x)h_\theta(x)hθ(x)的含义就很好理解了,因为hθ(x)h_\theta(x)hθ(x)输出是介于(0,1)之间,也就表明了数据属于某一类别的概率。
Logistic Regression算法是将线性函数的结果映射到了sigmoid函数中。
可以将上面的式子变化一下:
1y=1+e−(wT+b)\frac{1}{y} = 1 + e^{-(w^T+b)}y1=1+e−(wT+b)
1−1y=e−(wT+b)1-\frac{1}{y}=e^{-(w^T+b)}1−y1=e−(wT+b),然后两边求对数
lny1−y=wT+bln\frac{y}{1-y}=w^T+bln1−yy=wT+b
若将y视为样本x作为正例的可能性,则1-y就是作为反例的可能性,两者的比值称为“几率”,再取对数,就是“对数几率”。
极大似然估计,估计参数
有了上面公式,接下来需要做的就是怎样取估计参数θ\thetaθ了。首先我们来看,θ\thetaθ函数的值有特殊的含义,他表示hθ(x)h_{\theta}(x)hθ(x)结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:
p(y=1∣x;θ)=hθ(x)p(y=1|x;\theta)=h_{\theta}(x)p(y=1∣x;θ)=hθ(x)
p(y=0∣x;θ)=1−hθ(x)p(y=0|x;\theta)=1-h_{\theta}(x)p(y=0∣x;θ)=1−hθ(x)
根据上式,使用概率论中极大似然估计的方法去求解损失函数,首先得到概率函数为:
P(y∣x;θ)=(hθ(x))y∗(1−hθ(x))1−yP(y|x;\theta)=(h_{\theta}(x))^y * (1-h_{\theta}(x))^{1-y}P(y∣x;θ)=(hθ(x))y∗(1−hθ(x))1−y,其中y=0或1
又有样本之间是相互独立的,所以似然函数为:
L(θ)=Πi=1mP(yi∣xi;θ)=Πi=1m(hθ(xi))yi(1−hθ(xi))1−yiL(\theta)=\Pi_{i=1}^m P(y^{i}|x^{i};\theta)=\Pi_{i=1}^m(h_{\theta}(x^i))^{y^i}(1-h_{\theta}(x^i))^{1-y^i}L(θ)=Πi=1mP(yi∣xi;θ)=Πi=1m(hθ(xi))yi(1−hθ(xi))1−yi
对数似然函数:
l(θ)=logL(θ)=∑i=1mlog((hθ(xi))yi)+log((1−hθ(xi))1−yi)=∑i=1myilog((hθ(xi))+(1−yi)log(1−hθ(xi))l(\theta)=logL(\theta)=\sum_{i=1}^mlog((h_{\theta}(x^i))^{y^i})+log((1-h_{\theta}(x^i))^{1-y^i})=\sum_{i=1}^m y^i log((h_{\theta}(x^i))+ (1-y^i)log(1-h_{\theta}(x^i))l(θ)=logL(θ)=∑i=1mlog((hθ(xi))yi)+log((1−hθ(xi))1−yi)=∑i=1myilog((hθ(xi))+(1−yi)log(1−hθ(xi))
最大似然估计就是要求使得l(θ)l(\theta)l(θ)取最大值时的θ\thetaθ,这里可以使用梯度上升法求解:
J(θ)=−1ml(θ)J(\theta)=-\frac{1}{m}l(\theta)J(θ)=−m1l(θ)
因为乘了一个负的系数−1m-\frac{1}{m}−m1,然后就可以使用梯度下降算法进行参数求解了
最大似然估计就是要求使得l(θ)l(\theta)l(θ)取最大值时的θ\thetaθ,转化为求是J(θ)J(\theta)J(θ)最小的θ\thetaθ值
θj:=θj−α∂∂θjJ(θ)\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta)θj:=θj−α∂θj∂J(θ) (j=0,…,n表示第j个参数)
∂∂θjJ(θ)=∂∂θj[−1m∑i=1myilog((hθ(xi))+(1−yi)log(1−hθ(xi))]\frac{\partial}{\partial\theta_j}J(\theta)=\frac{\partial}{\partial\theta_j}[-\frac{1}{m}\sum_{i=1}^m y^i log((h_{\theta}(x^i))+ (1-y^i)log(1-h_{\theta}(x^i))]∂θj∂J(θ)=∂θj∂[−m1∑i=1myilog((hθ(xi))+(1−yi)log(1−hθ(xi))]
=−1m∑i=1m(yi1hθ(xi)∂∂θj(hθ(xi))+(1−yi)11−hθ(xi)∂∂θj(1−hθ(xi)))=-\frac{1}{m}\sum_{i=1}^m(y^i\frac{1}{h_{\theta}(x^i)}\frac{\partial}{\partial\theta_j}(h_{\theta}(x^i))+(1-y^i)\frac{1}{1-h_{\theta}(x^i)}\frac{\partial}{\partial\theta_j}(1-h_{\theta}(x^i)))=−m1∑i=1m(yihθ(xi)1∂θj∂(hθ(xi))+(1−yi)1−hθ(xi)1∂θj∂(1−hθ(xi)))
=−1m∑i=1m(yi1g(θTxi)−(1−yi)11−g(θTxi))∂∂θjg(θTxi)=-\frac{1}{m}\sum_{i=1}^m(y^i\frac{1}{g(\theta^Tx^i)}-(1-y^i)\frac{1}{1-g(\theta^Tx^i)})\frac{\partial}{\partial\theta_j}g(\theta^Tx^i)=−m1∑i=1m(yig(θTxi)1−(1−yi)1−g(θTxi)1)∂θj∂g(θTxi) (A)
其中:
∂∂θjg(θTxi)=g(θTxi)(1−g(θTxi))∂∂θj(θTxi)\frac{\partial}{\partial\theta_j}g(\theta^Tx^i)=g(\theta^Tx^i)(1-g(\theta^Tx^i))\frac{\partial}{\partial\theta_j}(\theta^Tx^i)∂θj∂g(θTxi)=g(θTxi)(1−g(θTxi))∂θj∂(θTxi)
=g(θTxi)(1−g(θTxi))=g(\theta^Tx^i)(1-g(\theta^Tx^i))=g(θTxi)(1−g(θTxi)) (B)
将A带入B中,得:
∂∂θjJ(θ)=−1m∑i=1m(yi(1−g(θTxi)−(1−yi)g(θTxi))xji\frac{\partial}{\partial\theta_j}J(\theta)=-\frac{1}{m}\sum_{i=1}^m(y^i(1-g(\theta^Tx^i)-(1-y^i)g(\theta^Tx^i))x_j^i∂θj∂J(θ)=−m1∑i=1m(yi(1−g(θTxi)−(1−yi)g(θTxi))xji
=−1m∑i=1m(yi−yig(θTxi)−g(θTxi)+yig(θTxi))=-\frac{1}{m}\sum_{i=1}^m(y^i-y^ig(\theta^Tx^i)-g(\theta^Tx^i)+y^ig(\theta^Tx^i))=−m1∑i=1m(yi−yig(θTxi)−g(θTxi)+yig(θTxi))
=−1m∑i=1m(yi−g(θTxi)xji)=-\frac{1}{m}\sum_{i=1}^m(y^i-g(\theta^Tx^i)x_j^i)=−m1∑i=1m(yi−g(θTxi)xji)
其中g(θTxi)=hθ(xi)g(\theta^Tx^i)=h_{\theta}(x^i)g(θTxi)=hθ(xi)即预测值
所以 ∂∂θjJ(θ)=−1m∑i=1m(hθ(xi)−yi)xji\frac{\partial}{\partial\theta_j}J(\theta)=-\frac{1}{m}\sum_{i=1}^m(h_\theta(x^i)-y^i)x_j^i∂θj∂J(θ)=−m1∑i=1m(hθ(xi)−yi)xji
所以参数更新公式:
θj:=θj+α∑i=1m(yi−hθ(xi))xji\theta_j := \theta_j + \alpha\sum_{i=1}^m(y^i-h_\theta(x^i))x_j^iθj:=θj+α∑i=1m(yi−hθ(xi))xji (省略1m\frac{1}{m}m1)
参考文章:
https://blog.csdn.net/maymay_/article/details/80259104
Logistic Regression推导相关推荐
- 逻辑回归(logistic regression)损失函数(loss function)推导
逻辑回归(logistic regression) 逻辑回归(LR)可以看做线性回归(linear regression)的拓展,二者的区别是:逻辑回归的结果为0或1,即分类:线性回归的结果是连续值, ...
- 交叉熵代价函数(损失函数)及其求导推导 (Logistic Regression)
目录 1. 前言 2. 交叉熵损失函数 3. 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似(Logistic回归和Softmax回归两者本 ...
- Logistic Regression 的简单推导
Logistic Regression 是一种 Generalized Linear Model(GLM),也即广义线性模型. 1. LR 的基本假设 逻辑回归其实是假设事件发生比(odd)的对数为线 ...
- 机器学习基础(十一)—— Logistic Regression 梯度更新公式的推导
Logistic Regression 所要最佳化的问题是: minw1N∑n=1Nln(1+exp(−ynwTxn))Ein( ...
- 逻辑回归(Logistic Regression)简介及C++实现
逻辑回归(Logistic Regression):该模型用于分类而非回归,可以使用logistic sigmoid函数( 可参考:http://blog.csdn.net/fengbingchun/ ...
- python训练模型函数参数_一步步亲手用python实现Logistic Regression
前面的[DL笔记1]Logistic回归:最基础的神经网络和[DL笔记2]神经网络编程原则&Logistic Regression的算法解析讲解了Logistic regression的基本原 ...
- 【机器学习】逻辑回归(Logistic Regression)
注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害 ...
- 逻辑回归Logistic Regression 之基础知识准备
0. 前言 这学期 Pattern Recognition 课程的 project 之一是手写数字识别,之二是做一个网站验证码的识别(鸭梨不小哇).面包要一口一口吃,先尝试把模式识别的经典问题-- ...
- 【机器学习】Logistic Regression 的前世今生(理论篇)
Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上 ...
最新文章
- 数学图形(1.2)Sin曲线
- ES索引模板——就是在新建索引时候指定的正则匹配来设置mapping而已,对于自动扩容有用...
- 使用java代码判断一个字符串里是否包含中文字符
- python变量和字符串
- 数据分析、关键词和地下产业
- 加州大学欧文计算机工程硕士,UCI加州大学尔湾分校软件工程硕士Master of Software Engineering...
- 规划极限编程阅读笔记01
- NOIP2001数的计算
- MyISAM如何查看哪个session持有表锁
- 利用Linq对集合元素合并、去重复处理
- NeatUpload 的使用
- keras中文版官方文档
- ftp服务器vsftpd配置文件,vsftpd配置文件详解及ftp服务器搭建
- 搜狗输入法劝退换成了谷歌拼音
- linux防挂马软件,Linux利用Python脚本检测网站挂马程序
- flv转mp4,电脑视频flv怎么批量转mp4格式
- 《三体》与《西部世界》
- Rollup-前端模块化打包工具入门
- envi精度评定_envi分类精度评价操作步骤
- SimpleMind Pro 1.29.1 小巧的思维导图工具