【机器学习基础】机器学习入门核心:Jaccard相似度 (Jaccard Index) 和 Pearson相似度 (Pearson Correlation)
机器学习入门核心:Jaccard相似度 (Jaccard Index) 和 Pearson相似度 (Pearson Correlation)
- 一、算法逻辑
- Jaccard相似度 (Jaccard Index)
- **Pearson相似度 (Pearson Correlation)**
- 二、算法原理与数学推导
- 1. Jaccard相似度公式
- 2. Pearson相似度公式
- 三、模型评估中的角色
- 相似度度量的评估重点
- 在推荐系统中的评估
- 四、应用案例
- Jaccard相似度案例
- Pearson相似度案例
- 五、面试题及答案
- 常见问题:
- 六、相关论文
- 七、优缺点对比
- 总结
一、算法逻辑
Jaccard相似度 (Jaccard Index)
- 核心思想:
衡量两个集合的相似性,定义为 交集大小与并集大小的比值。关注样本间的 共有特征是否存在,忽略具体数值大小。 - 适用场景:
文本相似度(词集模型)、推荐系统(用户行为二值化)、生物信息学(基因序列匹配)。
Pearson相似度 (Pearson Correlation)
- 核心思想:
衡量两个变量间的 线性相关程度,通过协方差与标准差的比值计算。关注数值变化的 方向和幅度一致性。 - 适用场景:
推荐系统(用户评分预测)、金融(资产价格相关性)、生物统计(基因表达量相关性)。
二、算法原理与数学推导
1. Jaccard相似度公式
设集合 A A A 和 B B B,其相似度为:
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B) = \frac{|A \cap B|}{|A \cup B|} J(A,B)=∣A∪B∣∣A∩B∣
- 分子: ∣ A ∩ B ∣ |A \cap B| ∣A∩B∣ 为共同元素个数
- 分母: ∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ |A \cup B| = |A| + |B| - |A \cap B| ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣
- 值域: [ 0 , 1 ] [0, 1] [0,1],0 表示无交集,1 表示完全相同
扩展形式(加权Jaccard):
J w ( A , B ) = ∑ i min ( w A , i , w B , i ) ∑ i max ( w A , i , w B , i ) J_w(A, B) = \frac{\sum_i \min(w_{A,i}, w_{B,i})}{\sum_i \max(w_{A,i}, w_{B,i})} Jw(A,B)=∑imax(wA,i,wB,i)∑imin(wA,i,wB,i)
适用于带权重的特征(如TF-IDF)。
2. Pearson相似度公式
设变量 X X X 和 Y Y Y 的观测值分别为 { x 1 , x 2 , . . . , x n } \{x_1, x_2, ..., x_n\} {x1,x2,...,xn} 和 { y 1 , y 2 , . . . , y n } \{y_1, y_2, ..., y_n\} {y1,y2,...,yn},其相关系数为:
ρ X , Y = cov ( X , Y ) σ X σ Y = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 \rho_{X,Y} = \frac{\text{cov}(X,Y)}{\sigma_X \sigma_Y} = \frac{\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^n (x_i - \bar{x})^2} \sqrt{\sum_{i=1}^n (y_i - \bar{y})^2}} ρX,Y=σXσYcov(X,Y)=∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
- x ˉ , y ˉ \bar{x}, \bar{y} xˉ,yˉ:样本均值
- cov ( X , Y ) \text{cov}(X,Y) cov(X,Y):协方差
- σ X , σ Y \sigma_X, \sigma_Y σX,σY:标准差
- 值域: [ − 1 , 1 ] [-1, 1] [−1,1]
- 1 1 1:完全正相关
- − 1 -1 −1:完全负相关
- 0 0 0:无线性相关
简化计算形式:
ρ X , Y = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 n ∑ y i 2 − ( ∑ y i ) 2 \rho_{X,Y} = \frac{n \sum x_i y_i - \sum x_i \sum y_i}{\sqrt{n \sum x_i^2 - (\sum x_i)^2} \sqrt{n \sum y_i^2 - (\sum y_i)^2}} ρX,Y=n∑xi2−(∑xi)2n∑yi2−(∑yi)2n∑xiyi−∑xi∑yi
三、模型评估中的角色
相似度度量的评估重点
-
鲁棒性:
- Jaccard 对二元噪声鲁棒(如文本拼写错误)
- Pearson 对数值异常值敏感(需数据标准化)
-
可解释性:
- Jaccard:直观的集合重叠比例
- Pearson:明确的方向性(正/负相关)
-
计算效率:
- Jaccard: O ( n ) O(n) O(n),仅需统计元素存在性
- Pearson: O ( n ) O(n) O(n),但需计算均值/协方差
在推荐系统中的评估
相似度 | 适用反馈类型 | 典型指标 |
---|---|---|
Jaccard | 隐式反馈(点击/购买) | Precision@K, Recall@K |
Pearson | 显式反馈(评分) | RMSE, MAE |
四、应用案例
Jaccard相似度案例
-
文档去重:
- 步骤:将文档转为词集 → 计算Jaccard相似度 → 若 J > 0.9 J > 0.9 J>0.9 判定为重复
- 工具:MinHash 加速大规模文档比较(如搜索引擎爬虫去重)
-
推荐系统:
- 场景:用户A购买商品集 { A , B , D } \{A,B,D\} {A,B,D},用户B购买 { A , C , D } \{A,C,D\} {A,C,D}
- 计算: J = ∣ { A , D } ∣ ∣ { A , B , C , D } ∣ = 0.5 J = \frac{|\{A,D\}|}{|\{A,B,C,D\}|} = 0.5 J=∣{A,B,C,D}∣∣{A,D}∣=0.5
Pearson相似度案例
-
电影推荐(Netflix):
- 场景:用户对电影的评分数据
用户 电影X 电影Y 电影Z Alice 5 3 4 Bob 4 2 ? - 计算Alice与Bob的Pearson相似度:
ρ = ( 5 − 4 ) ( 4 − 3 ) + ( 3 − 4 ) ( 2 − 3 ) ( 5 − 4 ) 2 + ( 3 − 4 ) 2 ( 4 − 3 ) 2 + ( 2 − 3 ) 2 = 1 + 1 2 2 = 1 \rho = \frac{(5-4)(4-3) + (3-4)(2-3)}{\sqrt{(5-4)^2 + (3-4)^2} \sqrt{(4-3)^2 + (2-3)^2}} = \frac{1+1}{\sqrt{2}\sqrt{2}} = 1 ρ=(5−4)2+(3−4)2(4−3)2+(2−3)2(5−4)(4−3)+(3−4)(2−3)=221+1=1 - 预测:Bob对Z的评分可能接近Alice的评分4
- 场景:用户对电影的评分数据
-
金融相关性分析:
- 计算两只股票收益率的Pearson相关系数
- ρ > 0.8 \rho > 0.8 ρ>0.8 表示强正相关(同涨同跌)
五、面试题及答案
常见问题:
-
Q: Jaccard和Pearson的本质区别是什么?
A: Jaccard衡量 集合重叠度(存在性),Pearson衡量 数值变化趋势(线性相关性)。 -
Q: 何时选用Jaccard而非Pearson?
A: 当数据为二元特征(如是否购买)或需要忽略数值大小时(如文本关键词匹配)。 -
Q: Pearson相关系数为0是否意味着变量独立?
A: 否!只能说明无线性关系,但可能存在非线性关系(如二次函数)。 -
Q: 如何处理Pearson对异常值的敏感性问题?
A:- 数据标准化(如Z-score)
- 改用Spearman秩相关(基于排名而非原始值)
- 移除离群点
六、相关论文
-
Jaccard相似度:
- 原始论文:Jaccard, P. (1901). “Étude comparative de la distribution florale dans une portion des Alpes et des Jura”
- 优化扩展:Broder, A. Z. (1997). “On the Resemblance and Containment of Documents”(MinHash算法)
-
Pearson相似度:
- 原始论文:Pearson, K. (1895). “Notes on Regression and Inheritance in the Case of Two Parents”
- 推荐系统应用:Sarwar, B. et al. (2001). “Item-based Collaborative Filtering Recommendation Algorithms”
七、优缺点对比
相似度 | 优点 | 缺点 |
---|---|---|
Jaccard | 1. 计算简单高效; 2. 对二元数据直观; 3. 不受特征值大小影响 | 1. 忽略特征权重; 2. 对稀疏数据敏感(分母小) |
Pearson | 1. 捕捉线性关系方向; 2. 可解释性强; 3. 标准化消除量纲影响 | 1. 对异常值敏感; 2. 要求数据近似正态分布; 3. 仅反映线性关系 |
总结
- Jaccard相似度:
处理 二元特征 和 集合关系 的金标准,适用于文本、图结构数据。 - Pearson相似度:
分析 连续变量线性相关性 的核心工具,适用于评分预测、金融分析。
关键选择依据:数据特征(二元/连续)、分析目标(存在性/趋势性)、计算效率需求。
相关文章:

【机器学习基础】机器学习入门核心:Jaccard相似度 (Jaccard Index) 和 Pearson相似度 (Pearson Correlation)
机器学习入门核心:Jaccard相似度 (Jaccard Index) 和 Pearson相似度 (Pearson Correlation) 一、算法逻辑Jaccard相似度 (Jaccard Index)**Pearson相似度 (Pearson Correlation)** 二、算法原理与数学推导1. Jaccard相…...

QT之头像剪裁效果实现
文章目录 源码地址,环境:QT5.15,MinGW32位效果演示导入图片设置剪裁区域创建剪裁小窗口重写剪裁小窗口的鼠标事件mousePressEventmouseMoveEventmouseReleaseEvent 小窗口移动触发父窗口的重绘事件剪裁效果实现 源码地址,环境&…...
apptrace 视角下移动端深度链接技术与优势
官网链接:AppTrace - 专业的移动应用推广追踪平台 App 拉起,本质上是移动端深度链接技术的具象化呈现。在这一领域,apptrace 凭借前沿技术与创新理念,实现从 H5 网页到 App 的无缝跳转,精准定位 App 内指定页面&#…...
微前端之micro-app数据通信
在这之前如果还没接触过微前端,可以找一些视频、资料先去了解一下,就不在这里赘述了。 现在常见的微前端框架包括: single-spa micro-app qiankun EMP 无界 目前了解到的基本上是这些哈,大家感兴趣可以自行去了解一下,看下它们之间的区别。 因为我目前使用的是mic…...

【GPT入门】第40课 vllm与ollama特性对比,与模型部署
【GPT入门】第40课 vllm与ollama特性对比,与模型部署 1.两种部署1.1 vllm与ollama特性对比2. vllm部署2.1 服务器准备2.1 下载模型2.2 提供模型服务 1.两种部署 1.1 vllm与ollama特性对比 2. vllm部署 2.1 服务器准备 在autodl 等大模型服务器提供商,…...

unity开发棋牌游戏
使用unity开发的棋牌游戏,目前包含麻将、斗地主、比鸡、牛牛四种玩法游戏。 相关技术 客户端:unity 热更新:xlua 服务器:c Web服务器:ruoyi 游戏视频 unity开发棋牌游戏 游戏截图...

Nat Commun项目文章 ▏小麦CUTTag助力解析转录因子TaTCP6调控小麦氮磷高效利用机制
今年2月份发表在《Nature Communications》(IF14.4)的“TaTCP6 is required for efficientand balanced utilization of nitrate and phosphorus in wheat”揭示了TaTCP6在小麦氮磷利用中的关键调控作用,为优化肥料利用和提高作物产量提供了理…...
Qt OpenGL 相机实现
在Qt中使用OpenGL实现相机功能主要涉及视图矩阵(view matrix)的操作,包括相机位置、观察方向和上向量等概念。下面我将介绍如何在Qt中实现一个基本的3D相机。 基本概念 OpenGL相机本质上是通过视图矩阵(view matrix)来实现的,它定义了从世界空间到观察…...
云原生时代 Kafka 深度实践:03进阶特性与最佳实践
3.1 数据可靠性与一致性 Producer 端可靠性策略 Kafka 通过acks参数控制消息确认机制,不同设置适用于不同场景: acks0:Producer 发送消息后不等待 Broker 确认,立即返回。这种模式吞吐量最高,但可能丢失消息&#x…...
基于关联表字段映射的批量数据更新 SQL 实现方案(AIGC)
UPDATE po_upfiles u JOIN po_micro m ON u.from_id = m.ent_id_old SET u.from_id = m.ent_id; 我的提问 批量更新po_upfiles数据中from_id=ent_id_old的数据中from_id为ent_id,语句怎么写“问题重新按照适合AI的逻辑进行提问,如何修改 精确版...
Hadoop复习(二)
部署Hadoop 考试不考部署,就复习选择和大题 问题 1 单项选择 2 / 2 分 下面哪个是MapReduce的核心配置文件 core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 问题 2 单项选择 2 / 2 分 下面哪个是HDFS的核心配置文件 core-site.xml hdf…...

C 语言开发中常见的开发环境
目录 1.Dev-C 2.Visual Studio Code 3.虚拟机 Linux 环境 4.嵌入式 MCU 专用开发环境 1.Dev-C 使用集成的 C/C 开发环境(适合基础学习),下载链接Dev-C下载 - 官方正版 - 极客应用 2.Visual Studio Code 结合 C/C 扩展 GCC/MinGW 编译器,…...

vscode命令行debug
vscode命令行debug 一般命令行debug会在远程连服务器的时候用上,命令行debug的本质是在执行时暴露一个监听端口,通过进入这个端口,像本地调试一样进行。 这里提供两种方式: 直接在命令行中添加debugpy,适用于python…...

Matlab作图之 subplot
1. subplot(m, n, p) 将当前图形划分为m*n的网格,在 p 指定的位置创建坐标轴 matlab 按照行号对子图的位置进行编号 第一个子图是第一行第一列,第二个子图是第二行第二列......... 如果指定 p 位置存在坐标轴, 此命令会将已存在的坐标轴设…...
Springboot 项目一启动就获取HttpSession
在 Spring Boot 项目中,HttpSession 是有状态的,通常只有在用户发起 HTTP 请求并建立会话后才会创建。因此,在项目启动时(即应用刚启动还未处理任何请求)是无法获取到 HttpSession 的。 方法一:使用 HttpS…...
PostgreSQL的扩展 insert_username
PostgreSQL的扩展 insert_username insert_username 是 PostgreSQL 的一个实用扩展,用于自动记录数据行的创建者和最后修改者信息。这个扩展特别适合需要审计跟踪的应用场景。 一 扩展安装与启用 1.1 安装扩展 -- 使用超级用户安装 CREATE EXTENSION insert_use…...

【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)
机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法) 一、算法逻辑二、算法原理与数学推导1. 距离度量2. 簇间距离计算(连接标准)3. 算法伪代码(凝聚式) 三、模型评估1. 内部评估指标2. …...

Google Play的最新安全变更可能会让一些高级用户无法使用App
喜欢Root或刷机的Android用户要注意了,Google最近全面启用了新版Play Integrity API,可能会导致部分用户面临无法使用某些App的窘境。Play Integrity API是Google提供给开发者的工具,用于验证App是否在“未修改”的设备上运行。 许多重要应用…...
深度学习篇---人脸识别中的face-recognition库和深度学习
深度学习方法和使用 Python 的face_recognition库进行人脸识别在技术原理、实现方式和应用场景上有显著区别,以下从多个维度对比分析: 一、技术原理 1. 深度学习方法 核心逻辑:基于神经网络(如卷积神经网络 CNN)构建…...
(11)java+ selenium->元素定位之By_tag_name
1.简介 继续WebDriver关于元素定位,这篇介绍By ClassName。tagName是DOM结构的一部分,其中页面上的每个元素都是通过输入标签,按钮标签或锚定标签等标签定义的。每个标签都具有多个属性,例如ID,名称,值类等。就其他定位符而言在Selenium中,我们使用了标签的这些属性值来…...

React---day5
4、React的组件化 组件的分类: 根据组件的定义方式,可以分为:函数组件(Functional Component )和类组件(Class Component);根据组件内部是否有状态需要维护,可以分成:无状态组件(Stateless Component )和…...

Java开发之定时器学习
面试 一、线程池实现定时器 核心代码: public static void main(String[] args) {ScheduledExecutorService scheduledExecutorService Executors.newScheduledThreadPool(5);Runnable runnable () -> System.out.println("当前线程"Thread.current…...

HealthBench医疗AI评估基准:技术路径与核心价值深度分析(上)
引言:医疗AI评估的新范式 在人工智能技术迅猛发展的当下,医疗AI系统已逐渐从实验室走向临床应用。然而,医疗领域的特殊性要求这些系统不仅需要在技术指标上表现出色,更需要在实际临床场景中展现出可靠、安全且有效的性能。长期以来,医疗AI评估领域面临着三个核心挑战:评…...

Windows+VSCode搭建小智(xiaozhi)开发环境
作为一名DIY达人,肯定不会错过最近很火的“小智AI聊天机器人”,网上教程非常丰富,初级玩家可以直接在乐鑫官方下载ESP-IDF安装包并经过简单的菜单式配置后,即可进行代码编译和烧录(详见:Docs)。…...

VueScan Pro v9.8.45.08 一款图像扫描软件,中文绿色便携版
VueScan是著名的第三方底片扫描仪驱动程序,支持市场可见绝大多数型号的底片扫描仪,可以更为灵活地控制扫描过程,更深入地发掘硬件潜力,获取色彩 完美的高质量扫描结果。VueScan支持200种以上的底片类型,在剪取图像时制…...

FreeRTOS通俗理解指南:基础概念 + 架构+ 内核组件+练手实验
RTOS 基础概念 想象一下,你是一个忙碌的厨师,在厨房里同时要完成煎牛排和煮意大利面两项任务。 1.传统单线程模式(没有RTOS) 如果你只能按顺序一项一项地做,就会是这样的过程: 先煎一会儿牛排然后去看看…...
Python后端开发实战:从0到1搭建高可用API服务
引言 Python凭借其简洁的语法和丰富的生态(如Django、Flask、FastAPI等框架),已成为后端开发的主流语言之一。本文将结合一个真实电商API项目,分享从架构设计到部署上线的完整流程,并总结开发过程中常见的坑与最佳实践。 一、实战案例:电商API开发流程 1.1 技术选型 框…...

房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块
房屋租赁系统 JavaVue.jsSpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块 百度云盘链接:https://pan.baidu.com/s/16YRGBPsfbd4_HxXhO0jM5Q 密码:smk4 摘 要 房屋是人类生活栖息的重要…...
4、ubuntu系统 | 文本和目录操作函数
1、目录操作函数 ls(列出目录内容) 用途:列出指定目录中的文件和子目录。语法:ls [选项] [路径]常用选项: -l:以长格式显示文件详细信息(权限、所有者、大小、时间等)。-aÿ…...
docker部署ELK,ES开启安全认证
ES启动命令 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:8.17.0 es启动之后需要进入es容器,重置密码 elasticsearch-reset-password -u elastic -i 重置后的密码配置到kibana.yml中,启动kibana docker run …...