ADIA实验室结构突变挑战赛
检测时间序列数据中的结构变化以获得准确的洞察。
概述
在时间序列数据中检测结构变化是各种科学和工程领域中的一项关键任务。在这个比赛中,你将获得单变量时间序列数据,这些数据在明确给定的某个点可能经历了结构性突变,这意味着从该点开始,数据生成过程的机制可能发生了变化。在获得整个时间序列和该时间点的指示后,你的任务是确定是否发生了结构性突变。

描述
这次比赛的任务是结构突变检测:你的目标是确定在给定的每个时间序列中,特定点是否发生了结构突变。为了帮助你完成这一任务,我们提供了大量的示例时间序列及其对应的标签——作为训练集——这样你可以校准你的检测方法,或者如果你更倾向于监督学习方法,可以训练你的预测模型。你的检测算法需要被设计成以时间序列作为输入,并输出发生结构突变的可能性(一个0
到1
之间的分数)。
这个问题在以下领域具有重要意义:
气候学,识别天气模式的变化可以预示气候异常或长期气候变化;
工业环境,检测机械传感器数据中的结构突变可以预先指示设备故障或维护需求;
金融领域,识别市场数据中的结构突变对于建模资产价格和管理金融风险至关重要;
医疗监测系统,生理信号的突然变化可能反映需要立即关注的关键健康事件。
挑战在于通过依赖标记示例中的经验模式来预测结构突变。大量标记数据集的可用性使得能够应用数据驱动的方法,例如机器学习算法,来有效地建模和预测这些结构变化。
比赛时间表
开始日期:2025年5月14日 中欧时间上午10:00
结束日期:2025年9月15日 中欧时间下午4:59
最终评估:2025年10月底
获奖者公布:在ADIA实验室2025年研讨会期间(10月27日至29日)
评估
对于测试集中的每个时间序列,你的任务是预测一个0
到1
之间的分数,其中接近0
的值表示在指定的边界点没有发生结构突变,而接近1
的值表示发生了结构突变。评估指标将是ROC AUC(受试者工作特征曲线下的面积),该指标的优势在于它无需依赖特定的分类阈值即可衡量检测算法的性能。
ROC AUC值约为0.5
意味着该算法在检测结构突变方面不比随机猜测更有效,而接近1.0
的值则表示完美的检测。ROC AUC允许我们通过消除每种方法对假阳性或假阴性的特定偏见,来比较不同检测方法的输出。
比赛采用两阶段评估流程:
公开排行榜:每次提交都会立即根据部分测试数据进行评分,结果将显示在公开排行榜上;
私有排行榜:在比赛结束时,选定的提交将根据剩余的测试数据进行评估,以确定最终排名。
这种方法确保模型被评估其泛化能力,而不是可能对公开排行榜数据进行过拟合。
代码提交
这是一个代码比赛,参与者需要直接向CrunchDAO平台提交他们的Python代码(文件或笔记本)。你的提交应满足以下要求:
处理和分析数据;
对测试集中每个时间序列的
id
输出一个介于0
和1
之间的分数,表示发生结构突变的可能性;你的代码必须产生确定性输出,否则将无法获得任何奖励;
只有队长将被列入排行榜,并有资格获得奖励。
你提交的代码将在比赛平台上执行,并自动根据部分测试集进行评分。提交后不久,你的得分将出现在比赛的公开排行榜上。
提交要求
你的主要解决方案文件应遵循比赛主办方提供的模板这里。
你的解决方案必须包含
train()
和infer()
函数。第一个函数用于在训练集上训练你的模型,如果你的模型需要训练的话,否则可以留空。第二个函数以测试数据作为输入并返回预测结果;你的解决方案的执行时间不应超过平台的时间限制:每周15小时。
数据集描述
此次比赛的数据集包含数万个合成的单变量时间序列,每个序列包含大约1,000到5,000个值,并带有一个指定的边界点。对于每个训练时间序列,一个标签(True
表示突变,False
表示无突变)指示在此边界点是否发生了结构突变。
此次比赛中的时间序列旨在代表各种可能发生结构突变的现实场景,其检测难度各不相同。这些场景包括类似于金融市场、气候数据、工业传感器读数和生物医学信号等领域的情况。挑战在于开发能够适用于这些不同场景的算法,并准确检测出新的、未见过的数据中的结构突变。
数据格式
对于训练数据,X
变量将以具有MultiIndex
结构的pandas.DataFrame
形式提供。以下是该格式的示例:
value period
id time
0 0 0.001858 0
1 -0.001664 0
2 -0.004386 0
3 0.000699 0
4 -0.002433 0
... ... ...
10000 1890 -0.005903 1
1891 0.007295 1
1892 0.003527 1
1893 0.007218 1
1894 0.000034 1
DataFrame
具有以下结构:
一个具有两个级别的
MultiIndex
:id
:标识唯一的时间序列(每个时间序列都有一个唯一的ID)time
:每个时间序列中的时间步
列包括:
value
:该时间步的实际时间序列值;period
:一个二进制指示器,其中0
表示边界点之前的时期,1
表示边界点之后的时期
y
变量是一个布尔型的pandas.Series
,以id
作为索引,指示该时间序列在边界点是否发生了结构突变(如果发生突变则为True
,否则为False
)
测试数据将遵循相同的格式。您的代码需要处理这些时间序列,并为每个唯一的时间序列ID生成结构断点可能性的预测。
方法建议
可以利用变化点检测算法、分布相等性检验、异常检测或监督学习模型等方法来识别与结构突变相关的模式。以下是一些可以考虑的方法:
比较边界点前后分布的统计检验;
从时间序列的两个部分提取特征进行比较分析;
时间序列建模以检测与预期模式的偏差;
用于自动模式识别的深度学习方法。
仔细预处理时间序列数据是开发鲁棒检测模型的重要步骤。
最终目标是开发可靠的算法,用于检测各个领域中时间序列数据的结构突变,这些变化对决策和风险管理具有重要意义。
定义
什么是结构突变?
时间序列中的结构突变可以明确地定义为底层数据生成过程(DGP)的改变,或者通过展示具有结构突变的序列与不具有结构突变的序列的示例来隐含地定义。
数据生成过程(DGP)的干预
正式来说,当时间序列的数据生成过程(DGP)的特征在特定时间点发生变化时,就会发生结构突变。例如,考虑一个具有漂移参数μ
和波动率σ
的随机游走过程。当一个或多个这些参数发生变化时,比如波动率σ
在某个时间点从1.0
变为2.0
,就认为发生了结构突变。
结构突变不一定总是涉及显式的数学方程或参数调整。另一种情况可能涉及通过组合具有本质上不同行为或数据来源的片段来构建单个时间序列。例如,最初使用一个温度计测量每日温度变化,然后在指定的突变点之后切换到另一个温度计。
简而言之,结构突变明确地表现为数据生成过程(DGP)的基本性质或参数的变化。这种变化可以是突然的或平滑的,并且可以表现为参数变化、函数形式变化、状态转换或它们的组合。如果没有发生这样的变化,则该序列不包含结构突变。
通过示例进行隐含定义
另一种方法是通过示例隐含地定义结构突变。在这种方法下,可以通过大量多样的时间序列集合来隐含地定义结构突变的概念,其中一些时间序列展示了结构突变,而另一些则保持稳定。
这种基于示例的定义在机器学习和统计推断背景下特别有用,因为在这些情况下,显式的参数级描述可能无法直接获得或不切实际。这在处理现实世界的数据时尤为相关,因为数据的生成过程通常是未知的。重要的是,在时间序列分析中如果不考虑结构突变,可能会导致误导性的结果,包括不准确的预测和无效的统计推断。
Prizes
第一名
$40,000 USD
第二名
$20,000 USD
第三名
$10,000 USD
第四名
$5,000 USD
第五名
$5,000 USD
第六名
$5,000 USD
第七名
$5,000 USD
第八名
$3,500 USD
第九名
$3,500 USD
第十名
$3,000 USD
Last updated