ML 系列:第 31 节— 机器学习中的协方差和相关性

文章目录

  • 一、说明
  • 二、协方差和相关性
    • 2.1 协方差的概念
    • 2.1 相关
  • 三、有关关联的高级主题 (有关详细信息)
    • 3.1 相关性和独立性
    • 3.2 零相关性和依赖性示例
  • 四、相关性和因果关系
  • 五、结论

一、说明

协方差量化了两个随机变量协同变化的程度。当一个变量的较高值与另一个变量的较高值对齐时,同样,对于较低的值,协方差为正。相反,如果一个变量的较高值与另一个变量的较低值一致,则协方差为负。

二、协方差和相关性

2.1 协方差的概念

这是协方差的公式:
在这里插入图片描述
在这里插入图片描述

协方差提示
协方差表示变量之间线性关系的方向。
如果 X 和 Y 趋于一起增加,则它们的协方差为正。
如果 X 增加,而 Y 减少,则它们的协方差为负。
如果 X 和 Y 是独立的,则它们的协方差为零。

2.1 相关

相关性量化了两个变量的相关程度。它是协方差的归一化形式,其值范围为 -1 到 1。相关性 1 表示完全正关系,-1 表示完全负关系,0 表示无关系。

公式:
在这里插入图片描述
在这里插入图片描述

相关性提示:
相关性不仅衡量两个变量之间线性关系的方向,还衡量其强度。
正值表示正关系。
负值表示负关系。
接近零的值表示没有线性关系。
以下是一些用于更好地理解不同值相关性的图:
在这里插入图片描述

图 2.与不同值的相关性 [维基百科上的数据]
实例
示例 1:协方差计算
让我们考虑两个变量 X 和 Y,它们的值如下:

X = [2, 4, 6, 8]
Y = [1, 3, 5, 7]
协方差的 Python 代码:

import numpy as np# Data
X = np.array([2, 4, 6, 8])
Y = np.array([1, 3, 5, 7])# Mean of X and Y
mean_X = np.mean(X)
mean_Y = np.mean(Y)# Covariance Calculation
covariance = np.sum((X - mean_X) * (Y - mean_Y)) / (len(X) - 1)print(f"Covariance: {covariance}")

协方差:6.6666666666666667

示例 2:相关性计算
使用相同的变量 X 和 Y,我们计算它们的相关性。

用于关联的 Python 代码:

# Data
X = np.array([2, 4, 6, 8])
Y = np.array([1, 3, 5, 7])# Standard deviations of X and Y
std_X = np.std(X, ddof=1)
std_Y = np.std(Y, ddof=1)# Correlation Calculation
correlation = covariance / (std_X * std_Y)print(f"Correlation: {correlation}")

相关性:1.00000000000000002

使用库进行协方差和相关性:

我们还可以使用该库直接计算协方差和相关性:numpy

# Covariance Matrix
cov_matrix = np.cov(X, Y)
print(f"Covariance Matrix:\n{cov_matrix}")
print()# Correlation Matrix
corr_matrix = np.corrcoef(X, Y)
print(f"Correlation Matrix:\n{corr_matrix}")

这是上述代码的输出:

在这里插入图片描述

图 1.协方差和相关性的输出
可视化数据有助于了解变量之间的关系。

import matplotlib.pyplot as pltplt.scatter(X, Y)
plt.title("Scatter Plot of X and Y")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

这是上述代码的输出:
在这里插入图片描述

图 3.X 和 Y 的散点图

三、有关关联的高级主题 (有关详细信息)

3.1 相关性和独立性

  1. 独立性的定义
    如果一个变量的出现不会影响另一个变量的出现,则两个变量 X 和 Y 是独立的。从数学上讲,如果满足以下条件,X 和 Y 是独立的:

  2. 相关性和独立性
    独立性意味着零相关性:如果两个变量是独立的,则它们的相关性为零。然而,反之则不一定是正确的。
    零相关性并不意味着独立性:两个变量的相关性可以为零,但仍以非线性方式相关。

3.2 零相关性和依赖性示例

将 X 视为 [−1, 1] 上的均匀分布随机变量,并设 Y=X²。在这里,X 和 Y 不是线性相关的(相关性为零),但它们显然是相关的(因为 Y 由 X 决定)。

import numpy as np
import matplotlib.pyplot as plt# Generating data
X = np.random.uniform(-1, 1, 1000)
Y = X ** 2# Calculating correlation
correlation = np.corrcoef(X, Y)[0, 1]plt.scatter(X, Y)
plt.title(f"Correlation between X and Y is: {correlation:.4}")
plt.xlabel('X')
plt.ylabel('Y');

输出:
在这里插入图片描述

图 4. 零相关性和依赖性

四、相关性和因果关系

  1. 因果关系的定义
    因果关系意味着一个变量的变化直接导致另一个变量的变化。建立因果关系需要的不仅仅是观察相关性;它需要对照实验或纵向研究。

  2. 相关性并不意味着因果关系
    仅仅因为两个变量相关并不意味着一个变量导致另一个变量。相关性可能是由于:

巧合:变量是偶然相关的。
混杂变量:另一个变量影响这两个变量。
无因果关系的相关性示例
有研究表明,在某些地区,鹳的数量与人类出生率呈正相关!这种相关性可能会导致人们错误地得出鹳鸟接生婴儿的结论。然而,这种相关性背后的实际原因在于,较高的鹳数量和较高的出生率都与农村地区有关,而不是鹳和婴儿之间的因果关系。
在这里插入图片描述

图 5. 鹳和人类出生率
详细说明
鹳:一个区域中的鹳数量。
出生率:一个地区的人类出生人数。
农村:混杂变量。与城市地区相比,农村地区的鹳鸟数量和出生率往往更高。
Python 示例
让我们模拟数据来说明这个例子。

import numpy as np
import pandas as pd# Data generation
np.random.seed(42)
num_villages = 100
villages = np.arange(1, num_villages + 1)
stork_population = np.random.poisson(lam=30, size=num_villages)  # Simulating stork population
birth_rate = 0.5 * stork_population + np.random.normal(scale=5, size=num_villages)  # Birth rate influenced by stork population# Creating DataFrame
data = pd.DataFrame({'Village': villages,'Stork Population': stork_population,'Birth Rate': birth_rate
})# Correlation calculation
correlation = np.corrcoef(data['Stork Population'], data['Birth Rate'])[0, 1]print(f"Correlation between Stork Population and Birth Rate: {correlation:.2f}")

鹳鸟种群与出生率的相关性:0.38

让我们可视化它以便更好地理解:

import matplotlib.pyplot as pltplt.scatter(data['Stork Population'], data['Birth Rate'])
plt.title('Stork Population vs. Birth Rate')
plt.xlabel('Stork Population')
plt.ylabel('Birth Rate')
plt.show()

输出:
在这里插入图片描述

图 6. 鹳鸟种群与出生率
结果说明
正相关:计算将显示鹳鸟种群与出生率之间的正相关关系。
误解:如果不了解上下文,人们可能会错误地认为鹳是导致出生率增加的原因。
混杂变量:实际上,较高的鹳鸟数量和出生率在农村地区都是典型的,这是导致观察到的相关性的潜在因素。
此示例强调两个变量之间的相关性并不意味着直接的因果关系。可能还有其他潜在因素(混杂变量)有助于观察到的相关性。因此,在得出有关因果关系的结论之前,仔细分析和考虑所有可能的因素是必不可少的。

五、结论

在机器学习系列的第 31 天,我们深入研究了协方差和相关性的基本统计概念。通过实际的 Python 示例,我们演示了如何计算和解释这些指标,强调了区分相关性和因果关系的重要性,并了解混杂变量的作用。

保持好奇心,继续探索!您迈出的每一步都让您更接近掌握机器学习的艺术和科学。不要错过这个激动人心的旅程的下一章!

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

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

相关文章

谈谈微服务的常用组件

由于微服务给系统开发带来了一些问题和挑战,如服务调用的复杂性、分布式事务的处理、服务的动态管理等,为了更好地解决这些问题和挑战,各种微服务治理的组件应运而生,充当微服务架构的基石和支撑,常用组件如下表&#…

2024算法基础公选课练习七(BFS1)

一、前言 还是偏基础的bfs&#xff0c;但是有几个题不是很好写 二、题目总览 三、具体题目 3.1 问题 A: 数据结构-队列-奇怪的电梯 我的代码 可以看成求一维平面的bfs最短路 #include <bits/stdc.h> using i64 long long; using pii std::pair<int,int>; co…

探索.NET世界的无限可能——带你轻松了解.NET

前言 由于目前用到的技术栈有C#&#xff0c;而学习C#离不开.NET框架&#xff0c;正如学习Java离不开学习Spring框架一样。 .NET是微软开发的一个非常强大的框架&#xff0c;它不仅擅长桌面和移动开发&#xff0c;而且还能够支持Web开发和游戏引擎开发&#xff0c;在现在热门的…

[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker pull线上镜像方式构建编译环境

T. 已测试目录 主机类型主机版本Docker镜像版本结果WSL2Ubuntu22.04Ubuntu20.04PASSWSL2Ubuntu22.04Ubuntu18.04PASS R. 软硬件要求&#xff1a; 硬件&#xff1a; 设备容量备注硬盘>500G多版本系统测试&#xff0c;必须固态&#xff0c;否则编译卡死硬盘>300G单系统…

RHCE——SELinux

SELinux 什么是SELinux呢&#xff1f;其实它是【Security-Enhanced Linux】的英文缩写&#xff0c;字母上的意思就是安全强化Linux的意思。 SELinux是由美国国家安全局(NSA)开发的&#xff0c;当初开发的原因是很多企业发现&#xff0c;系统出现问题的原因大部分都在于【内部…

Python - 函数(四)

函数&#xff1a;在编写程序的过程中&#xff0c;有某一功能代码块出现多次&#xff0c; 但是为了提高编写的效率以及代码的重用&#xff0c;所以把具有独立功能的代码块组织为一个小模块&#xff0c;这就是函数 ‌Python中的函数‌是一组被命名的可执行代码&#xff0c;用于完…

代码随想录打卡DAY21

算法记录第21天 [二叉树] 1.LeetCode 538. 把二叉搜索树转换为累加树 题目描述&#xff1a; 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原…

[在线实验]-ActiveMQ Docker镜像的下载与部署

镜像下载 下载ActiveMQ的Docker镜像文件。通常&#xff0c;这些文件会以.tar格式提供&#xff0c;例如activemq.tar。 docker的activemq镜像资源-CSDN文库 加载镜像 下载完成后&#xff0c;您可以使用以下命令将镜像文件加载到Docker中&#xff1a; docker load --input a…

VTK中对于相机camera的设置

1. 相机的核心属性 在 VTK 中&#xff0c;vtkCamera 的核心属性有默认值。如果你不设置这些属性&#xff0c;相机会使用默认值来渲染场景。 Position&#xff08;默认值&#xff1a;(0, 0, 1)&#xff09;&#xff1a; 默认情况下&#xff0c;相机位于 Z 轴正方向的 (0, 0, 1)…

学习日志017--python的几种排序算法

冒泡排序 def bubble_sort(alist):i 0while i<len(alist):j0while j<len(alist)-1:if alist[j]>alist[j1]:alist[j],alist[j1] alist[j1],alist[j]j1i1l [2,4,6,8,0,1,3,5,7,9] bubble_sort(l) print(l) 选择排序 def select_sort(alist):i 0while i<len(al…

超高流量多级缓存架构设计!

文章内容已经收录在《面试进阶之路》&#xff0c;从原理出发&#xff0c;直击面试难点&#xff0c;实现更高维度的降维打击&#xff01; 文章目录 电商-多级缓存架构设计多级缓存架构介绍多级缓存请求流程负载均衡算法的选择轮询负载均衡一致性哈希负载均衡算法选择 应用层 Ngi…

红黑树的概念以及基本模拟

目录 一、概念和规则&#xff1a; 1、思考为什么最长路径不超过最短路径的二倍&#xff1f; 2、红黑树的效率&#xff1f; 二、红黑树的代码实现 1、红黑树的节点结构 2、红黑树的插入 1、大致过程&#xff1a; 2、维护的三种情况&#xff1a; 1、情况一&#xff1a;变…

IP反向追踪技术,了解一下?

DOSS&#xff08;拒绝服务&#xff09;攻击是现在比较常见的网络攻击手段。想象一下&#xff0c;有某个恶意分子想要搞垮某个网站&#xff0c;他就会使用DOSS攻击。这种攻击常常使用的方式是IP欺骗。他会伪装成正常的IP地址&#xff0c;让网络服务器以为有很多平常的请求&#…

【C++习题】15.滑动窗口_串联所有单词的子串

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 30. 串联所有单词的子串 题目描述&#xff1a; 解法 滑动窗口哈希表 这题和第14题不同的是&#xff1a; 哈希表不同&#xff1a;hash<string,int>left与right指…

论文笔记(五十七)Diffusion Model Predictive Control

Diffusion Model Predictive Control 文章概括摘要1. Introduction2. Related work3. 方法3.1 模型预测控制3.2. 模型学习3.3. 规划&#xff08;Planning&#xff09;3.4. 适应 4. 实验&#xff08;Experiments&#xff09;4.1. 对于固定奖励&#xff0c;D-MPC 可与其他离线 RL…

oracle 创建只可以查询权限用户+sqldeveloper如何看到对应表

声明 申明部分是从其他csdn用户哪里复制的&#xff0c;只是自己操作后发现无法达到我最后的预期&#xff0c;所以关闭忘记是看的那篇了&#xff0c;如果有侵权请见谅&#xff0c;联系我删除谢谢。 好了&#xff0c;故事的开始是我最近删投产表了。没错职业黑点&#xff0c;清…

比特币libsecp256k1中safegcd算法形式化验证完成

1. 引言 比特币和其他链&#xff08;如 Liquid&#xff09;的安全性取决于 ECDSA 和 Schnorr 签名等数字签名算法的使用。Bitcoin Core 和 Liquid 都使用名为 libsecp256k1 的 C 库来提供这些数字签名算法&#xff0c;该库以其所运行的椭圆曲线命名。这些算法利用一种称为modu…

15分钟做完一个小程序,腾讯这个工具有点东西

我记得很久之前&#xff0c;我们都在讲什么低代码/无代码平台&#xff0c;这个概念很久了&#xff0c;但是&#xff0c;一直没有很好的落地&#xff0c;整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来&#xff0c;各大科技公司也都推出了很多 AI 代码助手&#xff…

Kafka知识体系

一、认识Kafka 1. kafka适用场景 消息系统&#xff1a;kafka不仅具备传统的系统解耦、流量削峰、缓冲、异步通信、可扩展性、可恢复性等功能&#xff0c;还有其他消息系统难以实现的消息顺序消费及消息回溯功能。 存储系统&#xff1a;kafka把消息持久化到磁盘上&#xff0c…

JVM调优篇之JVM基础入门AND字节码文件解读

目录 Java程序编译class文件内容常量池附录-访问标识表附录-常量池类型列表 Java程序编译 Java文件通过编译成class文件后&#xff0c;通过JVM虚拟机解释字节码文件转为操作系统执行的二进制码运行。 规范 Java虚拟机有自己的一套规范&#xff0c;遵循这套规范&#xff0c;任…