【机器学习】Logistic回归---学习笔记

Logistic回归学习笔记

  • Logistic回归学习线路
    • 预备知识:建议先去B站学习一下信息量,熵,BL散度,交叉熵的概念。
    • Logistic回归的函数模型
    • 损失最小化架构
    • 分类函数
      • 最大概率分类函数
      • 阈值分类函数
    • Logistic回归的优化算法
      • 梯度下降
      • 随机梯度下降
      • 小批量梯度下降
      • 坐标下降

Logistic回归学习线路

预备知识:建议先去B站学习一下信息量,熵,BL散度,交叉熵的概念。

推荐B站视频:“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”

信息量(Information)指的是一个事件所包含的信息的多少,通常用以2为底的对数表示。比如说,如果一个事件发生的概率是1/8,那么这个事件的信息量就是log2(1/8)=-3,因为需要三个比特才能表示它。

熵(Entropy)是一个系统或信源中不确定性的度量,也可以理解为信息的平均量。在信息论中,熵越大表示系统或信源越难以预测,因此包含的信息越多。比如说,一堆硬币正反面朝上的情况有很多种可能性,因此它们的熵比一堆已知全是正面朝上的硬币要高。

KL散度(Kullback-Leibler
divergence),又称相对熵,是衡量两个概率分布之间差异的一种方式。KL散度是非负的,并且当且仅当两个分布完全相同时取值为0。

交叉熵(Cross-entropy)是一种用来比较两个概率分布之间差异的方法,它通常用于评估分类模型的性能。与KL散度类似,交叉熵也是非负的,当且仅当两个分布相等时取值为0。

本节知识导图

Logistic回归的函数模型

 逻辑回归是一个分类模型

 它可以用来预测某件事发生是否能够发生。分类问题是生活中最常见的问题:

  • 生活中:比如预测上证指数明天是否会上涨,明天某个地区是否会下雨,西瓜是否熟了

  • 金融领域:某个交易是否涉嫌违规,某个企业是否目前是否违规,在未来一段时间内是否会有违规

  • 互联网:用户是否会购买某件商品,是否会点击某个内容

 对于已知的结果,上面问题的回答只有:0,1

 我们以以下的一个二分类为例,对于一个给定的数据集,存在一条直线可以将整个数据集分为两个部分:

 此时,决策边界为 w 1 x 1 + w 2 x 2 + b = 0 w_{1}x_1+w_2x_2+b=0 w1x1+w2x2+b=0,此时我们很容易将 h ( x ) = w 1 x 1 + w 2 x 2 + b > 0 h(x)=w_1x_1+w_2x_2+b>0 h(x)=w1x1+w2x2+b>0的样本设置为1,反之设置为0。但是这其实是一个感知机的决策过程。
 逻辑回归在此基础上还需要在加上一层,找到分类概率与输入变量之间的关系,通过概率来判断类别。
回顾一下线性回归模型: h ( x ) = w T x + b h(x)=w^Tx+b h(x)=wTx+b在线性模型的基础上加上一个函数 g g g,即 h ( x ) = g ( w T x + b ) h(x)=g(w^Tx+b) h(x)=g(wTx+b)。这个函数就是sigmoid函数,也叫做logistic函数 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1

它可以将一个线性回归中的结果转化为一个概率值。此时 h ( x ) h(x) h(x)表示的就是某件事发生的概率,我们也可以记为 p ( Y = 1 ∣ x ) p(Y=1|x) p(Y=1∣x)
可以看下sigmoid函数的图像:

总结:这样,我们便得到Logistic模型 h ( x ) h(x) h(x)的表达式 h ( x ) = 1 1 + e − w T x + b h(x) = \frac{1}{1+e^{-w^Tx+b}} h(x)=1+ewTx+b1
: h ( x i ) h(x_i) h(xi)的意义在于 样本 x i x_i xi的标签为1的概率为 h ( x ) h(x) h(x)

损失最小化架构

从概率论、统计学角度来看损失最小化架构:
 在统计学中,假设我们已经有了一组样本(X,Y),为了计算出能够产生这组样本的参数。通常我们会采用最大似然估计的方法(一种常用的参数估计的方法)。使用到最大似然估计的话,我们还要一个假设估计,这里我们就是假设 Y Y Y是服从于伯努利分布的。 P ( Y = 1 ∣ x ) = p ( x ) P(Y=1|x)=p(x) P(Y=1∣x)=p(x) P ( Y = 0 ∣ x ) = 1 − p ( x ) P(Y=0|x)=1-p(x) P(Y=0∣x)=1p(x)由于 Y Y Y服从于伯努利分布,我们很容易就有似然函数: L = ∏ [ p ( x i ) y i ] [ 1 − p ( x i ) ] ( 1 − y i ) L=\prod[p(x_i)^{y_i}][1-p(x_i)]^{(1-y_i)} L=[p(xi)yi][1p(xi)](1yi)为了求解我们可以两边取对数:
l o g L = ∑ [ y i l o g ( p ( x i ) ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] logL = \sum [y_ilog(p(x_i))+(1-y_i)log(1-p(x_i))] logL=[yilog(p(xi))+(1yi)log(1p(xi))]

最大似然估计其实就是取概率的概率最大的那个概率模型:这么说你可能不懂,换种方式, ∏ p ( h ( x i ) ∣ θ ) \prod p(h(x_i)|\theta) p(h(xi)θ),已有概率模型 h ( x ) h(x) h(x)在现有样本 θ \theta θ的条件下,计算出值越大,越说明 h ( x ) h(x) h(x)最接近理论概率模型

我们一般喜欢取式子的最小值,所以将原式子转化一下
m i n ( − l o g L ) = m i n − ∑ [ y i l o g ( p ( x i ) ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] min(-logL) =min -\sum [y_ilog(p(x_i))+(1-y_i)log(1-p(x_i))] min(logL)=min[yilog(p(xi))+(1yi)log(1p(xi))]

这里的 p ( x i ) p(x_i) p(xi)对应的就是 h ( x i ) h(x_i) h(xi)

从信息量,熵的角度来看损失最小化架构:

KL散度:当 D K L = 0 D_{KL}=0 DKL=0时,P模型=Q模型,我们追求的就是我们所构建的Q模型(也就是 h ( x ) h(x) h(x))接近真实P模型(这里是样本的理论模型, p i 为 p_i为 pi样本)

没错,根据吉布斯不等式,交叉熵 ≥ \geq P系统的熵,所以当我们取交叉熵的最小值时,Q模型越接近真实的理论P模型,又知道,信息量的定义是 f : = − l o g 2 x f:=-log_2x f:=log2x
所以带入原式子,交叉熵为: − ∑ i = 1 m p i l o g 2 x -\sum_{i=1}^mp_ilog_2x i=1mpilog2x

这也就是对数损失的由来: l ( y , y ^ ) = − ∑ i = 1 m y i l o g 2 y ^ l(y,\hat{y})=-\sum_{i=1}^my_ilog_2\hat{y} l(y,y^)=i=1myilog2y^看老师的课的时候,直接丢给我一个对数损失,然后又直接讲交叉熵,对数损失为啥可以作为损失函数,也没告诉我们。通过上面的知识,读者应该明白这个对数损失怎么来的了吧。继续看下去,你会收获更多。

推荐视频:[“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”]

因为是二分类问题,所以


所以二分类的交叉熵为:

− ∑ [ y i l o g ( p ( x i ) ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] -\sum [y_ilog(p(x_i))+(1-y_i)log(1-p(x_i))] [yilog(p(xi))+(1yi)log(1p(xi))]

这里的 p ( x i ) p(x_i) p(xi)对应的就是 h ( x i ) h(x_i) h(xi)

这两个角度的思考:

  • 它们推导出来的式子是一样的,是不是都能叫交叉熵?
    • 不是的,它们只是式子相同,最大似然估计函数推导的时候是因为习惯上将相乘改为相加,所以才出现的 l o g log log,它的底数可以为任意正数,而且没有单位,而信息量 l o g 2 log_2 log2写进了定义里,并且他是有单位的,比特就是它的单位。

回到Logistc回归算法:

逻辑回归损失函数为什么使用最大似然估计而不用最小二乘法?答案

分类函数

最大概率分类函数

在一个 k k k元分类问题中,给定预测概率模型 h h h,即
h ( x ) = ( h 1 ( x ) , h 2 ( x ) , . . . , h k ( x ) ) h(x)=(h_1(x),h_2(x),...,h_k(x)) h(x)=(h1(x),h2(x),...,hk(x))其中, h i ( x ) h_i(x) hi(x)是样本属于第i个类别的概率。
关于模型h的最大概率分类函数为:
M a x P r o b h ( x ) = a r g m a x h i ( x ) MaxProb_h(x)=argmax h_i(x) MaxProbh(x)=argmaxhi(x)

:argmax,取最大值的下标。
这个 h i ( x ) h_i(x) hi(x)可以理解为,样本标签为 h i h_i hi的概率,最大 h i h_i hi的作为样本i的标签

阈值分类函数

在一个2元分类问题中,设标签在{0,1}中取值。
给定预测概率模型h,即h(x)表示特征组x的标签为1的概率。
关于模型h的以t为阈值的阈值分类函数为:

其就是,如果真实标签为1,那么就是当预测模型(标签为1)函数值大于某个值的时候,便认为预测标签为1,反正为0

Logistic回归的优化算法

梯度下降

理论部分:我的另一篇文章:搜索算法—学习笔记

achine_learning.logistic_regression.lib.logistic_regression_gd
import numpy as np

def sigmoid(scores):
	return 1 / (1 + np.exp(-scores))

class LogisticRegression:
	def fit(self, X, y, eta=0.1, N = 1000): #eta η
		m, n = X.shape
		w = np.zeros((n,1))
		for t in range(N):
			h = sigmoid(X.dot(w)) #hw(X)
			g = 1.0 / m * X.T.dot(h - y) #梯度g
			w = w - eta * g #更新w
 		self.w = w
 	def predict_proba(self, X):
		return sigmoid(X.dot(self.w)) # 概率
		
	def predict(self, X):
		proba = self.predict_proba(X) # 概率
		return (proba >= 0.5).astype(np.int) 

交叉熵是一个凸函数吗,可导。

随机梯度下降

理论部分:我的另一篇文章:搜索算法—学习笔记

import numpy as np

def sigmoid(scores):
	return 1.0 / (1 + np.exp(-scorecs ))

class LogisticRegression:
	def fit(self, X, y, eta_0=10, eta_1=50, N=1000):
		m, n = X.shape
		w = np.zeros((n,1))
		self.w = w
		for t in range(N):
			i = np.random.randint(m) #随机选一个样本 x(i)
			x = X[i].reshape(1, -1) # 1*n 向量
			pred = sigmoid(x.dot(w)) # hw(x)
			g = x.T * (pred - y[i]) # 梯度
			w = w - eta_0 / (t + eta_1) * g # 更新w
			self.w += w
		self.w /= N # w均值

	def predict_proba(self, X):
		return sigmoid(X.dot(self.w))

	def predict(self, X):
		proba = self.predict_proba(X)
		return (proba >= 0.5).astype(np.int)

小批量梯度下降

坐标下降

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.5--计算机网络之基础篇--2.网址到网页解析--(复习+深入)---好好沉淀,加油呀

1.浏览器做的第一步工作是解析 URL 对 URL 进行解析,从而生成发送给 Web 服务器的请求信息 URL? URL 实际上是请求服务器里的文件资源 当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是 /index.html 或者 /default.html 这些文件…

计算机网络复习笔记(三)物理层

文章目录一物理层的基本概念四大特性:两种信号:调制和编码传输介质三大部分二物理层的基本通信技术四种信道复用技术数据的传输方式三OSI模型一物理层的基本概念 四大特性: 机械特性 接口是怎么样的 电气特性 用多少伏的电 功能特性 线路上…

linux基础之计算机基础

一、计算机基础 (1) 计算机发展:电子管、晶体管、集成电路、大规模集成电路 (2) 冯诺依曼体系:用二进制表示数据和指令; 存储程序控制,程序和数据预先存入存储器; 计算机系统5大部分&#xf…

Python 高级编程(文件操作)

文件:存储在某种长期存储设备上的数据!!包括(硬板 u 盘 移动硬盘 光盘) 计算机中临时的数据: 存储在内存中,一旦操作结束,内存中的空间就会被释放 文件(特指普通文本&am…

R语言 4.2.2安装包下载及安装教程

[软件名称]:R语言 4.2.2 [软件大小]: 75.6 MB [安装环境]: Win11/Win10/Win7 [软件安装包下载]: https://pan.quark.cn/s/b6f604930d04 R语言软件的GUI界面比较的简陋,只有一个命令行窗口,且每次创建图片都会跳出一个新的窗口,比较的繁琐,我们可以安装RStudio,来更方便的操作R(…

ChatGPT +工业机器人/自动驾驶控制器的一些尝试

ChatGPT 的功能目前已扩展到机器人领域,可以用语言直观控制如机械臂、无人机、家庭辅助机器人等的多个平台。这会改变人机交互的未来形式吗? 你可曾想过用自己的话告诉机器人该做什么,就像对人说话那样? 比如说,只要告…

多个硬盘挂载到同一个目录

同一目录无法重复挂载,后挂载的会覆盖之前挂载的磁盘。但是现在需要将4块磁盘并行挂载,该如何操作呢? 将2块磁盘合并到一个逻辑卷 进行挂载。 基本知识 基本概念PV(Physical Volume)- 物理卷物理卷在逻辑卷管理中处于最底层,它可…

新能源锂电池行业除杂工艺介绍

近年来新能源汽车快速发展对锂电池的需求引发了人们对锂资源的高度关注。由于锂需求不断上升,全球锂资源越来越紧缺,而在生产含锂产品中会有大量废水、废渣。这些废水废渣含有丰富的锂,对其进行回收提锂具有极高的经济利益。在氟化锂生产中会…

文件操作介绍及C语言实现通讯录管理系统3.0最终版(文件操作版本)

文章目录1. 前言2. 文件操作2.1 什么是文件2.2 文件缓冲区2.3 文件指针2.4 文件的打开与关闭2.5 文件的顺序读写3. 优化通讯录3.1 保存通讯录3.2 加载通讯录4. 结尾1. 前言 上一篇文章我们学习了动态内存开辟的相关知识点,并用动态内存函数优化了我们的通讯录&…

【数据库连接,线程,ThreadLocal三者之间的关系】

一、数据库连接与线程的关系 在实际项目中,数据库连接是很宝贵的资源,以MySQL为例,一台MySQL服务器最大连接数默认是100, 最大可以达到16384。但现实中最多是到200,再多MySQL服务器就承受不住了。因为mysql连接用的是tcp协议&…

JAVA:常用API

一.什么是API? API(Application Programming Interface):应用程序编程接口。 简单的来说:就是Java帮我们已经写好的方法,我们可以直接使用。 二.有哪些常用的API? Object、Objects、StringB…

二战华为成功上岸,准备了小半年,要个27k应该也算不上很高吧~

先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,华为的游戏专场又是最早开始的,就投递了&#xf…

二,八,十,十六进制等常用进制详解

总目录 文章目录总目录一、常用进制1、进制基本信息2、各进制的表示形式二、进制转换原理1、其他进制转为十进制计算原理2、十进制转为其他进制计算原理3、二进制,八进制,十六进制之间的转换结语一、常用进制 1、进制基本信息 基数数码名称描述20 和 1…

【C++】| C/C++内存管理

前言: 在上期,我们已经对类和对象的全部知识进行了总结和梳理。在类和对象学习完之后,今天我将给大家呈现的是关于——C/C内存管理的基本知识。 本文目录 1. C/C内存分布 2. C语言中动态内存管理方式 (1)C语言跟内…

php科研项目申报审批系统

目 录 1 绪论 4 1.1 开发背景 4 1.2 开发意义 4 1.3 相关知识介绍 4 1.3.1 Apache 4 1.3.2 MySQL 5 1.3.3 PHP 6 1.3.4 Dreamweaver CS3 7 1.4 本文所做的工作及组织结构 7 2 系统分析 7 2.1 需求分析 7 2.2 可行性分析 7 2.3 系统界面…

CSDN博客专家证书发放名单(2023年3月已更新)

目录 证书发放频次 6月(第一批)证书发放名单(80位) 7月(第二批)证书发放名单(50位) 8月(第三批)证书发放名单(54位) 9月&#xf…

2个月月活突破1亿,增速碾压抖音,出道即封神的ChatGPT,现在怎么样了?ChatGPT它会干掉测试?

从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。 前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在…

Prometheus监控实战之Exporter详解

1 exporter是什么? 广义上向prometheus提供监控数据的程序都可以成为一个exporter的,一个exporter的实例称为target, exporter来源主要2个方面,一个是社区提供的,一种是用户自定义的。 2 常用exporter 官方和一些社区提供好多ex…

彻底关闭Windows自动更新

彻底关闭Windows自动更新 目录 彻底关闭Windows自动更新 前言 Windows10彻底关闭自动更新方法步骤: 一、禁用Windows Update服务 二、在组策略里关闭Win10自动更新相关服务 三、禁用任务计划里边的Win10自动更新 四、在注册表中关闭Win10自动更新 前言 我们用…

易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办?

易语言支持库配置闪退打不开怎么办? 易语言支持库配置闪退解决方法丨支持库配置崩溃_易语言打开支持易语言支持库配置闪退丨支持库配置崩溃_易语言打开支持库配置就闪退怎么办? 很多人都遇到过 打开易语言支持库安装菜单报错退出的问题 今天教大家解决方法 我们…
最新文章