逻辑回归原理

                                       逻辑回归原理

1 逻辑回归简介

logistic回归(LR),是一种广义的线性回归分析模型,常用于数据挖掘,疾病预测,经济预测等方面。

优点:计算代价低,思路清晰易于理解和实现;

缺点:它是一个线性的分类器,不使用额外策略,处理不来非线性问题(线性分类器的通病),容易欠拟合,分类精度可能不高。

逻辑回归是一个名为回归实为分类的经典算法,他的模型如下:

对于一个输入向量,输出一个0-1的概率值,表示其为正例的概率。这个函数也叫Sigmoid函数,其中z又等于,其实它是x的一个线性函数,所以说它是一个广义的线性回归函数,其实说的就是这里z和x的关系,y的x并不是线性的,但是z和x是线性的,z和y之间是单调的。我们所说的输入特征向量就是x,输出的y是一个0-1的值,那么表示的就是一个样本为正例的概率。这里的向量默认为列向量,转置之后就是行向量。

逻辑回归的整个表达式,输入特征向量x,首先经过一个线性变换变成z,然后在根据Sigmoid计算得到y值,最后得到预测结果

1.1 线性变换过程

一般来说在二维空间下线性变化是kx+b,对于这里也是一样,系数矩阵乘以特征向量再加一个常数,才是一个完整的线性变化,如下。一般来说,可以写成下面的方式,把b乘以1,就可以变成后面矩阵的变化情况,那么接下来b可以不写,因为把b丢到w里面,后面也都是这样表达的

为了方便,不写b就变成下面公式,其实是有b的不过在这省略了

1.2 Sigmoid函数

Sigmoid函数如上图,它的定义域是-∞到+∞,其实z可以随便给,值域是0到1,在输入为0的时候,y值是0.5.它的目的就是把经过线性变换之后的处于-∞到+∞之间的一个数映射到0-1之间。

其实为了映射到0-1之间还有其他很多函数,如单位阶跃函数,为什么使用Sigmoid函数呢?核心问题是单位阶跃在0这里不可导,后面计算很复杂,而Sigmoid后面推倒非常容易。

1.3 小总

逻辑回归模型,就是每个特征的回归系数,即,也就是说有训练集就为为了算出W是多少能够和数据的拟合度最高。

逻辑回归的性质:是线性分类器,如果不加特殊处理是无法解决非线性问题的

建模过程:通过数据集,计算出“最合适”的系数向量,越合适拟合度越高(最合适也可以理解为是错误概率最低的情况)

应用:

2 极大似然估计原理

假设有箱子甲和乙,甲箱子8个红色的球和1个蓝色的球,乙箱子有8个蓝色的球和1个红色的球,那么从这两个箱中随机选一个箱子,不管选什么都是8比1的关系,然后从选择之后的箱子再随机抽一个,假设抽到的是蓝色的,那么要估计这个球是甲还是乙箱子的。其实这是一个根据数据和结果推倒中间参数的过程,来自乙箱的概率为

极大似然估计(Maximum likelihood):利用已知的样本和结果,反推最有可能导致这样结果的参数值

2.1 极大似然数学表达式的逻辑推理

利用实验结果D={x1,x2...,xn}得到某个参数值θ,使样本出现的概率最大。似然函数如下

L就是loss损失的意思,等于在θ条件下出现D的概率,其中D是这些事件的集合,假设各个事件都是独立的,这里就可以变成一个连乘,那就用∏表示。

那么极大似然函数就是根据似然函数求解argmax(L(θ)),其中使他得到最大的θ,就是似然估计要得到的结果

2.2 例子

设样本服从正态分布N(μ,σ²),用似然法估计参数

所以这里是强假设的,在这个条件之上,我们就要计算它的参数,估计的参数就是μ和σ²。步骤如下:

①建立(对数)似然函数

因为连乘对我们是不友好的,所以要求他的对数。似然函数是关于μ,σ²的函数,定义和前面一样,对于某个样本而言,他属于真实样本的乘积,意思就是希望每一个样本都属于真实值的概率是最大的,所以对于每一个概率都要连乘,连乘的内容就是在给定参数的条件下属于真实样本的概率。连乘内部的这一项其实就是正态分布的概率密度函数,因为连乘对我们是不友好的,所以要求他的对数。

在知道了对数似然之后就要对其极大值求解,这里其实有两个参数μ和σ²,xi是通过采用或者调研得到的是已知的,n是样本量也是已知参数

②求解使似然函数最大的参数,也就是结果

其实就是求导,并且导函数等于0。关于μ的导函数推倒如下:其中第一项和μ是没有任何关系的求导就没了,后面的一项分母和μ也没关系,分子和μ有关系,其实也就是多项式,把2拿下来,负号拿下来就变成-2倍的后一项,-和-相抵,2和分母的2相抵。关于σ²的导函数如下

这时候就可以求出μ和σ²

3 用极大似然建立损失函数

3.1 求极大似然依赖的概率

前面说了极大似然是一个概率,然后根据那个概率逐步推倒,逻辑回归能用极大似然就要找出概率函数,概率是在最后一步产生的,比如输入的特征向量为两个维度的,经过线性变换,然后在根据Sigmoid计算得到y值,y值的含义就是这个样本属于类别1的概率是多少,y是0-1之间的,y越大说明属于正样本的概率越高。

既然逻辑回归用极大似然建立损失函数,而极大似然依赖概率,那么既然这里找到了这个概率,就可以利用这个概率建立损失函数,上图的0.09和0.79就是概率。用数学公式写出来就如下

给定一个输入x,那么输出标签为1的概率就是逻辑回归这个模型的函数,其中对于一个任意输入x,这个结果就是输出标签为1的值,把他化简如下:

在给定x的条件下,标签为1的概率,把它定义成φ(z)其他表示方式h(z)等。同样对于输入x输出标签为0的概率如下图

把上面两个表达式合并,那就是给定了某个x,它的标签属于它自己真实标签的概率,因为这里面分别是1和0,我们并不知道它的真实的标签是什么,那么给定x,它属于它真实的标签的概率就如下:

假定x是属于类别1的,yi就等于1,任何数的0次方就能与1,只有φ(z),所以是正确的,反之x属于类别0也是一样的推理。所以这个表达式表示该样本属于真实标签的概率,就和似然的定义吻合了,那么有了这个表达式就可以用它建立似然函数。

3.2 用极大似然建立损失函数

逻辑回归中极大似然规律是:最大化每个样本属于真实标签的概率,采用似然估计就是如下表达式

这里的变量是W系数向量所以是L(w),它等于每一个样本属于真实标签的概率的连乘,就是大家都属于真实标签的概率,当然这里有假设各个样本都是独立互不影响的,其中P概率这一项上面已经推倒出来了。所以这个函数就是逻辑回归的损失函数,而且是用极大似然建立的,接下来就是求他的最大值。连乘对我们很不友好,一般在优化问题的求解过程中连乘是非常难计算的,就用对数极大似然,一般这是通用的套路,就是求它的log,再一般一点大写的L表示连乘状态下的极大似然,而小写的l表示对数极大似然,那么这里就得到如下表达式,其中这里选的是自然对数ln,求对数,连乘就边和连续求和,指数项拿下来变成系数项。

这个函数看起来就对我们友好很多了。我们讲极大似然,一般建立似然之后要求极大值,就是要找出这里面的参数对它求偏导。

那么接下来要做的事情就是把上图使右边的求和项最大的w的值,那么关于这个表达式的通用写法采用梯度上升法,最大化对数似然函数。前面正太分布的例子直接求偏导,那是因为逻辑回归他的表达式求解过程会非常复杂而且是很难计算的,那这种场景一般采用梯度上升求解最大值,一般梯度上升很容易求导局部最优。其实其他书上的梯度下降法和它正好相反,就是把l(w)变成-l(w),就变成最小化似然函数,就变成梯度下降了。他们的最终结果是一样的,所以不影响推倒。

3.3 梯度相关知识

梯度:就是一个方向向量,表示某一函数在某点处沿着该方向(梯度的方向)最快。因为是方向向量那么就依赖某一个函数,某一个函数的某一个点的向量似然是不同的,那这个梯度表示的是这个函数在这个点的梯度的方向变化率最大,变化速度最快。

假设一座山的海拔与坐标关系为f(x,y),且处处可导,等高线如下图

这个图表达了海拔与坐标的关系,对于p0而言,其变化率最快的方向是p0p1这个向量,那么这个向量就是函数f(x,y)在p0点的梯度。对于p1而言,p1p2这个向量的方向是上升最快的。也就是说梯度并不是固定的某一个方向,随着某个点的变化是在变化的。

梯度在数学表达式中中记为grad(x,y),定义式如下:

梯度在数学用反三角表达,表达的是一个方向向量,那么他是函数在这个点下方向向量的值,其中梯度求解的方式就是求偏导。

举例如下:

4 用梯度上升(梯度下降)最优化参数求解

前面已推倒出逻辑回归的对数似然如下:

我们的目的就是要求解参数w其中w=argmax(L(W)),就是说使其w最大的就是我们要求解的。一般通用的方法是计算损失函数关于参数向量的每个Wi的偏导,之后连列方程组,并且另他等于0对其进行求解,如下:

这个对于逻辑回归是非常难求解的,为了简化计算参数梯度上升方式求解,方法如下:

①首先随机初始化一个回归系数向量w,②之后重复的迭代,对于每次迭代,计算当前点下的梯度,之后在计算w+α*梯度,α是个入参可以随便给,这个w是当前情况下的w值,然后梯度是变化率最快的那个方向,这里α*梯度表示的是一个步长。(可以理解为在一个山腰上,发现沿着这个方向走能最快上山,那么α表示走一步的步长,)不能走太多,因为梯度方向一直在变,走一小步之后会有一个新的w,用这个新的w更新旧的w,之后再去迭代。

4.1 公式推导过程

损失函数如下:

这是关于w的函数,等号右边w包含在了Zi里面,因为z是w的一个线性变化。把φ(z)和1-φ(z)带进去

梯度上升法的求解过程就是求梯度再去更新参数。求解l关于w的偏导,求和还是求和

其中这一项就是逻辑回归的表达式,而yi是xi的真实的标签,而逻辑回归的输出就是预测值,所以一减就是真实的误差。

 

逻辑回归伪代码如下:

首先把所有变量导进来,,然后初始化w随便初始化给全0或全1都可以,然后alpha是个入参就是每次跨的步长(学习率),接下来就是重复迭代,对于迭代循环每次要做的事就是第一步求解梯度,第二步更新参数,第三步更新w。

 

5 最大熵模型

最大熵模型的定义:假设满足所有约束条件的模型集合为c,定义在条件概率P(Y|X)上的条件熵为

则模型集合c中条件熵最大的模型称为最大熵模型。因为与逻辑回归形式类似,又称为对数线性模型

最大熵原理:在所有可能的概率模型中,熵最大的模型最好。

假设离散随机变量X的概率分布为P(x),那么熵为

就是对所有P(x)*logP(x)求和再加一个符号

熵的取值范围为,他肯定是一个正数,代表的是一个信息量,一般来说信息量越大的值,熵是越大的,信息量越小熵越小。

举例:假设有一场中国对战巴西的足球赛,假设两对正常发挥,其实这个事情本身对于结果是没有太多信息量的。根据经验中国足球实例较弱,因为我们都知道两对实力有相差,我们胜的机会比较低,而相反输的记录较高。所以这个随机变量的结果胜平负,那么他的熵是非常小的可以简单估算,假设胜的几率是10%,平10%,输80%,所以H(P)的值非常低。所以在这种没有信息量的事件他的熵比较小。反过来看英法两国比赛旗鼓相当,所以事情很难明确有人知道,那么他们的信息量就比较多,假设胜的几率是30%,平40%,输30%.这样求出来的熵值就比较大,相比中巴的大很多。

简单来说,对于随机变量来说,如果他的每个可选择的可能性越趋近于等概率,他的熵就越大,相反越不趋近于等概率,那么他的熵就会越小,其实就是信息量。等概率就是我们不知道结果信息量比较大,而不等概率就是这个事情越来越显而易见了,就是信息量比较小。就像1+1等于2我们都知道就没有信息量。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 956. 最高的广告牌(DP)

文章目录1. 题目2. 解题1. 题目 你正在安装一个广告牌,并希望它高度最大。 这块广告牌将有两个钢制支架,两边各一个。每个钢支架的高度必须相等。 你有一堆可以焊接在一起的钢筋 rods。 举个例子,如果钢筋的长度为 1、2 和 3,则…

Tensorflow线程队列与IO操作

目录 Tensorflow线程队列与IO操作 1 线程和队列 1.1 前言 1.2 队列 1.3 队列管理器 1.4 线程协调器 2 文件读取 2.1 流程 2.2 文件读取API: 3 图像读取 3.1 图像读取基本知识 3.2 图像基本操作 3.3 图像读取API 3.4 图片批处理流程 3.5 读取图片案例 …

LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)

文章目录1. 题目2. 解题1. 题目 给你 n 个盒子,每个盒子的格式为 [status, candies, keys, containedBoxes] ,其中: - 状态字 status[i]:整数,如果 box[i] 是开的,那么是 1 ,否则是 0 。 - 糖…

给javascript初学者的24条最佳实践

1.使用 代替 JavaScript 使用2种不同的等值运算符:|! 和 |!,在比较操作中使用前者是最佳实践。 “如果两边的操作数具有相同的类型和值,返回true,!返回false。”——JavaScript:语言精粹 然而,当使用和&a…

LeetCode 1614. 括号的最大嵌套深度

文章目录1. 题目2. 解题1. 题目 如果字符串满足一下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS): 字符串是一个空字符串 "",或者是一个不为 "("…

[AngularJS]Chapter 1 AnjularJS简介

创建一个完美的Web应用程序是很令人激动的,但是构建这样应用的复杂度也是不可思议的。我们Angular团队的目标就是去减轻构建这样AJAX应用的复杂度。在谷歌我们经历过各种复杂的应用创建工作比如:GMail、Map和日历。我们认为我们有必要把这些经验总结下来…

LeetCode 1615. 最大网络秩(出入度)

文章目录1. 题目2. 解题1. 题目 n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络。 每个 roads[i] [ai, bi] 都表示在城市 ai 和 bi 之间有一条双向道路。 两座不同城市构成的 城市对 的 网络秩 定义为:与这两座城市 直接 相连的道路总数。如果…

使用JSLint提高JS代码质量

随着富 Web 前端应用的出现,开发人员不得不重新审视并重视 JavaScript 语言的能力和使用,抛弃过去那种只靠“复制 / 粘贴”常用脚本完成简单前端任务的模式。JavaScript 语言本身是一种弱类型脚本语言,具有相对于 C 或 Java 语言更为松散的限…

Django工具:Git简介与基本操作

1.Git简介: 1.Git是目前世界上最先进的分布式版本控制系统 网址:http://github.com 2.总结git的两大特点: 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题 分布式:Git是分布式…

LeetCode 1616. 分割两个字符串得到回文串

文章目录1. 题目2. 解题1. 题目 给你两个字符串 a 和 b ,它们长度相同。 请你选择一个下标,将两个字符串都在 相同的下标 分割开。 由 a 可以得到两个字符串: aprefix 和 asuffix ,满足 a aprefix asuffix ,同理&am…

Kafka基础

Kafka基础 1 消息队列 1.1 什么是消息队列 消息队列(MQ):消息队列,保存消息的队列。消息的传输过程中的容器;主要提供生产、消费接口供外部调用做数据的存储和获取。 1.2 为什么要有消息队列 当网站面对教大的流量…

系统总结学习 Python 的 14 张思维导图

本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库)。 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组&#x…

LeetCode 1617. 统计子树中城市之间最大距离(枚举所有可能+图的最大直径)

文章目录1. 题目2. 解题1. 题目 给你 n 个城市,编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges ,其中 edges[i] [ui, vi] 表示城市 ui 和 vi 之间有一条双向边。 题目保证任意城市之间只有唯一的一条路径。换句话说,所有城市形成了…

MYSQL电脑客户端免安装教程以及出现问题解决方案

准备工作:window 7 64位旗舰版 MySQL 5.6.35免安装。 1. 下载MySQL 1.1 进入MySQL官网下载(https://www.mysql.com/)MySQL的安装包。 1.2. 根据自己电脑的位数(32位/64位)来下载响应的MySQL 、 2. 部署MySQL 2.1 解压压缩包到自己的某个盘…

[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)

文章目录1. 使用 LeNet 预测1.1 导入包1.2 建立 LeNet 模型1.3 读入数据1.4 定义模型1.5 训练1.6 绘制训练曲线1.7 预测提交2. 使用 VGG16 迁移学习2.1 导入包2.2 定义模型2.3 数据处理2.4 配置模型、训练2.5 预测提交Digit Recognizer 练习地址 相关博文: [Hands …

SparkCore基础

目录 Spark简介 1 什么是Spark 2 Spark特点 3 Spark分布式环境安装 3.1 Spark HA的环境安装 3.2 动态增删一个worker节点到集群 4 Spark核心概念 5 Spark案例 5.2 Master URL 5.3 spark日志的管理 5.4 WordCount案例程序的执行过程 6 Spark作业运行架构图&#xff…

LeetCode 1320. 二指输入的的最小距离(动态规划)

文章目录1. 题目2. 解题1. 题目 二指输入法定制键盘在 XY 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处, 例如字母 A 位于坐标 (0,0),字母 B 位于坐标 (0,1),字母 P 位于坐标 (2,3) 且字母 Z 位于坐标 (4,1)。 …

SparkStreaming基础

目录 SparkStreaming基础 1 流式计算 1.1 常见的离线和流式计算框架 2 SparkStreaming简介 2.1 核心概念DStream 2.2 工作原理 2.3 Storm,SparkStreaming和Flink的对比 2.4 如何选择流式处理框架 3 SparkStreaming实时案例 3.1 StreamingContext和Receiver…

【Kaggle微课程】Natural Language Processing - 1. Intro to NLP

文章目录1. 使用 spacy 库进行 NLP2. Tokenizing3. 文本处理4. 模式匹配练习:食谱满意度调查1 在评论中找到菜单项2 对所有的评论匹配3 最不受欢迎的菜4 菜谱出现的次数learn from https://www.kaggle.com/learn/natural-language-processing 1. 使用 spacy 库进行…

【Kaggle微课程】Natural Language Processing - 2.Text Classification

文章目录1. bag of words2. 建立词袋模型3. 训练文本分类模型4. 预测练习:1. 评估方法2. 数据预处理、建模3. 训练4. 预测5. 评估模型6. 改进learn from https://www.kaggle.com/learn/natural-language-processing NLP中的一个常见任务是文本分类。这是传统机器学…