《开源时间序列数据:探索与应用》
- 一、开源时间序列数据概述
- 二、热门的开源时间序列数据库
- 1. InfluxDB
- 2. TimescaleDB
- 3. Prometheus
- 4. OpenTSDB
- 5. Graphite
- 6. Druid
- 三、开源时间序列数据的应用场景
- 1. 物联网领域
- 2. 金融领域
- 3. 运维监控领域
- 4. 能源领域
- 四、开源时间序列数据集有哪些
- 1. UCR Time Series
- 2. FigShare
- 3. Awesome Public Datasets
- 4. 服务监控数据集
- 5. 音乐数据库
- 6. 国家经济数据库
- 7. 政府开放数据
- 8. 数据竞赛平台
- 五、如何获取开源时间序列数据
- 1. 通过特定数据集网站获取
- 2. 利用数据竞赛平台获取
- 3. 从国家经济数据库和政府开放数据获取
- 六、开源时间序列数据分析方法
- 1. TimeGPT
- 2. Prophet
- 七、开源时间序列数据的未来发展趋势
一、开源时间序列数据概述
时间序列数据是一种按照时间顺序排列的数据形式,在众多领域中都有着广泛而重要的应用。从金融市场的股价波动到气象领域的气温变化,从工业生产中的设备监测到医疗健康领域的生理信号记录,时间序列数据无处不在。开源时间序列数据为广大研究者和开发者提供了丰富的资源宝库,使他们能够更加高效地进行数据分析和模型构建。这些开源数据不仅降低了数据获取的成本,还促进了知识的共享和创新的加速。
在当今数据驱动的时代,时间序列数据的价值愈发凸显。通过对时间序列数据的深入分析,我们可以洞察事物的发展趋势、发现潜在的规律和模式,从而为决策提供有力的支持。无论是预测未来的市场需求、优化生产流程,还是监测环境变化、保障公共安全,时间序列分析都发挥着至关重要的作用。开源时间序列数据的出现,为时间序列分析领域带来了新的机遇和挑战。一方面,丰富的开源数据使得研究者和开发者能够接触到更多的实际案例和应用场景,拓宽了研究视野和思路。另一方面,如何有效地利用这些数据,选择合适的分析方法和工具,成为了摆在大家面前的重要课题。
多变量时间序列数据项目,为数据科学家和工程师提供了一站式的解决方案。该项目涵盖了多种领域的应用,包括能源消耗、天气预报、股票市场等。数据以 CSV 格式存储,易于读取和处理,且每个数据集都有详细的信息描述和清晰的文档说明,方便用户理解和使用。同时,项目的多元化特点使其适用于学术研究和企业实际问题的解决,如优化运营、提高效率或者预测市场趋势等。
通过构建大规模且多样化的公共时间序列数据集 ——Time-series Pile,为时间序列分析提供了强大的支持。其独特的架构设计和预训练策略,使得模型能够在有限的监督条件下表现出色,支持多种任务的微调,应用场景广泛,涵盖了从医疗健康到金融分析的多个领域。
将大型语言模型引入时间序列分析的前沿。通过收集和整理关于 LLMs 在时间序列分析中的应用的研究论文,揭示了如何将 LLMs 应用于输入、量化、对齐、视觉桥梁和工具集成五个关键阶段。该项目涵盖了广泛的实用场景,从城市流动性的预测到金融市场的分析,再到医疗信号的理解,为研究者、开发者和任何寻求时间序列分析新视角的人提供了宝贵的资源。
二、热门的开源时间序列数据库
1. InfluxDB
-
特点:
- 高效的数据写入和查询性能:InfluxDB 在设计上针对时间序列数据进行了优化,采用 TSM(Time-Structured Merge Tree)存储引擎,可以高效地处理大量的时间序列数据。同时,它还支持数据压缩和自动降采样,以减少存储空间占用和提高查询性能。
- 支持灵活的查询语言 Flux:InfluxDB 提供了丰富的查询语言 Flux,支持多种数据操作,包括过滤、聚合、变换等,用户可以轻松地编写复杂的查询语句。
- 丰富的生态系统和工具支持:InfluxDB 支持与 Grafana 等可视化工具集成,方便用户进行数据可视化和监控。此外,它还拥有活跃的社区和丰富的生态系统,提供了各种工具和插件,以满足不同的需求。
-
优势:
- 采用 TSM 存储引擎,处理大量时间序列数据高效:TSM 存储引擎是 InfluxDB 的核心优势之一,它可以高效地处理大量的时间序列数据。TSM 存储引擎采用了一种特殊的存储结构,可以快速地写入和查询数据,同时还支持数据压缩和自动降采样,以减少存储空间占用和提高查询性能。
- 支持数据压缩和自动降采样:InfluxDB 支持数据压缩和自动降采样,可以有效地减少存储空间占用和提高查询性能。数据压缩可以将数据压缩到更小的存储空间中,而自动降采样可以将高频率的数据降采样为低频率的数据,以减少存储空间占用和提高查询性能。
- 提供丰富查询语言,易与 Grafana 等可视化工具集成:InfluxDB 提供了丰富的查询语言 Flux,可以方便地进行数据查询和分析。同时,它还支持与 Grafana 等可视化工具集成,方便用户进行数据可视化和监控。
2. TimescaleDB
-
特点:
- 基于 PostgreSQL,高效的数据写入和查询性能:TimescaleDB 是基于 PostgreSQL 的一款时间序列数据库,它通过分区和索引机制优化了时间序列数据的存储和查询性能。同时,它还支持自动数据压缩和降采样,以减少存储空间占用和提高查询性能。
- 兼容 SQL 查询语言,强大的数据管理和分析功能:TimescaleDB 兼容 PostgreSQL 的 SQL 查询语言,用户可以使用熟悉的 SQL 语法进行数据查询和分析。它还支持多种数据操作,包括窗口函数、时间聚合、数据变换等,方便用户进行复杂的数据分析。
-
优势:
- 采用 hypertable 分区策略,提高查询效率:TimescaleDB 采用了一种名为 “hypertable” 的分区策略,将时间序列数据按时间范围进行分区存储,从而提高查询效率。这种分区策略可以将数据分散到多个物理存储设备上,从而提高查询性能。
- 支持自动数据压缩和降采样:TimescaleDB 支持自动数据压缩和降采样,可以有效地减少存储空间占用和提高查询性能。数据压缩可以将数据压缩到更小的存储空间中,而自动降采样可以将高频率的数据降采样为低频率的数据,以减少存储空间占用和提高查询性能。
- 兼容 PostgreSQL,方便用户使用熟悉的 SQL 语法:TimescaleDB 兼容 PostgreSQL 的 SQL 查询语言,用户可以使用熟悉的 SQL 语法进行数据查询和分析。这使得用户可以更加方便地使用 TimescaleDB,同时也可以利用 PostgreSQL 的丰富功能,例如事务处理、ACID(原子性、一致性、隔离性和持久性)支持等。
3. Prometheus
-
特点:
- 高效的数据采集和存储:Prometheus 通过拉取方式采集数据,可以高效地处理大量的监控指标数据。它采用了一种名为 TSDB(Time Series Database)的存储引擎,可以高效地存储和查询时间序列数据。同时,它还支持数据压缩和降采样,以减少存储空间占用和提高查询性能。
- 灵活的查询语言 PromQL:Prometheus 提供了灵活的查询语言 PromQL,可以方便地进行数据查询和分析。PromQL 支持多种数据操作,包括过滤、聚合、变换等,用户可以轻松地编写复杂的查询语句。
- 丰富的报警和可视化功能:Prometheus 支持丰富的报警规则和通知方式,方便用户进行监控和报警。同时,它还与 Grafana 等可视化工具集成,提供了丰富的数据可视化功能。
-
优势:
- 通过拉取方式采集数据,处理大量监控指标数据高效:Prometheus 通过拉取方式采集数据,可以高效地处理大量的监控指标数据。这种方式可以避免数据的重复采集和传输,从而提高数据的采集效率和准确性。
- 采用 TSDB 存储引擎:Prometheus 采用了一种名为 TSDB(Time Series Database)的存储引擎,可以高效地存储和查询时间序列数据。TSDB 存储引擎采用了一种特殊的存储结构,可以快速地写入和查询数据,同时还支持数据压缩和降采样,以减少存储空间占用和提高查询性能。
- 提供灵活查询语言和丰富报警规则:Prometheus 提供了灵活的查询语言 PromQL,可以方便地进行数据查询和分析。同时,它还支持丰富的报警规则和通知方式,方便用户进行监控和报警。
4. OpenTSDB
-
特点:
-
优势:
- 通过 HBase 提供高效分布式存储和查询功能:OpenTSDB 通过 HBase
提供了高效的分布式存储和查询功能,可以处理大量的时间序列数据。HBase 是一种分布式的列存储数据库,具有高可靠性、高可扩展性和高性能等特点,可以满足 OpenTSDB 对大规模数据存储和查询的需求。 - 采用 UID 机制高效存储和索引数据:OpenTSDB 采用了一种名为 UID 的机制,用于高效地存储和索引时间序列数据。UID 机制可以将时间序列数据的标签和时间戳转换为唯一的标识符,从而提高数据的存储和查询效率。
- 支持数据压缩和降采样:OpenTSDB 支持数据压缩和降采样,可以有效地减少存储空间占用和提高查询性能。数据压缩可以将数据压缩到更小的存储空间中,而自动降采样可以将高频率的数据降采样为低频率的数据,以减少存储空间占用和提高查询性能。
- 通过 HBase 提供高效分布式存储和查询功能:OpenTSDB 通过 HBase
5. Graphite
-
特点:
-
优势:
- 通过推送方式采集数据,处理大量监控指标数据高效:Graphite 通过推送方式采集数据,可以高效地处理大量的监控指标数据。这种方式可以避免数据的重复采集和传输,从而提高数据的采集效率和准确性。
- 采用 Whisper 存储引擎:Graphite 采用了一种名为 Whisper 的存储引擎,可以高效地存储和查询时间序列数据。Whisper 存储引擎采用了一种特殊的存储结构,可以快速地写入和查询数据,同时还支持数据压缩和降采样,以减少存储空间占用和提高查询性能。
- 提供灵活查询语言和丰富报警规则:Graphite 提供了灵活的查询语言,可以方便地进行数据查询和分析。同时,它还支持丰富的报警规则和通知方式,方便用户进行监控和报警。
6. Druid
-
特点:
- 高性能的实时分析数据库,专为大规模数据分析设计:Druid 是一款高性能的实时分析数据库,它专为大规模数据分析设计,支持实时数据摄取、交互式查询和数据可视化。Druid 通过分布式架构提供了高效的数据摄取和查询功能,可以处理大量的实时和历史数据。
- 支持实时数据摄取、交互式查询和数据可视化:Druid 支持实时数据摄取,可以快速地处理大量的实时数据。同时,它还支持交互式查询,可以快速地响应用户的查询请求。此外,它还提供了丰富的数据可视化功能,可以方便地进行数据可视化和分析。
-
优势:
- 通过分布式架构提供高效的数据摄取和查询功能:Druid 通过分布式架构提供了高效的数据摄取和查询功能,可以处理大量的实时和历史数据。Druid 采用了一种名为 Segment 的分区机制,用于高效地存储和索引时间序列数据。同时,它还支持数据压缩和降采样,以减少存储空间占用和提高查询性能。
- 采用 Segment 分区机制:Druid 采用了一种名为 Segment 的分区机制,用于高效地存储和索引时间序列数据。Segment 分区机制可以将数据分散到多个物理存储设备上,从而提高查询性能。
- 提供灵活的数据聚合和分析功能:Druid 提供了灵活的数据聚合和分析功能,可以方便地进行数据查询和分析。Druid 支持多种数据聚合方式,包括时间聚合、维度聚合和指标聚合等。同时,它还支持数据过滤、排序和分组等操作,可以满足不同用户的需求。
三、开源时间序列数据的应用场景
1. 物联网领域
在物联网领域,开源时间序列数据有着广泛的应用场景。其中,智能家居公司的智能门锁数据存储与分析就是一个典型的案例。
随着智能家居的普及,智能门锁成为了家庭安全的重要保障。智能门锁可以记录用户开锁时间、次数等信息,这些数据对于用户了解家庭安全状况、优化家庭安全策略具有重要意义。为了方便用户查看和管理这些数据,智能家居公司选择使用 InfluxDB 作为数据存储。
解决方案如下:首先,将智能门锁产生的数据以 Line Protocol 格式发送到 InfluxDB。Line Protocol 格式是一种简洁高效的数据格式,能够快速地将数据写入 InfluxDB。其次,在 InfluxDB 中创建数据库,并设置相应的数据类型和索引。通过设置数据类型和索引,可以提高数据的查询效率,方便用户快速地找到所需的数据。最后,通过 InfluxDB 的查询语言,实现对门锁数据的实时监控和分析。InfluxDB 的查询语言 Flux 功能强大,支持多种数据操作,用户可以轻松地编写复杂的查询语句,实现对门锁数据的实时监控和分析。
2. 金融领域
在金融领域,开源时间序列数据同样有着重要的应用。银行对客户交易数据的实时监控和分析就是一个典型的案例。
银行需要对客户交易数据进行实时监控和分析,以防范风险。客户交易数据是一种典型的时间序列数据,记录了客户交易的时间、金额、交易类型等信息。这些数据对于银行了解客户交易行为、防范风险具有重要意义。
解决方案如下:首先,将客户交易数据以时间序列格式存储到 InfluxDB。InfluxDB 采用 TSM 存储引擎,处理大量时间序列数据高效,能够快速地存储客户交易数据。其次,利用 InfluxDB 的查询语言对交易数据进行实时监控,如交易金额、交易时间等。InfluxDB 的查询语言 Flux 支持多种数据操作,用户可以轻松地编写复杂的查询语句,实现对交易数据的实时监控。最后,通过数据可视化工具展示监控结果。数据可视化工具可以将监控结果以直观的图表形式展示给相关人员,方便他们快速地了解客户交易情况,及时发现风险。
3. 运维监控领域
在运维监控领域,开源时间序列数据也发挥着重要作用。企业对服务器性能的实时监控就是一个典型的案例。
企业需要对服务器性能进行实时监控,以保障业务稳定运行。服务器性能数据是一种典型的时间序列数据,记录了服务器的 CPU 使用率、内存使用率、网络流量等信息。这些数据对于企业了解服务器运行状况、及时发现问题、保障业务稳定运行具有重要意义。
解决方案如下:首先,将服务器性能数据以时间序列格式发送到 InfluxDB。InfluxDB 的高效数据写入性能能够快速地将服务器性能数据写入数据库。其次,在 InfluxDB 中创建数据库并设置数据类型和索引。通过设置数据类型和索引,可以提高数据的查询效率,方便用户快速地找到所需的数据。最后,通过 InfluxDB 的查询语言对服务器性能数据进行实时监控和分析。InfluxDB 的查询语言 Flux 功能强大,支持多种数据操作,用户可以轻松地编写复杂的查询语句,实现对服务器性能数据的实时监控和分析。
4. 能源领域
在能源领域,开源时间序列数据也有着广泛的应用。电力公司对电力消耗数据的实时监控和分析就是一个典型的案例。
电力公司需要对电力消耗数据进行实时监控和分析,以优化电力调度。电力消耗数据是一种典型的时间序列数据,记录了电力用户的用电时间、用电量等信息。这些数据对于电力公司了解电力需求、优化电力调度具有重要意义。
解决方案如下:首先,将电力消耗数据以时间序列格式发送到 InfluxDB。InfluxDB 的高效数据写入性能能够快速地将电力消耗数据写入数据库。其次,利用 InfluxDB 的查询语言对电力消耗数据进行实时监控和分析。InfluxDB 的查询语言 Flux 支持多种数据操作,用户可以轻松地编写复杂的查询语句,实现对电力消耗数据的实时监控和分析。最后,通过数据可视化工具展示监控结果。数据可视化工具可以将监控结果以直观的图表形式展示给相关人员,方便他们快速地了解电力消耗情况,及时调整电力调度策略。
四、开源时间序列数据集有哪些
1. UCR Time Series
介绍:UCR 时间序列数据集在时序领域有着重要地位,犹如 “Imagnet” 一般。它涵盖了医疗、电力、地理等众多领域,目前全量数据有 128 种。该数据集涉及时间序列预测、回归、聚类等诸多任务,是发 Paper 必跑的数据集。它由加州大学河滨分校计算机系的教授 Eamonn Keogh 所在的课题组维护。
数据获取方法:通过 pyts 库的 dataset 模块获取。具体代码为:from pyts import datasetsprint (datasets.ucr_dataset_list ()) data_train, data_test, target_train, target_test=datasets.fetch_ucr_dataset (“GunPoint”,return_X_y=True)。并且,UCR 时间序列数据集在 2018 版的官网页面上可以直接下载整个 128 个数据集,密码为 someone,下载网址为:Welcome to the UCR Time Series Classification/Clustering Page。
2. FigShare
介绍:FigShare 是一个研究成果共享平台,向全世界开放免费的研究成果及科学数据。它涵盖的领域广泛,包括但不限于农业、兽医和食品科学、生物科学、生物医学和临床科学等多个领域,如 Virology 中的新型冠状病毒 2019-nCoV 蛋白酶 Mpro 的比较模型就由 Christian Gruber 在此平台分享。FigShare 致力于简化研究工作流程,接受任何文件格式,并旨在在浏览器中预览所有文件,是一个集论文、FAIR 数据和非传统研究输出于一体的易于使用的存储库。随着政府和研究资助者看到开放内容的好处,FigShare 一直引领着学术界、出版商和机构以最直观和高效的方式轻松遵守这些原则。
网址:https://figshare.com/
3. Awesome Public Datasets
介绍:Awesome Public Datasets 项目提供了一个非常全面的数据获取渠道,包含各个细分领域的数据库资源,自然科学和社会科学的覆盖都很全面,适合做研究和数据分析的人员。它托管在 GitHub 上,由社区维护和更新。
网址:https://github.com/awesomedata/awesome-public-datasets
4. 服务监控数据集
介绍:该数据集是由人工神经网络公司 Numenta 所提供的,包含互联网服务场景下的各种流式数据与评测脚本。NAB 是用于评估数据流实时应用中异常检测算法的新颖基准,它由 50 多个带有标签的真实世界和人工时间序列数据文件以及为实时应用程序设计的新颖评分机制组成。
网址:https://github.com/numenta/NAB
5. 音乐数据库
介绍:这个数据集包含了海量的公开音乐数据库,适用于包含音乐推荐、分类在内的各种任务。例如,中华传统音乐资源数据库是中国数字文化集团推出的传统音乐资源数据库平台,收录大量传统音乐经典以及相关学术资料,内容丰富,主要包括中华民族音乐资源数据库、中华戏曲老唱片数据库、中华曲艺老唱片数据库、丝绸之路上的民族音乐赏析数据库等。中国音乐数据库(中国音网)内容依托于华韵档案馆自身收藏的近十余万张老唱片,并整合了海内外音响档案馆、独立藏家和艺术家的私人资源,涵盖中国戏曲数据库、中国曲艺数据库、民族歌曲数据库、歌舞音乐数据库、民族器乐数据库、红色音乐文化基因库、人类口头和非物质文化遗产专题库、草原音乐库等 8 个专题子库。库客音乐数据库是以互联网音频、视频在线服务为核心的平台,汇集来自世界各地数百家优秀唱片厂牌的音视频资源,涵盖古典音乐、世界民族民间音乐、爵士、视频、有声读物等内容。
网址:http://millionsongdataset.com/
6. 国家经济数据库
介绍:国家统计局经常会统计涉及经济民生等多个方面的指标,提供了非常丰富的开源时间序列数据。包括国家数据、CEIC、万得、中国统计信息网等渠道都可以获取这些数据。国家数据数据来源中华人民共和国国家统计局,包含了我国经济民生等多个方面的数据,并且在月度、季度、年度都有覆盖,较为全面。CEIC 涵盖超过 195 个国家 400 多万个时间序列的数据源,最完整的一套超过 128 个国家的经济数据,能够精确查找 GDP、CPI、进口、出口、外资直接投资、零售、销售以及国际利率等深度数据。万得被誉为中国的 Bloomberg,在金融业有着全面的数据覆盖,金融数据的类目更新非常快,据说很受国内的商业分析者和投资人的亲睐。中国统计信息网国家统计局的官方网站,汇集了全国各级政府各年度的国民经济和社会发展统计信息,建立了以统计公报为主,统计年鉴、阶段发展数据、统计分析、经济新闻、主要统计指标排行等。
渠道:国家数据(https://data.stats.gov.cn/)、CEIC(https://www.ceicdata.com/zh-hans)、万得(https://www.wind.com.cn/)、中国统计信息网(http://www.tjcn.org/)等。
7. 政府开放数据
介绍:各地方政府开放数据,包含竞技、交通、医疗、天气等数据。
渠道:北京市政务数据资源网(https://data.beijing.gov.cn/)、深圳市政府数据开放平台(https://opendata.sz.gov.cn/)、上海市政务数据服务网(https://data.sh.gov.cn/)、贵州省政府数据开放平台(http://data.guizhou.gov.cn/)、美国政府开放数据 Data.Gov(https://www.data.gov/)等。
8. 数据竞赛平台
介绍:获取针对特定任务的时间序列数据,数据集干净且科研性高。
平台:DataCastle(https://js.dclab.run/v2/index.html)、Kaggle(https://www.kaggle.com/)、天池(https://tianchi.aliyun.com/)、Datafountain(https://www.datafountain.cn/)等。
五、如何获取开源时间序列数据
1. 通过特定数据集网站获取
- 如 UCR Time Series、FigShare、Awesome Public Datasets 等。
- UCR Time Series:UCR 时间序列数据集在时序领域有着重要地位,涵盖医疗、电力、地理等众多领域,目前全量数据有 128
种。涉及时间序列预测、回归、聚类等诸多任务,由加州大学河滨分校计算机系的教授 Eamonn Keogh 所在的课题组维护。可以通过
pyts 库的 dataset 模块获取,具体代码为:from pyts import datasetsprint
(datasets.ucr_dataset_list ()) data_train, data_test, target_train,
target_test = datasets.fetch_ucr_dataset (“GunPoint”,
return_X_y=True)。并且,在 2018 版的官网页面上可以直接下载整个 128 个数据集,密码为
someone,下载网址为:Welcome to the UCR Time Series
Classification/Clustering Page。 - FigShare:FigShare
是一个研究成果共享平台,向全世界开放免费的研究成果及科学数据。涵盖的领域广泛,包括但不限于农业、兽医和食品科学、生物科学、生物医学和临床科学等多个领域。网址为:https://figshare.com/。 - Awesome Public
Datasets:该项目提供了一个非常全面的数据获取渠道,包含各个细分领域的数据库资源,自然科学和社会科学的覆盖都很全面,适合做研究和数据分析的人员。托管在
GitHub
上,由社区维护和更新。网址为:https://github.com/awesomedata/awesome-public-datasets。
- UCR Time Series:UCR 时间序列数据集在时序领域有着重要地位,涵盖医疗、电力、地理等众多领域,目前全量数据有 128
2. 利用数据竞赛平台获取
- 如 DataCastle、Kaggle、天池、Datafountain 等。
- DataCastle:专业的数据科学竞赛平台,网址为:https://js.dclab.run/v2/index.html。通过该平台可以获取针对特定任务的时间序列数据,数据集干净且科研性高。
- Kaggle:全球最大的数据竞赛平台,网址为:https://www.kaggle.com/。提供丰富的时间序列数据集,用于各种科研和实践项目。
- 天池:阿里旗下数据科学竞赛平台,网址为:https://tianchi.aliyun.com/。为用户提供高质量的时间序列数据,促进数据科学的发展。
- Datafountain:CCF
制定大数据竞赛平台,网址为:https://www.datafountain.cn/。在该平台上可以找到具有针对性的时间序列数据集,助力科研和实际应用。
3. 从国家经济数据库和政府开放数据获取
- 国家统计局及各地方政府开放的数据平台。
- 国家经济数据库:国家统计局经常会统计涉及经济民生等多个方面的指标,提供了非常丰富的开源时间序列数据。包括国家数据、CEIC、万得、中国统计信息网等渠道都可以获取这些数据。
- 国家数据:数据来源中华人民共和国国家统计局,包含了我国经济民生等多个方面的数据,并且在月度、季度、年度都有覆盖,较为全面。网址为:https://data.stats.gov.cn/。
- CEIC:涵盖超过 195 个国家 400 多万个时间序列的数据源,最完整的一套超过 128 个国家的经济数据,能够精确查找
GDP、CPI、进口、出口、外资直接投资、零售、销售以及国际利率等深度数据。网址为:https://www.ceicdata.com/zh-hans。 - 万得:被誉为中国的
Bloomberg,在金融业有着全面的数据覆盖,金融数据的类目更新非常快,据说很受国内的商业分析者和投资人的亲睐。网址为:https://www.wind.com.cn/。 - 中国统计信息网:国家统计局的官方网站,汇集了全国各级政府各年度的国民经济和社会发展统计信息,建立了以统计公报为主,统计年鉴、阶段发展数据、统计分析、经济新闻、主要统计指标排行等。网址为:http://www.tjcn.org/。
- 政府开放数据:各地方政府开放数据,包含竞技、交通、医疗、天气等数据。
- 北京市政务数据资源网:网址为:https://data.beijing.gov.cn/。
- 深圳市政府数据开放平台:网址为:https://opendata.sz.gov.cn/。
- 上海市政务数据服务网:网址为:https://data.sh.gov.cn/。
- 贵州省政府数据开放平台:网址为:http://data.guizhou.gov.cn/。
- 美国政府开放数据 Data.Gov:网址为:https://www.data.gov/。
六、开源时间序列数据分析方法
1. TimeGPT
- 介绍:
TimeGPT 是专门为预测时间序列数据而设计的生成式预训练模型。它按顺序处理数据,采用窗口技术分析历史数据点并识别其中的模式,通过推断这些已识别的模式来预测时间序列的未来值。
- 功能和优势:
- 异常检测:利用预测建模技术,能够识别时间序列数据中的异常模式或异常值,通常表明发生了重大且意外的事件。这对于企业和分析师快速检测和响应异常事件至关重要,即使存在异常,模型仍能保持准确和可靠。
- 外源变量处理:可以将外部因素或外部变量(例如零售预测中的天气条件)纳入分析。通过考虑外部因素的影响,能够进行更细致和准确的预测,在外部因素显著影响数据趋势的情况下尤为有用。
- 微调:尽管是一个预训练模型,但它提供了微调的能力,以适应特定数据集或独特的预测需求。用户可以根据特定要求定制模型,从而提高在特定环境中的预测准确性和相关性。
- 历史预测功能:可以分析过去的数据,生成历史预测,让用户了解模型如何预测过去的事件。这对验证模型的准确性和可靠性特别有益,让用户对其未来预测充满信心。
TimeGPT 适合处理节假日等复杂场景,能够检测异常并结合外部变量,准确预测特殊日期前后的情况,并考虑到其对数据产生的独特影响。同时,它的复杂算法可以处理不规则时间戳,即使在数据不一致的情况下也能确保一致且准确的预测结果。
- 在 MindsDB 中的部署:
- 创建 TimeGPT ML 引擎:使用以下语句创建 TimeGPT ML 引擎,并提供 TimeGPT API 密钥。CREATE ML_ENGINE timegpt_engine FROM timegpt USING timegpt_api_key
=‘timegpt-api-key’; - 创建、训练和部署模型:用户可以使用CREATE MODEL语句来创建、训练和部署 TimeGPT 模型。CREATE MODEL model_table FROM data_source(SELECT * FROM data_table) PREDICT column_to_be_predicted ORDER BY date_column GROUP BY column_name, column_name,… HORIZON 3 – model forecasts the next 3 rows USING ENGINE = ‘timegpt_engine’;
- 查询模型获取预测结果:现在可以查询模型以获取预测。SELECT m.date_column, m.column_to_be_predicted FROM data_table AS d JOIN model_table AS m WHERE d.date_column > LATEST;
- 根据最新数据微调模型:使用 MindsDB,可以自动化预测流程,并持续为任何下游应用生成预测。当有定期更新的动态数据时,应该利用这些最新数据对模型进行微调,以确保预测的准确性。
- 创建 TimeGPT ML 引擎:使用以下语句创建 TimeGPT ML 引擎,并提供 TimeGPT API 密钥。CREATE ML_ENGINE timegpt_engine FROM timegpt USING timegpt_api_key
2. Prophet
- 简介:
Prophet 是 Facebook 开源的时间序列预测算法,支持自定义季节和节假日。它将时间序列分解成趋势项、季节项和假日项,并在此基础上使用加法模型进行预测。
- 算法原理: Prophet 的输入包含两列数据:ds 和 y。ds 列为日期(YYYY-MM-DD)或者是具体的时间点(YYYY-MM-DD HH:MM:SS)。y 列是数值变量,即预测量。
- 通过拟合趋势项、周期项、节假日项和误差项进行预测。趋势项表示时间序列在非周期上面的变化趋势;周期项,也称为季节项,一般以周或者年为单位;节假日项表示在当天是否存在节假日;误差项表示剩余项。
- 趋势项模型:基于逻辑回归函数或分段线性函数拟合趋势项。逻辑回归函数形式为:如果增加一些参数的话,那么逻辑回归就可以改写成:这里的分别为曲线的最大渐近值,曲线的增长率,曲线的中点。当时,恰好就是大家常见的 sigmoid 函数的形式。在现实环境中,参数不可能都是常数,而很有可能是随着时间的迁移而变化的,因此,在 Prophet 里面,作者考虑把这三个参数全部换成了随着时间而变化的函数。
- 季节项模型:周期性的变化因子是时间序列预测模型都会考虑的因素,为了拟合并预测季节的效果,Prophet
基于傅里叶级数提出了一个灵活的模型。季节效应 S (t) 根据以下方程进行估算:表示时间序列的周期,表示以年为周期,表示以周为周期。季节效应 S (t) 傅立叶级数形式是:对季节性建模时,需要在给定 N 的情况下,估计参数傅里叶阶数 N 是一个重要的参数,它用来定义模型中是否考虑高频变化。 - 节假日成分:还有一些和时间紧密相关的事件,比如某些节假日,从漫长的时间尺度上来说,并不是周期性出现的,但是符合一定的出现规则。这样的重要影响则通过数据表的形式喂入模型,如一张列名为 [节假日的名字,国家,年份,日期] 的表。prophet 统计每个节假日出现的时间,给每种节假日都附加一个影响值 k (从正态分布采样),在每个节假日对应时刻(或节假日为中心的一个窗口内的所有时刻)都增加一个节假日的影响值,作为 h (t) 的值。
- 趋势项模型:
- 基于逻辑回归函数或分段线性函数拟合趋势项。
- 逻辑回归函数形式为:如果增加一些参数的话,那么逻辑回归就可以改写成:这里的分别为曲线的最大渐近值,曲线的增长率,曲线的中点。当时,恰好就是大家常见的 sigmoid 函数的形式。在现实环境中,参数不可能都是常数,而很有可能是随着时间的迁移而变化的,因此,在 Prophet 里面,作者考虑把这三个参数全部换成了随着时间而变化的函数。
- 分段线性函数增长:分段线性函数则简单许多,同样确定changepoints 之后,只是在 changepoints 之间构建线性函数,保证它们连续即可,整体就是 y = kx + b。趋势成分的预测涉及到 changepoints 的话,未来也同样是有 changepoints 的,同样地,可以通过人为给出,也可以依赖 prophet 的自动寻找能力。prophet 的自动寻找是以 “未来的 changepoints 和过去差不多” 为前提的,比如我们的时序一共有 T 个点,其中有 S 个 changepoints,那么在预测未来的 H 个点时,每个点都有 S/T 的概率被标记为 changepoint,其相应的变化值也是从 Laplace 分布上采样而来,只是这里的 Laplace 分布的方差,则通过历史中 S 个 changepoints 的方差计算而来,当然也可以用其他更严谨的统计方法,计算历史 changepoints 对应 k 变化值的 Laplace 分布方差。此时,如果采样多组,那么就能计算得到多个可能的趋势,这些趋势能够构成一定的区间,通过不同时刻的区间的相对宽窄,能够反映该时刻的预测的置信程度。
七、开源时间序列数据的未来发展趋势
随着大数据时代的不断发展,开源时间序列数据将在更多领域发挥重要作用。未来,可能会出现更加高效、智能的开源时间序列数据库和分析工具,为数据分析和决策提供更强大的支持。
一方面,技术的不断进步将推动开源时间序列数据库的性能提升。例如,像 GreptimeDB 这样的统一时间序列数据库,将继续优化其云原生分布式架构,分离计算和存储,提高处理高基数问题的能力,并通过兼容多种数据库协议实现无缝集成到现有技术栈中。同时,Apache IoTDB 等开源项目在工业物联网场景下的卓越表现也预示着未来时间序列数据库在性能和成本效益方面将不断突破,为企业提供更高效、更经济的数据存储和管理解决方案。
另一方面,分析工具也将变得更加智能。以 TimeGPT、Lag-Llama 等为代表的开源时间序列预测基础模型,不断创新和发展,通过先进的概率建模方法、零样本预测能力、动态调整上下文长度等特性,为用户提供更准确、更灵活的预测服务。此外,像 WoTan、tsai、mcfly、Khiva 等项目也在各自的领域为时间序列数据处理和分析提供了丰富的算法和技术支持,未来这些工具可能会进一步融合和发展,形成更强大的综合分析平台。
在应用领域方面,开源时间序列数据将继续拓展到更多新兴领域。随着物联网、人工智能、5G 等技术的普及,智能城市、智能制造、医疗健康等领域对时间序列数据的需求将不断增加。例如,在智能城市中,交通流量预测、环境监测等方面可以利用时间序列数据进行更精准的规划和管理;在智能制造中,设备状态监测、生产效率跟踪等环节需要高效的时间序列数据库和分析工具来支持。
同时,社区的力量也将在开源时间序列数据的发展中发挥重要作用。众多开源项目的成功离不开活跃的社区支持,开发者和研究者可以通过社区分享经验、提出问题、贡献代码,共同推动项目的发展和进步。这种开放合作的模式将加速技术的创新和应用,为开源时间序列数据的未来发展注入源源不断的动力。