Loading [MathJax]/jax/element/mml/optable/GreekAndCoptic.js
随笔 - 10  文章 - 0  评论 - 1  阅读 - 20926

逻辑回归

文章主要包含的内容有:逻辑回归中所涉及到的推导,原理。

 

从逻辑回归的决策函数中可以看到  y=f(wx+b)(为了记录方便,令b=w0x0);于是有 y=f(wx)。其中,如果让 z=wx ,这个等式实际上描述了一个自变量x和因变量z的一个线性关系。因此,在推导逻辑回归之前,先简要理解一下线性回归。

(1)线性回归:

使用一个合适的线性函数z=f(t)来描述所给训练集中的自变量和因变量的关系,使得目标函数:  G(x)=(yf(x))2  最小。

我们称这个过程为线性回归过程,而z=f(x)是所给训练集的线性拟合,也可以称 z=f(x)是训练集的一个线性回归。

 

(学习方法:梯度下降或者牛顿法,这里不详细介绍)

 

线性回归 描述的是自变量和因变量之间的关系。给定一个自变量就能得到相应的因变量,反之亦然。

 

如果,我们对y的值进行离散化,令y值为+1或者0。那么,我们需要在原来线性回归的基础上,让y值从连续值映射到{+1,0}

 

由此而引出了逻辑回归的问题

(2)逻辑回归:

单纯的将y>0赋值为+1,小于y<0赋值为0,会因为线性回归的受噪声的影响较大而影响分类效果。

 

定义:事件A发生的概率为 p,则A不发生的概率为 1-p。一件事的几率等于事件发生的概率和这件事不发生的概率之比。即odds=p1p

而逻辑回归的想法是:

        log(odds)=wx

 

这时候,将odds=p1p 代入上面的式子,可以解得:

 

P(y=1|x)=exp(wx)1+exp(wx)     (1)

 

P(y=0|x)=11+exp(wx)            (2)

从前面的推导也知道,上面的公式(1)和(2)实际上描述的是:样本经过逻辑回归模型后,得到判断结果为+1 和0的概率。

 

假设现在给定了训练二分类问题的训练样本

 

T=(x1,y1)(x2,y2).....(xn,yn)

 

新的模型也应该很好地拟合训练集才对。既然上面提到了概率,那么,目标函数可以这样描述:

 

π(x)=P(y=1|x) , 则 1-π(x)= p(y=0|x)

 

那么 y=1时,[π(x)]^y 正确描述了p(y=1|x)的概率,而[1-π(x)]^{1-y}描述了该样本被误判为负样本的概率。 让它们相乘,得到似然函数:

 

          [π(x)]^{y}*[1-π(x)]^{1-y}  (3)

 

显而易见,当正训练样本输入时,π(x)较大,1-π(x)较小,这时候:

 

                [π(x)]^y*[1-π(x)]^{1-y}= π(x)

 

同理,输入负样本时: [π(x)]^y *[1-π(x)]^{1-y}= 1-π(x)

 

因此,当所有的样本的似然函数都相乘后,我们只需要让这个函数最大,就能够正确描述训练样本提供的信息。称这个函数为训练集的似然函数:

 

\prod_{i=1}^{n}[π(x_i)]^{y_i}*[1-π(x_i)]^{1-y_i} \     (3)

 

对两边取自然对数,得到训练集的对数似然函数:

 

L(w)=\sum_{i=1}^{n}[y_i*(w*x_i)-ln(1+exp(w*x_i))]    (4)

     

如果考虑训练中的误差的话,我们也可以这样理解:似然函数(3)描述的是训练样本被正确描述的概率,那么,它被不正确描述的概率是:

     

e= \prod_{i=1}^{n}[π(x_i)]^{1-y_i}*[1-π(x_i)]^{y_i}    (5)

           

对两边取自然对数,就得到了逻辑回归的误差函数:

     

L(w)=- \sum_{i=1}^{n}[y_i*(w*x_i)-ln(1+exp(w*x_i))]   (6)

 

因此,逻辑回归问题,实际上就变成了一个无限制条件的最优化问题:

      

            min \ L(w)

 

 这个问题的解决办法会在后续的文章中说明。

 

参考文献:

 

1、《统计学习方法》 李航

2、维基百科

转载请注明来源:http://www.cnblogs.com/weibao/p/5542393.html

有任何问题,请联系weibao798@gmail.com

 

posted on   weibao  阅读(329)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
阅读排行:
· 一个适用于 .NET 的开源整洁架构项目模板
· 【开源】C#上位机必备高效数据转换助手
· .NET 9.0 使用 Vulkan API 编写跨平台图形应用
· MyBatis中的 10 个宝藏技巧!
· [.NET] 使用客户端缓存提高API性能
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示