关于多元时间序列中的公平性问题

​今天给大家介绍一篇2023.1发在arixv的多元时序预测文章,出发点比较有趣:如何提升多变量时间序列的公平性。文中采用的建模方法都是之前在时空预测、Domain Adaptation等中使用过的常规操作,但是对于多变量公平性这个点的提出比较新颖。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

关于多元时间序列中的公平性问题

论文标题:Learning Informative Representation for Fairness-aware Multivariate Time-series Forecasting: A Group-based Perspective下载地址:https://arxiv.org/pdf/2301.11535.pdf

1.多元时间序列的公平性

公平性问题,在机器学习领域中是一个宏观的概念。机器学习中公平性的一种理解是,一个模型对于不同的样本的拟合效果的一致程度。如果一个模型在某些样本上效果很好,另一些样本上效果不好,那么这个模型的公平性就比较差。例如,一个常见的场景是推荐系统中,模型对于头部样本的预测效果优于尾部样本,这就体现了模型对于不同样本的预测效果存在不公平性。

回到多元时间序列预测问题中,公平性指的是模型是否对各个变量的预测效果都比较好。如果模型对于不同变量的预测效果差异很大,那么这个多元时间序列预测模型是不公平的。例如下图中的例子,第一行表格是各种模型在各个变量上预测效果MAE的方差,可以看到不同模型多存在一定程度的不公平性。下图的序列是一个例子,一些序列的预测效果比较好,而另一些序列的预测效果较差。

关于多元时间序列中的公平性问题

2.不公平现象的成因和解法

为什么会造成不公平性呢?无论是在多元时间序列中,还是在其他机器学习领域,造成不同样本预测效果差异较大的一大原因是,不同样本的特点不同,模型在训练过程中可能被某些样本的特点主导,导致模型对主导训练的样本预测效果好,而对于非主导样本的预测效果差。

在多元时间序列中,不同的变量,其序列pattern可能存在很大的差异。例如上面图的例子,大部分序列都是平稳的,主导了模型的训练过程。而少数序列呈现出了和其他序列不同的波动性,导致模型在这部分序列上预测效果较差。

如何解决多元时间序列中的不公平现象呢?一种思路是,既然造成不公平现象的原因是不同序列的特点不同,如果能将各个序列之间的共性,以及各个序列之间的差异性分解开,独立进行建模,就能缓解上述问题。

这篇文章就建立在这个思路之上,整体架构是利用聚类的方法将多变量序列分组,并得到每组的共性特征;进一步使用对抗学习的方法,从原始表示中剥离掉各个组特有的信息,得到公共的信息。通过上述过程,实现来了公共信息和序列特有信息的剥离,再基于这两个部分信息进行最终预测。

关于多元时间序列中的公平性问题

3、实现细节

整体的模型结构主要包括4个模块:多变量序列关系学习、时空关系网络、序列聚类、分解学习。

多变量序列关系学习

多元时间序列的一个重点是学习各个序列之间的关系。本文采用的是Spatial-Temporal的方法学习这个关系。由于多元时间序列不像很多时空预测任务,各个变量之间的关系可以预先定义好,因此这里使用了邻接矩阵的自动学习方法。具体的计算逻辑为,为每个变量生成一个随机初始化的embedding,然后使用embedding的内积,以及一些后处理,计算两两变量之间的关系,作为邻接矩阵对应位置上的元素,公式如下:

序列猴子开放平台 序列猴子开放平台

具有长序列、多模态、单模型、大数据等特点的超大规模语言模型

序列猴子开放平台 0 查看详情 序列猴子开放平台

关于多元时间序列中的公平性问题

这种自动学习邻接矩阵的方法,在时空预测中很常用,在Connecting the Dots: Multivariate Time Series Forecasting with Graph Neural Networks(KDD 2020)、REST: Reciprocal Framework for Spatiotemporal-coupled Prediction(WWW 2021)等文章中,都采用了这种方式。我在星球文章KDD2020经典时空预测模型MTGNN代码解析中详细介绍过相关模型的原理实现,感兴趣的同学可以进一步阅读。

时空关系网络

有了邻接矩阵后,文中采用了图时序预测模型,对多变量时间序列进行时空编码,得到每个变量序列的表示。具体的模型结构很类似于DCRNN,在GRU基础上,每个单元的计算引入了GCN模块。可以理解为,在正常GRU的每个单元的计算过程中,引入了邻居节点的向量做一次GCN,得到更新后的表示。关于DCRNN的实现代码原理,可以参考DCRNN模型源码解析这篇文章。

序列聚类

在得到每个变量时间序列的表示后,下一步是将这些表示聚类,以此得到各个变量序列的分组,进而提取每组变量特有的信息。文中引入下面的损失函数来指导聚类过程,其中H表示每个变量序列的表示,F表示每个变量的序列跟K个类别的从属关系。

关于多元时间序列中的公平性问题

这个损失函数的更新过程需要采用EM算法,即固定序列表示H,优化F,以及固定F,优化H。文中采用的方法是,训练几轮模型得到表示H后,使用SVD更新一次矩阵F。

分解学习

分解学习模块的核心是将各个类别变量的公共表示和私有表示区分开,公共表示指的是各个类簇变量的序列共有的特点,私有表示指的是每个类簇内变量序列独有的特点。为了实现这个目的,文中采用了分解学习和对抗学习的思路,将各个类簇的表示,从原始的序列表示中剥离开。类簇表示代表每个类的特性,剥离后的表示代表所有序列的共性,利用这个共性的表示进行预测,可以实现对各个变量预测的公平性。

文中利用对抗学习的思路,直接计算公共表示和私有表示(也就是聚类得到的每个类簇的表示)的L2距离,以此作为loss反向优化,让公共部分表示和私有表示的差距尽可能拉大。此外,还会增加一个正交约束,让公共表示和私有表示的内积接近0。

4、实验结果

文中的实验主要从公平性和预测效果两个方面进行了对比,对比的模型包括基础时序预测模型(LSTNet、Informer)、图时序预测模型等。在公平性上,采用的是不同变量预测结果的方差,通过对比,本文的方法公平性相比其他模型要有比较明显的提升(如下表)。

关于多元时间序列中的公平性问题

在预测效果上,本文提出的模型也基本能够取得和SOTA相当的效果:

关于多元时间序列中的公平性问题

5、总结

如何保证模型的公平性,是机器学习很多场景都面临的问题。本文将这一维度的问题引入到了多元时间序列预测中,并利用时空预测、对抗学习的方法进行了比较好的解决。

以上就是关于多元时间序列中的公平性问题的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/553607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 21:14:57
下一篇 2025年11月9日 21:16:40

相关推荐

  • HTML数据如何用于机器学习 HTML数据预处理的特征工程方法

    首先解析HTML提取文本与元信息,再从结构、文本、样式三方面构建特征:1. 用BeautifulSoup等工具解析HTML,提取标题、正文、链接及属性;2. 统计标签频率、DOM深度、路径模式等结构特征;3. 清洗文本并采用TF-IDF或词嵌入向量化;4. 提取class、id、样式、脚本等交互与视…

    2025年12月23日
    000
  • 标题标签:你想知道的一切

    html,用于构建网页的语言,严重依赖于标头标签。它们用于排列和组织网页内容,使其更易于阅读和理解。标题标签范围从 h1 到 h6。 h1 是最重要的标题标签,而 h6 是最不重要的。这些标题标签有助于组织页面的内容,使其更易于阅读和导航。它们还用于告知用户和搜索引擎有关页面内容的信息,这对于 se…

    2025年12月21日
    000
  • 如何用机器学习算法优化前端用户交互体验?

    通过机器学习分析用户行为数据,可实现前端交互的个性化与自适应优化。1. 利用LSTM、XGBoost等模型预测用户操作,实现智能补全与实时推荐;2. 借助强化学习与聚类算法动态调整UI布局,提升操作效率;3. 使用孤立森林等无监督方法检测异常交互,优化流程设计;4. 通过时序模型预测页面跳转,结合S…

    2025年12月20日
    000
  • C++机器学习入门 线性回归实现示例

    首先实现线性回归模型,通过梯度下降最小化均方误差,代码包含数据准备、训练和预测,最终参数接近真实关系,适用于高性能场景。 想用C++实现线性回归,其实并不复杂。虽然Python在机器学习领域更常见,但C++凭借其高性能,在对效率要求高的场景中非常适用。下面是一个简单的线性回归实现示例,帮助你入门C+…

    2025年12月18日
    000
  • C++中如何构建机器学习框架_张量运算实现

    要构建高效的c++++机器学习框架张量运算模块,需遵循以下核心步骤:1. 设计支持泛型的tensor类,包含内存管理与基础接口;2. 实现运算符重载以简化加减乘除操作;3. 采用simd、多线程及缓存优化提升性能;4. 使用openmp实现并行化加法;5. 利用strassen或winograd算法…

    2025年12月18日 好文分享
    000
  • 怎样在C++中实现决策树_机器学习算法实现

    决策树在c++++中的实现核心在于通过递归构建树节点,使用“如果…那么…”逻辑进行数据分裂,最终实现分类或预测。1. 数据结构方面,定义包含特征索引、分裂阈值、左右子节点、叶子节点值及是否为叶子的treenode结构;2. 分裂准则包括信息增益(id3)、信息增益率(c4.5)和基尼指数(cart)…

    2025年12月18日 好文分享
    000
  • C++ lambda 表达式与闭包在机器学习中的应用

    在机器学习中,lambda 表达式和闭包用于数据预处理、特征工程、模型构建和闭包。具体应用包括:数据规范化等数据预处理操作。创建新特征或转换现有特征。向模型添加自定义的损失函数、激活函数等组件。利用闭包访问外部变量,用于计算特定特征的平均值等目的。 C++ Lambda 表达式与闭包在机器学习中的应…

    2025年12月18日
    000
  • 如何将C++框架与机器学习集成

    如何将 c++++ 框架与机器学习集成?选择 c++ 框架: eigen、armadillo、blitz++集成机器学习库: tensorflow、pytorch、scikit-learn实战案例:使用 eigen 和 tensorflow 构建线性回归模型 如何将 C++ 框架与机器学习集成 引言…

    2025年12月18日
    000
  • 如何将 C++ 框架与机器学习技术集成?

    集成 c++++ 框架和机器学习技术,以提高应用程序性能和功能:准备数据和模型:收集数据,训练模型并将其保存为 tensorflow lite 格式。集成 tensorflow lite:在 c++ 项目中包含 tensorflow lite 头文件和库。加载模型:从文件加载 tensorflow …

    2025年12月18日
    000
  • 如何将 C++ 框架与机器学习算法集成?

    在 c++++ 框架中集成机器学习算法的步骤: 1. 选择合适的 c++ 框架,如 armadillo 或 tensorflow。 2. 获取机器学习算法库,如 scikit-learn 或 xgboost。 3. 通过构建工具将算法库集成到框架中。 4. 从算法库加载算法。 5. 利用框架工具训练…

    2025年12月18日
    000
  • 如何将C++框架与机器学习库集成?

    将c++++框架与机器学习库集成可提供强大的开发基础。步骤如下:选择c++框架(如qt、mfc、boost)选择机器学习库(如tensorflow、pytorch、scikit-learn)创建c++项目集成机器学习库(按照库说明)使用框架和库编写c++代码编译、运行并测试应用程序 如何将 C++ …

    2025年12月18日
    000
  • C++框架在机器学习领域的应用

    c++++框架在机器学习中得到广泛应用,提供预构建组件和工具。流行框架包括:tensorflow c++ api:google开发,提供广泛的算子、层和架构。pytorch:facebook开发,支持动态图计算和易用的python界面。c++ builder:embarcadero开发,集成开发环境…

    2025年12月18日
    000
  • 支持人工智能和机器学习的C++框架

    c++++ 中的人工智能和机器学习框架包括:深度学习框架:tensorflow:谷歌开发,用于大型神经网络pytorch:facebook 开发,用于创建灵活的可读模型机器学习库:armadillo:高性能线性代数和统计计算nlp 工具包:natural language toolkit (nltk…

    2025年12月18日
    000
  • 如何将C++框架与机器学习工具集成?

    如何将 c++++ 框架与机器学习工具集成?设置 tensorflow 和 boost。编写接口,将 tensorflow 对象公开给 boost 代码。使用 boost.python 导出接口,允许从 python 代码调用 tensorflow 方法。在实战案例中,集成 boost c++ 扩展…

    2025年12月18日
    000
  • C++框架与机器学习和人工智能的契合度?

    c++++框架与机器学习和人工智能高度契合,提供高性能、效率和灵活性。tensorflow:一个开源端到端ml/ai框架,提供构建、训练和部署ml模型的工具,如计算图。pytorch:一个基于python的框架,支持动态计算图。xgboost:专注于梯度增强树的框架。cntk:一个微软开发的框架,用…

    2025年12月18日
    000
  • 开始使用 C++ 机器学习框架需要具备哪些技能?

    掌握 c++++ 机器学习框架需要以下核心技能:1. c++ 基础;2. 线性代数和统计的数学基础;3. 机器学习算法和模型;4. 选择并熟悉 c++ ml 框架。例如,使用 eigen 计算协方差矩阵:它创建了一个数据矩阵,计算协方差矩阵,并将其打印到控制台。 踏入 C++ 机器学习框架之旅的必备…

    2025年12月18日
    000
  • C++ 框架在人工智能和机器学习中的应用有什么前景?

    c++++ 框架在 ai/ml 中前景广阔,由于其高性能、内存效率和跨平台兼容性。流行的 c++ 框架包括 tensorflow lite、caffe2 和 scikit-learn。在实战案例中,tensorflow lite 用于图像分类,加载模型、创建解释器、预处理图像、执行推理和获取结果。 …

    2025年12月18日
    100
  • 哪种C++框架最适合用于机器学习和数据科学?

    对于机器学习和数据科学,最流行的 c++++ 框架包括:tensorflow:用于构建和训练机器学习模型pytorch:用于原型化和调试新模型xgboost:用于基于树的机器学习算法opencv:用于计算机视觉任务 探索用于机器学习和数据科学的顶级 C++ 框架 C++ 以其速度、效率和对复杂项目的…

    2025年12月18日
    000
  • 如何调试和解决 C++ 机器学习框架中的问题?

    调试和解决 c++++ 机器学习框架中的问题的步骤:使用调试器(例如 gdb 或 lldb)。检查日志文件以查找错误消息。使用断言来检查条件。打印调试信息以输出变量值。分析异常消息和堆栈跟踪。 如何调试和解决 C++ 机器学习框架中的问题 调试 C++ 机器学习框架中的问题可能是一个挑战,因为它涉及…

    2025年12月18日
    000
  • C++ 机器学习框架的最佳实践和设计模式有哪些?

    c++++ 机器学习框架的最佳实践包括:抽象化和接口隔离依赖关系和松散耦合高内聚和低耦合测试驱动开发设计模式(如工厂方法、单例模式和观察者模式) C++ 机器学习框架的最佳实践和设计模式 机器学习算法在现代软件开发中发挥着至关重要的作用。许多 C++ 框架可用于开发机器学习模型,例如 TensorF…

    2025年12月18日
    000

发表回复

登录后才能评论
关注微信