统计学习方法——逻辑斯蒂回归模型_二值逻辑斯谛回归模型-程序员宅基地

技术标签: sigmoid函数  # 统计学习方法笔记  参数估计  逻辑斯蒂回归模型  模型预测  梯度下降  统计学习方法  

1. 写在前面

本文主要针对一个简单的机器学习算法逻辑斯蒂回归模型进行相关的讲解。主要内容包括:逻辑斯蒂回归模型定义及来源、二项逻辑斯蒂回归模型形式与推导、二项逻辑斯蒂回归模型的参数估计与多项逻辑斯蒂回归模型推广。

2. 逻辑斯蒂回归模型定义及来源

逻辑斯蒂回归模型主要是来源于逻辑斯蒂分布与逻辑斯蒂函数。当然,如果换一个名字,你对它应当相当熟悉,那就是sigmoid函数。它的形式如下:
f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+ex1
而逻辑斯蒂回归模型的另一个则来源于线性回归:
g ( x ) = w 0 x 0 + w 1 x 1 + ⋅ ⋅ ⋅ + w n x n = w T x g(x)=w_0x_0+w_1x_1+···+w_nx_n=w^Tx g(x)=w0x0+w1x1++wnxn=wTx
把两者组合起来,就形成了大名鼎鼎的十大数据挖掘算法(LR):
f ( x ) = 1 1 + e − g ( x ) = 1 1 + e − w T x = e w T x 1 + e w T x f(x)=\frac{1}{1+e^{-g(x)}}=\frac{1}{1+e^{-w^Tx}}=\frac{e^{w^Tx}}{1+e^{w^Tx}} f(x)=1+eg(x)1=1+ewTx1=1+ewTxewTx

那么这个 f ( x ) f(x) f(x)值获得的是什么呢?是正例的概率值,它是一个0到1之间的数。

3. 二项逻辑斯蒂回归模型形式与推导

二项回归模型形式表示如下;
p ( y = 1 ∣ x ) = e w T x 1 + e w T x = π ( x ) p(y=1|x)=\frac{e^{w^Tx}}{1+e^{w^Tx}}=\pi(x) p(y=1x)=1+ewTxewTx=π(x)
p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 1 + e w T x p(y=0|x)=1-p(y=1|x)=\frac{1}{1+e^{w^Tx}} p(y=0x)=1p(y=1x)=1+ewTx1
在第二节中,我们讲,这个来源于我们的sigmoid函数。而具体的,其实主要来源于一个逻辑斯蒂回归模型。它牵扯到这样一个名词——几率。

严格上讲,几率和概率是不一样的。他们之间的关系是:一个时间的几率是指该事件发生的概率与改时间不发生的概率的壁纸。该事件的对数几率就为:
l o g i t ( p ) = l o g ( p 1 − p ) logit(p)=log(\frac{p}{1-p}) logit(p)=log(1pp)
因此就得到了这样一个式子:
l o g ( P ( y = 1 ∣ x ) 1 − P ( y = 1 ∣ x ) ) = w T x log({\frac{P(y=1|x)}{1-P(y=1|x)}})=w^Tx log(1P(y=1x)P(y=1x))=wTx
这个式子就是说,输出y=1的对数几率是输入x的线性函数。这点为后面的化简做准备。

3.1 逻辑斯蒂回归一般形式

一般的,认为正例y值为1,负例y值为0,则可以得到其似然函数为:
∏ i = 0 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod_{i=0}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} i=0N[π(xi)]yi[1π(xi)]1yi
对数似然函数为:
L ( w ) = ∑ i = 1 N [ y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] L(w)=\sum_{i=1}^N[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))] L(w)=i=1N[yilogπ(xi)+(1yi)log(1π(xi))]
= ∑ i = 1 N [ y i l o g π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ] =\sum_{i=1}^N[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))] =i=1N[yilog1π(xi)π(xi)+log(1π(xi))]
= ∑ i = 1 N [ y i ( w ⋅ x i ) − l o g ( 1 + e x p ( w ⋅ x i ) ) ] =\sum_{i=1}^N[y_i(w·x_i)-log(1+exp(w·x_i))] =i=1N[yi(wxi)log(1+exp(wxi))]
对L(w)求极大值,就能得到w的估计值。

一般的使用拟牛顿法或者梯度下降法求解最佳参数。这里使用梯度下降法求解。
w n e w = w o l d + L ′ ( w ) δ w^{new}=w^{old}+L'(w)\delta wnew=wold+L(w)δ
其中 δ \delta δ为设定的学习率,也就是步长, L ′ ( w ) L'(w) L(w)可以求解过程如下:
L ′ ( w ) = ∑ n = 1 N x i ( y i − π ( x i ) ) L'(w)=\sum_{n=1}^Nx_i(y_i-\pi(x_i)) L(w)=n=1Nxi(yiπ(xi))

3.2 逻辑斯蒂回归另一种形式

如果令正例y值为1,负例y值为-1,则可以得到另一种逻辑斯蒂回归形式。这种形式是非常美妙的,如果我们进行一次转换就能看出一点端倪:

P ( y = 1 ∣ X ) = e w T x 1 + e w T x = 1 1 + e − w T x P(y=1|X)=\frac{e^{w^Tx}}{1+e^{w^Tx}}=\frac{1}{1+e^{-w^Tx}} P(y=1X)=1+ewTxewTx=1+ewTx1
P ( y = − 1 ∣ X ) = 1 1 + e w T x P(y=-1|X)=\frac{1}{1+e^{w^Tx}} P(y=1X)=1+ewTx1
可以看出这样一个规律:
h ( X ) = 1 1 + e y w T x h(X)=\frac{1}{1+e^{yw^Tx}} h(X)=1+eywTx1

另外一方面,我们看到sigmoid函数有一个特性:
s i g m o i d ( − x ) = 1 − s i g m o i d ( x ) sigmoid(-x)=1-sigmoid(x) sigmoid(x)=1sigmoid(x)
因此我们可以得到极大似然估计为(假设X1为正例,X2为负例):
a r g m a x H = P ( x 1 ) h ( x 1 ) P ( x 2 ) [ 1 − h ( x 2 ) ] . . . argmaxH=P(x_1)h(x_1)P(x_2)[1-h(x_2)]... argmaxH=P(x1)h(x1)P(x2)[1h(x2)]...
a r g m a x H = P ( x 1 ) h ( y 1 x 1 ) P ( x 2 ) h ( y 2 x 2 ) . . . argmaxH=P(x_1)h(y_1x_1)P(x_2)h(y_2x_2)... argmaxH=P(x1)h(y1x1)P(x2)h(y2x2)...
取对数后,等价于:
E = a r g m i n 1 N ∑ n = 1 N − I n ( 1 1 + e − y n W T x n ) E=argmin\frac{1}{N}\sum_{n=1}^N-In(\frac{1}{1+e^{-y_nW^Tx_n}}) E=argminN1n=1NIn(1+eynWTxn1)
E = a r g m i n 1 N ∑ n = 1 N I n ( 1 + e − y n W T x n ) E=argmin\frac{1}{N}\sum_{n=1}^NIn(1+e^{-y_nW^Tx_n}) E=argminN1n=1NIn(1+eynWTxn)
我们需要求导为0,才能为极值,因此需要调整参数W,调整方法如下:
W t + 1 = W t − η ∇ E W_{t+1}=W_{t}-\eta\nabla E Wt+1=WtηE
其中 η \eta η为学习速率,
∇ E = ∂ E ∂ W ( w t ) = 1 N ∑ n = 1 N − y n X n 1 + e y n W t T X n \nabla E=\frac{\partial E}{\partial W}(w_t)=\frac{1}{N}\sum_{n=1}^N\frac{-y_nX_n}{1+e^{y_nW_t^TX_n}} E=WE(wt)=N1n=1N1+eynWtTXnynXn

3.4 进行预测

在进行预测时,最终会获得一个值,这个值表示的是正例的概率,一般的,我们会设计一个阈值,当大于阈值时,我们认为是正例,低于阈值时,我们认为是负例。至于阈值的多少与问题有关,如果要求正例的置信度要高,那么阈值可以高一些。

4. 二项逻辑斯蒂回归模型的参数估计与多项逻辑斯蒂回归模型推广

4.1 二项逻辑斯蒂回归模型的参数估计

二阶逻辑斯蒂回归模型的参数估计这里使用的是极大似然估计。极大似然估计其实就是把所有可能性相乘得到的似然函数求导。
似然函数大部分情况都是这样:
如果设:
p ( Y = 1 ∣ x ) = π ( x ) , p ( Y = 0 ∣ x ) = 1 − π ( x ) p(Y=1|x)=\pi(x),p(Y=0|x)=1-\pi(x) p(Y=1x)=π(x),p(Y=0x)=1π(x)
则:
∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod_{i=1}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} i=1N[π(xi)]yi[1π(xi)]1yi
对数似然函书即为:
L ( w ) = ∑ i = 1 N [ y i l o g π ( x i ) + ( 1 − y i ) l o g ( 1 − π ( x i ) ) ] L(w)=\displaystyle \sum_{i=1}^N[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))] L(w)=i=1N[yilogπ(xi)+(1yi)log(1π(xi))]
= ∑ i = 1 N [ y i l o g π ( x i ) 1 − π ( x i ) + l o g ( 1 − π ( x i ) ) ] =\displaystyle \sum_{i=1}^N[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))] =i=1N[yilog1π(xi)π(xi)+log(1π(xi))]
= ∑ i = 1 N [ y i ( w ⋅ x i ) − l o g ( 1 + e w ⋅ x i ) ] =\displaystyle \sum_{i=1}^N[y_i(w·x_i)-log(1+e^{w·x_i})] =i=1N[yi(wxi)log(1+ewxi)]

然后求这个L(w)的极大值即可,就得到了w的估计值。一般使用梯度下降法或者拟牛顿法解决。
以牛顿法为例,其第t+1轮迭代解的更新公式为:
w t + 1 = w t − ( ∂ 2 L ( w ) ∂ w ∂ w T ) − 1 ∂ L ( w ) ∂ w w^{t+1}=w^{t}-(\frac{\partial ^2L(w)}{\partial w\partial w^T})^{-1}\frac{\partial L(w)}{\partial w} wt+1=wt(wwT2L(w))1wL(w)
其中,一阶导数和二阶导数分别为:
∂ L ( w ) ∂ w = − ∑ i = 1 m x ^ i ( y i − p 1 ( x ^ i ; w ) ) \frac{\partial L(w)}{\partial w}=-\sum^m_{i=1}\hat x_i(y_i-p_1(\hat x_i;w)) wL(w)=i=1mx^i(yip1(x^i;w))
∂ 2 L ( w ) ∂ w ∂ w T = ∑ i = 1 m x ^ i x ^ i T p 1 ( x ^ i ; w ) ( 1 − p 1 ( x ^ i ; w ) ) \frac{\partial ^2L(w)}{\partial w\partial w^T}=\sum^m_{i=1}\hat x_i\hat x_i^{T}p_1(\hat x_i;w)(1-p_1(\hat x_i;w)) wwT2L(w)=i=1mx^ix^iTp1(x^i;w)(1p1(x^i;w))

值得注意的是,这里的二阶导数中拥有 x ^ i x ^ i T \hat x_i\hat x_i^{T} x^ix^iT,这就是能做分布式的关键。,矩阵乘法的分布式运算方法使用上即可。

4.2 多项逻辑斯蒂回归模型推广

多项逻辑斯蒂回归模型与二项逻辑斯蒂回归模型样子长的挺像的,也就是选取其中一个可能性的分子为1,剩下的可能性为 e w k ⋅ x e^{w_k·x} ewkx即可:
P ( Y = k ∣ x ) = e w k ⋅ x 1 + ∑ k = 1 K − 1 e w k ⋅ x , k = 1 , 2 , ⋅ ⋅ ⋅ , K − 1 P(Y=k|x)=\frac{e^{w_k·x}}{1+\displaystyle \sum_{k=1}^{K-1}e^{w_k·x}},k=1,2,···,K-1 P(Y=kx)=1+k=1K1ewkxewkxk=1,2,,K1
P ( Y = K ∣ x ) = 1 1 + ∑ k = 1 K − 1 e w k ⋅ x P(Y=K|x)=\frac{1}{1+\displaystyle \sum_{k=1}^{K-1}e^{w_k·x}} P(Y=Kx)=1+k=1K1ewkx1

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35082030/article/details/70474076

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签