逻辑回归损失函数推导及其模型的推导
注:本篇文章求解思路、过程均为原创,本文出现的文字、公式等均为对照原计算手稿逐字手敲,绝无复制粘贴学术不端之举,转载请注明URL以及出处。
1.什么是逻辑回归?
Logistic−RegressionLogistic-RegressionLogistic−Regression是一种广义线性回归,与多重线性回归分析有很多相同之处。如它们的模型形式基本上相同,都具有 w∗x+bw*x+bw∗x+b。而多重线性回归直接将 w∗x+bw*x+bw∗x+b 作为因变量,因此他们的因变量不同。
- 下文中所出现的 w∗xw*xw∗x 均为内积形式。
2.逻辑回归损失函数推导及其模型的推导
- 下面我们就进行逻辑回归模型以及其损失函数的推导,全程简单粗暴,逐层递进,详略得当,干货满满!
逻辑回归损失函数的推导
Part 1:问题分析
LRLRLR 为什么用SigmoidSigmoidSigmoid 函数?
假设有一个二分类问题,输出 yyy{ 0,1 },而线性模型的预测值 yyy 为实数值,即找到一个阶跃函数将实数 zzz 映射为 { 0,1 },这样就能很好地处理分类问题。
由于SigmoidSigmoidSigmoid 函数具有如下很好的性质:
1)可将值域上的结果映射到(0,1)(0,1)(0,1)之间;
2)可将0.5作为决策边界;
3)数学特性好,容易求导.
所以利用了SigmoidSigmoidSigmoid 函数:
g(z)g(z)g(z) = 11+e−z\frac{1}{1+e^{-z}}1+e−z1
因为g(z)g(z)g(z)最后输出的是样本类别的概率值,所以将阈值设为0.5,g(z)>0.5g(z)>0.5g(z)>0.5时,概率值为 1,g(z)<0.5g(z)<0.5g(z)<0.5时,概率值为 0.
Part 2:构造预测函数
为了使模型分类更准确,需要找到一个最优线性函数模型,并对每个 xxx 找到最优参数,进而使这个最优线性函数模型的参数达到最优。即:
wT∗x=w0x+w1x1+...+wnxn=∑i=1Nwixiw^T*x=w_0x+w_1x_1+...+w_nx_n=\sum_{i=1}^Nw_ix_iwT∗x=w0x+w1x1+...+wnxn=∑i=1Nwixi,
w∈Rnw∈R^nw∈Rn,称为权值向量,
NNN为特征个数.
将其与SigmoidSigmoidSigmoid 函数结合构造LogisticLogisticLogistic 回归预测函数:
π(x)=g(wTz)=11+e−wT∗xπ(x)=g(w^Tz)=\frac{1}{1+e^{-w^T*x}}π(x)=g(wTz)=1+e−wT∗x1
- 注意:若最优线性函数模型为 w∗x+bw*x+bw∗x+b,b∈Rb∈Rb∈R 为偏置,可将权值向量与输入向量加以扩充为w=(w(1),w(2),...,w(n),b)Tw=(w^{(1)},w^{(2)},...,w^{(n)},b)^Tw=(w(1),w(2),...,w(n),b)T, x=(x(1),x(2),...,x(n),b)Tx=(x^{(1)},x^{(2)},...,x^{(n)},b)^Tx=(x(1),x(2),...,x(n),b)T, 即仍记作 wT∗xw^T*xwT∗x.
Part 3:构造损失函数
若模仿线性回归中的平方误差损失函数,会得到一个非凸函数,使损失函数有许多局部最优解,得不到全局最优解。
对于二分类问题函数 π(x)π(x)π(x) ,最大化样本概率就可以得到更优分类模型,所以有:
P(Y=1∣x)=π(x)P (Y=1|x) = π(x)P(Y=1∣x)=π(x),
1−P(Y=0∣x)=π(x)1 - P (Y=0|x) = π(x)1−P(Y=0∣x)=π(x).
整合为似然函数为:
L(w)=∏Ni=1P(Y∣x;w)=∏Ni=1[π(xi)]yi[1−π(xi)]1−yiL(w)=\prod\frac{N}{i=1}P(Y|x;w)=\prod\frac{N}{i=1}[π(x_i)]^{y_i}[1-π(x_i)]^{1-y_i}L(w)=∏i=1NP(Y∣x;w)=∏i=1N[π(xi)]yi[1−π(xi)]1−yi
逻辑回归模型的推导
Part 1:模型参数的估计
为什么要取对数?
应用极大似然法估计模型参数,即求解 argmaxL(w)argmax L(w)argmaxL(w),样本集中众多样本,要求其连乘概率为(0,1)间的数,连乘越来越小,所以利用对数变换将其变为连加,不会超出计算精度,不会溢出。即:
L(w)=∏Ni=1[π(xi)]yi[1−π(xi)]1−yiL(w)=\prod\frac{N}{i=1}[π(x_i)]^{y_i}[1-π(x_i)]^{1-y_i}L(w)=∏i=1N[π(xi)]yi[1−π(xi)]1−yi
的对数似然函数为:
L(w)=∑i=1N[yiπ(xi)+(1−yi)log(1−π(xi))]L(w)=\sum_{i=1}^N[y_iπ(x_i)+(1-y_i)log(1-π(x_i))]L(w)=∑i=1N[yiπ(xi)+(1−yi)log(1−π(xi))]
=∑i=1N[yilogπ(xi)+log(1−π(xi))−yilog(1−π(xi))]=\sum_{i=1}^N[y_ilogπ(x_i)+log(1-π(x_i))-y_ilog(1-π(x_i))]=∑i=1N[yilogπ(xi)+log(1−π(xi))−yilog(1−π(xi))]
=∑i=1N[yilogπ(xi)1−π(xi)+log(1−π(xi))=\sum_{i=1}^N[y_ilog\frac{π(x_i)}{1-π(x_i)}+log(1-π(x_i))=∑i=1N[yilog1−π(xi)π(xi)+log(1−π(xi))
此时引入事件概率 PPP,那么该事件的几率是 P1−P\frac{P}{1-P}1−PP,该事件的对数几率即logistlogistlogist函数为:
logist(P)=logP1−Plogist(P)=log\frac{P}{1-P}logist(P)=log1−PP
此时引入预测函数 π(x)=11+e−wT∗x=P(Y=1∣x)π(x)=\frac{1}{1+e^{-w^T*x}}=P(Y=1|x)π(x)=1+e−wT∗x1=P(Y=1∣x)
令 z=wT∗xz=w^T*xz=wT∗x,
得到:
P(Y=1∣x)=11+e−z=1∗ez(1+e−z)∗ez=ezez+1P(Y=1|x)=\frac{1}{1+e^{-z}}=\frac{1 * e^{z}}{(1+e^{-z}) * e^{z}}=\frac{e^{z}}{e^{z}+1}P(Y=1∣x)=1+e−z1=(1+e−z)∗ez1∗ez=ez+1ez
1−P(Y=1∣x)=ez+1ez+1−ezez+1=1ez+11-P(Y=1|x)=\frac{e^{z}+1}{e^{z}+1}-\frac{e^{z}}{e^{z}+1}=\frac{1}{e^{z}+1}1−P(Y=1∣x)=ez+1ez+1−ez+1ez=ez+11
所以求得其 logistlogistlogist函数为:
logP(Y=1∣x)1−P(Y=1∣x)=logez=zlog\frac{P(Y=1|x)}{1-P(Y=1|x)}=log e^z=zlog1−P(Y=1∣x)P(Y=1∣x)=logez=z
代入对数似然函数:
L(w)=∑i=1N[yiz+log(1−π(xi))]L(w)=\sum_{i=1}^N[y_iz+log(1-π(x_i))]L(w)=∑i=1N[yiz+log(1−π(xi))]
=∑i=1N[yiz+log(1+ez)−1]=\sum_{i=1}^N[y_iz+log(1+e^z)^{-1}]=∑i=1N[yiz+log(1+ez)−1]
=∑i=1N[yi(wT∗x)−log(1+exp(wT∗x))]=\sum_{i=1}^N[y_i(w^T*x)-log(1+exp(w^T*x))]=∑i=1N[yi(wT∗x)−log(1+exp(wT∗x))]
对 L(w)L(w)L(w) 求极大值,得到 www 的估计值,这样,问题就变成了以对数似然函数为目标函数的最优化问题。
Part 2:Logistic回归学习的算法
LogisticLogisticLogistic回归学习的算法通常为梯度下降法和拟牛顿法,此处采用梯度下降法求解模型参数:
对 www 求导:
Lw′(w,xi,yi)=∑i=1N[xiyi−xiexp(wT∗xi)1+exp(wT∗xi)]L'_w(w,x_i,y_i)=\sum_{i=1}^N[x_iy_i-\frac{x_i exp(w^{T*x_i})}{1+exp(w^{T*x_i})}]Lw′(w,xi,yi)=∑i=1N[xiyi−1+exp(wT∗xi)xiexp(wT∗xi)]
根据梯度下降算法:
1)取初始值 w0∈Rnw_0∈R_nw0∈Rn,置 k=0k=0k=0.
2)计算 L(wk)L(w_k)L(wk).
3)计算梯度 pk=∇L(wk)p_k=∇L(w_k)pk=∇L(wk),当∣∣pk∣∣<ε∣∣pk∣∣<\varepsilon∣∣pk∣∣<ε 时,停止迭代,令 w∗=wkw^∗=w_kw∗=wk ,w∗w^*w∗为所求参数 www的解。
否则 ,求 λkλkλk 使L(wk+λkpk)=maxλ≥0L(wk+λpk)L(w_k+λ_kp_k)=max_{λ≥0}L(w_k+λp_k)L(wk+λkpk)=maxλ≥0L(wk+λpk).
4)置wk+1=w(k)+λkpkw_{k+1}=w_{(k)}+λ_kp_kwk+1=w(k)+λkpk,计算L(wk+1)L(w_{k+1})L(wk+1),
当∣∣L(wk+1)−L(wk)∣∣<ε∣∣L(w_{k+1})−L(w_{k})∣∣<\varepsilon∣∣L(wk+1)−L(wk)∣∣<ε 或 ∣∣wk+1−wk∣∣<ε∣∣w_{k+1}−w_{k}∣∣<\varepsilon∣∣wk+1−wk∣∣<ε时,停止迭代,令 w∗=wk+wk+1w^∗=w_k+w_{k+1}w∗=wk+wk+1,w∗w^*w∗为所求参数 www的解。
5)否则,置 k=k+1,转第三步。
Part 3:最终模型
最终,学到的 logisticlogisticlogistic 回归模型为:
P(Y=1∣x)=exp(w∗∗x)1+exp(w∗∗x)P(Y=1|x)=\frac{exp(w^**x)}{1+exp(w^**x)}P(Y=1∣x)=1+exp(w∗∗x)exp(w∗∗x)
P(Y=0∣x)=11+exp(w∗∗x)P(Y=0|x)=\frac{1}{1+exp(w^**x)}P(Y=0∣x)=1+exp(w∗∗x)1
参考资料:《统计学习方法第二版》李航
逻辑回归损失函数推导及其模型的推导相关推荐
- 线性回归和逻辑回归损失函数推导
线性回归和逻辑回归损失函数推导 @(数据挖掘) 线性回归和逻辑回归损失函数推导 一.线性回归最小二乘loss推导 二.logistics回归加sigmoid原因以及交叉熵损失函数推导 一.线性回归最小 ...
- 逻辑回归损失函数和对数损失函数的关系
这篇文章的目的是要记录一下自己学习对数损失函数时的一些疑惑,以及自己对疑惑的理解.这部分理解主要参考了下面这篇博客 https://www.cnblogs.com/zhangchaoyang/arti ...
- 对逻辑回归损失函数进行求导
如果我们基于逻辑回归的损失函数做GD梯度下降,那么就要求梯度,而我们知道求梯度是loss损失函数对theta求偏导. 1.首先先对逻辑回归函数求导(后面对loss求偏导会用到) 2.逻辑回归损失函数 ...
- 逻辑回归损失函数与最大似然估计
机器学习的损失函数是人为设计的,用于评判模型好坏(对未知的预测能力)的一个标准.尺子,就像去评判任何一件事物一样,从不同角度看往往存在不同的评判标准,不同的标准往往各有优劣,并不冲突.唯一需要注意的就 ...
- 逻辑回归损失函数为啥不用最小二乘法
机器学习的损失函数是人为设计的,用于评判模型好坏(对未知的预测能力)的一个标准.尺子,就像去评判任何一件事物一样,从不同角度看往往存在不同的评判标准,不同的标准往往各有优劣,并不冲突.唯一需要注意的就 ...
- 逻辑回归损失函数通常是凸函数(附平方差损失的非凸证明以及交叉熵损失函数求导)
Q:为什么逻辑回归损失函数往往要求是凸函数?(此处凸函数是指下凸,国内和国外凸函数的标准不一样,是相反的,吴恩达的机器学习课程凸函数是指下凸) A:如果损失函数是非凸的,使用梯度下降法优化时,最后得到 ...
- 【逻辑回归算法】{2} ——逻辑回归损失函数的梯度
目标:求出逻辑回归损失函数的最小值. 逻辑回归的损失函数: 逻辑回归损失函数的梯度: 计算预测函数Sigmoid函数的导数: 代入: 计算过程: 最后得出逻辑回归损失函数的梯度: 回顾一下线性回归代价 ...
- 损失函数:逻辑回归损失函数 推导简记
这里只推导逻辑回归的损失公式. 假设函数 hθ(x)=11+e−θTx(假设函数)h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}} \tag{假设函数} hθ(x)= ...
- ML | 标签为{+1,-1}时,逻辑回归损失函数推导
文章目录 1.标签为{0,1}损失函数推导 2.标签为{+1,-1}损失函数推导 2.1 似然函数 2.2 损失函数 1.标签为{0,1}损失函数推导 参考资料:本部分资料来自这个链接 网上搜到的多数 ...
最新文章
- dll窗体的创建与调用
- 图形化mysql出现乱码_关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)...
- python递归函数错误使用方式
- UriComponentsBuilder和UriComponents url编码
- python网站数据写入mysql_python网络爬虫抓取动态网页并将数据存入数据库MySQL
- oracle pl/sql 包
- 跳出所有循环的语句_从零开始的Java之旅2.0 流程控制语句
- mysql重复make_Mysql5.6 make 错误以及解决办法
- Ext 组件的一些操作
- 中国AI英雄风云榜十位领军人揭晓 | 网易2018中国年度AI领域人物评选
- AspNetForums 开发过程中的源代码管理
- android用户界面之GridView教程实例汇总
- vue仿微博评论回复_js模拟回帖/微博评论功能案例
- 智慧图书馆管理系统提升服务水平和工作效率
- 洞态IAST检测RuoYi的sql注入漏洞
- Ubuntu环境下XAMP安装PHP的rabbitmq扩展
- android短信验证码方案,Android之短信验证码
- AXI协议详解(4)-突发传输
- 白噪声检验python_python 加一个白噪声跟老齐学Python之Python安装
- 如何使用css实现三角形?
热门文章
- crt远程连接linux目录的颜色不显示,SecureCRT连接linux设置vim显示颜色
- 小猿圈python之python期末考试测试题(一)_小猿圈python之python期末考试测试题(二)...
- Java实现生成和解析二维码
- linux stm32 swd,stm32 JTAG和SWD的使用区别
- python数据分析工具3:matplotlib
- OpenCV视频篇——颜色跟踪
- BaseQuickAdapter 条目复用问题
- sql:函数:开窗函数简介
- Word2019修改背景色失效的解决方法
- React前端性能提升长列表优化解决方案