当前位置: 首页 > news >正文

1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning

2022CIKM

1 intro

1.1 背景

  • 轨迹相似度计算是轨迹分析任务(相似子轨迹搜索、轨迹预测和轨迹聚类)最基础的组件之一
  • 现有的关于轨迹相似度计算的研究主要可以分为两大类:
    • 传统方法
      • DTW、EDR、EDwP等
      • 二次计算复杂度O(n^2)
      • 缺乏稳健性
        • 会受到非均匀采样、噪点的影响
    • 基于学习的方法
      • 旨在减少计算复杂度和/或提高稳健性
      • 根据它们的目的将它们分为两个方向
        • 神经逼近方法
          • 利用强大的神经网络在隐藏空间中逼近任何现有的轨迹测量
          • 训练一个神经网络g以将轨迹编码到隐藏空间
          • 最小化估计的相似性和基准之间的差异
            • |D_H(g(T_i),g(T_j))-D(T_i,T_j)|
              • Dh​是隐藏空间中的差异(相似性)测量(例如,欧几里得距离)
          • 不需要两个轨迹之间的点对齐,因此计算复杂度在轨迹的长度上是线性的
          • 由于要逼近的测量而遭受 稳健性问题
        • auto-encoder 方法
          • 无监督地学习映射函
          • 为了提高潜在表示相对于低质量的鲁棒性,这些方法采用了不同的策略
            • t2vec利用去噪顺序自编码器
            • Trembr整合了路网信息并设计了多个任务
          • 在训练编码模型方面 效率低下
            • 这是由于顺序自编码器架构的固有限制,其中解码过程和逐步重构非常耗时
            • t2vec 在 Tesla K40 GPU 上训练 2千万轨迹的一个epoch大约需要 14 小时,平均每个轨迹有 60 个样本
          • 这些方法试图学习相同基础路线轨迹(高采样轨迹)的一致表示以解决质量问题
            • 换句话说,即使来自相同基础路线的轨迹具有不同的采样率和噪点,表示应该是相同的
            • 论文认为,由于他们的目标是重构轨迹而不是基础路线,顺序自编码器无法实现这一目标
            • ——>对于顺序自编码器来说, 获得一致的表示是非常困难的

1.2 论文思路

  • 提出了一种基于对比学习的轨迹相似性计算的新型鲁棒模型(CL-TSim)
    • 遵循常见的范例,首先学习轨迹的表示,然后使用欧几里得距离在编码空间中计算轨迹之间的相似性
  • 对轨迹 Ti 进行预处理,以获得增强轨迹 Tj
    • 其中使用下采样和扭曲增强来适应轨迹特征,包括非均匀采样率和噪点
  • 同时将它们编码到隐藏空间并最大化它们之间的一致性

  • 遵循对比学习架构,CL-TSim 只包含一个编码器和一个投影器
    • 编码器用于编码原始轨迹以学习它们的表示
    • 投影器用于将表示映射到损失函数的度量空间
    • 与顺序自编码器相比,它不需要解码器和逐步重构,这可以显著减少训练时间。

2 Preliminary

2.1 基础路线

  • 由移动对象生成的连续空间曲线
  • 只存在于理论中,因为配备了 GPS 的设备无法连续记录时空位置

2.2  轨迹

  • 移动对象的轨迹,记为 T
  • 从基础路线中采样的一系列有限点的序列,形式为 𝑇=((𝑥1,𝑦1,𝑡1),(𝑥2,𝑦2,𝑡2),...,(𝑥𝑛,𝑦𝑛,𝑡𝑛))
  • xi,yi 代表在时间戳 𝑡𝑖 的采样位置的经度和纬度信息
  • 受采样方法和设备的影响,轨迹通常基于不同的采样率生成,并包含有噪点

2.3 问题定义

给定一组轨迹,我们的问题是设计一个高效且鲁棒的模型,以计算轨迹之间的相似性,目标如下:

1)高效的表示学习:有效地为每个轨迹 T 学习一个表示 t,其中 t 可以反映轨迹 T 的基础路线,用于计算轨迹相似性;

 2)模型的鲁棒性:换句话说,两个任意轨迹Ti 和Tj 之间的相似性是一致的,不受非均匀采样率和噪点的影响

3 模型

4 实验

4.1 数据

4.2 评估方法

4.2.1 自相似性

  • 给定一组轨迹,随机选择 m 条轨迹和 n 条轨迹,分别记为 Q 和 D
    • 对于 Q 中的每条轨迹,通过交替从中取点来创建两个子轨迹(称为双胞胎轨迹),并将第一个子轨迹加入 Q1,而另一个加入 Q2
    • 对于 Q1 中的每条轨迹,称为查询轨迹,我们在Q2∪D 中检索最相似的轨迹,称为数据库轨迹
    • 显然,Q2 中的轨迹应该排在 D 之前,因为它们是由与 Q1 中相同的轨迹生成的
  • 假设 Ti 是 Q1 中的一个查询轨迹,而 Tj 是 Q2 中的相应双胞胎轨迹
    • 计算 Ti 与 Q2∪D1 之间轨迹的相似性,根据相似性对轨迹进行排序,并记 Tj 的排名为 ri
  • 基于此,采用两个广泛使用的度量标准,即精确度 P 和平均排名 MR

当 ri 等于 0 时,pi 等于 1;否则,pi 等于 0。(只有查询数据集里面Tj是最相似的,才会是1)

更大的 P 或更小的 MR 值意味着更好的自相似性性能。

4.2.2 交叉相似性

一个好的相似性度量应该能够保持两个不同轨迹之间的相似性,而不考虑数据采样策略

交叉距离偏差(CDD)来评估性能

Ta 和 Tb 是具有原始率的两个不同的轨迹,Ta′(rd) 是通过以 d 的速率随机丢弃(或扭曲)样本点获得的Ta 的变体,而 Tb′(rd) 是以与 Ta′(rd) 相同的方式获得的 Tb 的变体。

较小的 CDD 值表明评估的相似性(即,距离)更接近真实值。

4.3 结果

 

相关文章:

1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning

2022CIKM 1 intro 1.1 背景 轨迹相似度计算是轨迹分析任务(相似子轨迹搜索、轨迹预测和轨迹聚类)最基础的组件之一现有的关于轨迹相似度计算的研究主要可以分为两大类: 传统方法 DTW、EDR、EDwP等二次计算复杂度O(n^2)缺乏稳健性 会受到非…...

如何做一个基于 Python 的搜索引擎?

怎么做一个基于 python 的搜索引擎? 1、确定搜索引擎范围和目标用户 在决定做一个基于Python的搜索引擎之前,首先需要确定搜索引擎的范围和目标用户。搜索引擎的范围可以包括新闻、商品、音乐等,不同的领域需要不同的数据来源和处理方式。同…...

Python报错:KeyError: ‘820‘

Python报错:KeyError: ‘820’ 问题描述 原因 操作的表格列名是数字 NIRdata[820] Rdata[630]以上是出错行,dataframe的这种索引方式不支持用数字。 解决方案 先修改列名为字符 然后将出错行改为对应列名 NIRdata[nir] Rdata[r]...

【kubernetes】kubernetes中的Deployment使用

1 Why need Deployment? K8S中Pod是用户管理工作负载的基本单位,Pod通常通过Service进行暴露,因此,通常需要管理一组Pod,RC和RS主要就实现了一组Pod的管理工作,其中,RC和RS的区别在于,RS提供更…...

百度2024校招机器学习、数据挖掘、自然语言处理方向面试经历

本文介绍2024届秋招中,百度的机器学习/数据挖掘/自然语言处理工程师岗位一面的面试基本情况、提问问题、代码题目等。 8月初参与了百度提前批的机器学习/数据挖掘/自然语言处理工程师岗位面试,所在部门是搜索方向的。一面结束之后就知道凉了,…...

RabbitMQ原理(二):SpringAMQP编程

文章目录 3.SpringAMQP3.1.导入Demo工程3.2.快速入门3.1.1.消息发送3.1.2.消息接收3.1.3.测试3.3.WorkQueues模型3.3.1.消息发送3.3.2.消息接收3.3.3.测试3.3.4.能者多劳3.3.5.总结3.4.交换机类型3.5.Fanout交换机3.5.1.声明队列和交换机3.5.2.消息发送3.5.3.消息接收3.5.4.总结…...

什么是SQL注入(SQL Injection)?如何预防它

什么是 SQL 注入(SQL Injection)?如何预防它? SQL注入(SQL Injection)是一种常见的网络安全漏洞,攻击者通过在应用程序的输入中插入恶意SQL代码来执行未经授权的数据库操作。SQL注入攻击可能导…...

metrology

创建模型:create_metrology_model 设置图像大小:set_metrology_model_image_size 添加测量模型:add_metrology_object_rectangle2_measure 设置对象参数:set_metrology_object_param 设置模型参数:set_metrology_model…...

UE学习记录06----根据Actor大小自适应相机位置

背景: staticMesh 会根据业务需要随时变化,然后通过staticMesh的大小自适应相机位置,捕捉画面用来预览该模型,使模型在画布中不会太大导致显示不全,也不会太小 参考: UE实现相机聚焦物体功能_右弦GISer的…...

Go-Python-Java-C-LeetCode高分解法-第八周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 本文部分内容来自网上搜集与个人实践。如果任何信息存在错误,欢迎…...

数据结构--并查集

一、并查集的概念 并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。 最裸并查集: 合并元素a和元素b 所在的集合。查询元素a和元素b 是否属于同一组。是否在一个…...

Leetcode 224. 基本计算器

文章目录 题目代码&#xff08;10.1 首刷看解析&#xff09; 题目 Leetcode 224. 基本计算器 代码&#xff08;10.1 首刷看解析&#xff09; class Solution { public:int calculate(string s) {stack<int> sk; // 存储正负号sk.push(1);int sign 1;int res 0;int i…...

Linux基础命令汇总

用户管理 su 切换用户&#xff1a;su 用户名 logname 显示当前用户的登录用户名&#xff1a;logname useradd 创建用户&#xff1a;useradd 用户名创建用户时指定用户的主组&#xff1a;useradd -g 组名 用户名 usermod 添加附属组&#xff1a;usermod -G 组…...

JAVA 获得特定格式时间

0 背景 我们有时要获取时间&#xff0c;年月日时分秒周几&#xff0c;有时要以特定的格式出现。这时就要借助 SimpleDateFormat 或者 DateTimeFormatter。有时要某个月份有多少天需要借助 Calendar。所以有必要了解一些知识。 1 SimpleDateFormat simpledateFormat 线程不安全…...

问题: 视频颜色问题,偏绿

参考 什么是杜比视界&#xff1f; - https://www.youtube.com/watch?vldXDQ6VlC7g 【哈士亓说】07&#xff1a;HDR、杜比视界究竟是个啥&#xff1f;为什么这个视频还不是HDR视频&#xff1f; - https://www.youtube.com/watch?vrgb9Xg3cJns 正文 视频应该是 杜比视界 电…...

智能文字识别技术——AI赋能古彝文保护

前言 人工智能在古彝文古籍保护方面具有巨大的潜力和意义。通过数字化、自动化和智能化的手段&#xff0c;可以更好地保护和传承古彝文的文化遗产&#xff0c;促进彝族文化的传承和发展。 文章目录 前言一、古彝文是什么&#xff1f;1.1古彝文的背景1.2古彝文古籍保护背景 二、…...

Linux压缩和解压命令大全:tar、gzip和zip完整教程

文章目录 linux中的压缩和解压命令简介什么是压缩和解压为什么要使用压缩和解压命令压缩命令tar命令创建.tar文件压缩目录压缩多个文件或目录 gzip命令压缩文件压缩后删除原文件压缩整个目录 zip命令创建.zip文件压缩文件或目录设置压缩级别 解压命令tar命令解压.tar文件解压到…...

Vue3 reactive和ref详解

reactive Vue3.0中的reactive reactive 是 Vue3 中提供的实现响应式数据的方法。在 Vue2 中响应式数据是通过 defineProperty 来实现的&#xff0c;在 Vue3 中响应式数据是通过 ES6 的 Proxy来实现的。reactive 参数必须是对象 (json / arr)如果给 reactive 传递了其它对象 默…...

jvs-rules(规则引擎)和jvs智能bi(自助式数据分析)9.22更新内容

规则引擎更新功能 新增: 1.新增节点匹配筛选 用于做多个条件的数据筛选&#xff0c;以便将符合条件的数据传递给下一个节点进行处理&#xff0c;通常用于实现复杂的查询逻辑。 2.复合变量节点新增判断条件选项说明 用户可以根据自己的需求&#xff0c;为复合变量节点添加不…...

Leetcode算法题练习(一)

目录 一、前言 二、移动零 三、复写零 四、快乐数 五、电话号码的字母组合 六、字符串相加 一、前言 大家好&#xff0c;我是dbln&#xff0c;从本篇文章开始我就会记录我在练习算法题时的思路和想法。如果有错误&#xff0c;还请大家指出&#xff0c;帮助我进步。谢谢&…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题&#xff0c;其核心在于如何在有限容量的背包中选择物品&#xff0c;使得总价值最大化。根据物品选择规则的不同&#xff0c;主要分为两类&#xff1a; 01 背包&#xff1a;每件物品最多选 1 次&#xff08;选或不选&#…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...