以有效的方式计算一百万对的相关性

问题描述

如何在合理的时间内计算两个产品价格的两个时间序列的相关性? 我有一组产品长度为 8485。可能的组合约为 3600 万双。 每个产品都是一个带有价格值的时间戳索引(以天为单位)的熊猫系列。数据时间1年左右。

比如某产品的数据是这样的:

            price
2020-01-01  200  
2020-01-02  250
...         ...
2021-02-01  600  

我将数据保存在带有产品 ID 的元组中:

products = tuple((id_products,series_products)) = ((111,series_product_111),(222,series_product_222),...)
len(products) = 8485

我需要在嵌套循环中对每个产品的价格进行最大互相关(我使用 pandas shift 函数进行交叉数据,使用 pandas corr 函数计算相关性)。为此,我创建了一个列表,其中包含名为 list_products 的所有可能的索引组合 (35M)。

list_products= [(i,j) for i in range(len(products)) for j in range(len(products)) if i<j]

另一方面,时间序列有不同的大小,所以为了计算相同时间长度的相关性,我创建了一个名为-subset_datatime-的函数

correlation = list()
for i,j in list_products:
    series_1,series_2 = subset_datatime(products[i][1],products[j][1])
    
    correlation.append([ series1.corr(series2.shift(t)) for t in range(-10,10)],products[i][0],products[j][0]))

很遗憾,这在我的计算机上最多可能需要 3 天时间。有没有更有效的方法来实现它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)