Functime:支持接入大模型的时间序列特征提取和预测工具

·
·
·

在数据分析和机器学习领域,时间序列数据的处理和预测是一个关键且复杂的任务。Functime是一个专为大规模时间序列数据分析而设计的Python库,它利用Polars库的并行处理能力,以其高效、易用和强大的功能,为时间序列分析提供了一整套解决方案。

Functime的核心特性

  1. 生产就绪:Functime提供了一个强大且易于使用的API,用于预测和特征工程,适用于生产环境。
  2. 快速性能:能够在几秒钟内对100,000个时间序列进行预测,即使在笔记本电脑上也能实现。
  3. 高效特征提取:使用Polars库并行提取数百个时间序列特征。
  4. 支持多种数据模式:Functime支持面板数据和时间序列数据模式,适用于不同的数据集结构。
  5. 全面的功能:包括预处理、特征提取、时间序列交叉验证/分割器、回测、自动化超参数调整和评分。
  6. 外生特征支持:每个预测器都支持外生特征。
  7. 季节性效应:使用日历、傅里叶和假日特征来处理季节性效应。
  8. 自动化滞后和超参数调整:使用FLAML进行自动化滞后和超参数调整。
  9. 概率预测:通过分位数回归和保形预测提供概率预测。
  10. 评分指标:支持并行评分,使用MASE、sMAPE、CRPS等预测指标。
  11. 支持递归和直接预测策略:为零膨胀预测提供截断模型。
  12. 与LLMs互操作:Functime支持调用大型语言模型(如OpenAI的GPT模型),以增强预测分析。

安装和使用

Functime可以通过pip包管理器轻松安装。如果需要额外的功能,如使用大型语言模型或LightGBM预测器,可以通过指定额外的选项进行安装:

pip install "functime[llm,lgb]"

Functime提供了一个简洁的API,允许用户以函数式编程的方式进行数据的拟合和预测。例如,可以使用以下代码进行时间序列的加载、训练、预测和评分:

import polars as pl
from functime.cross_validation import train_test_split
from functime.forecasting import linear_model
from functime.preprocessing import scale
from functime.metrics import mase

# 加载商品价格数据
y = pl.read_parquet("https://github.com/functime-org/functime/raw/main/data/commodities.parquet")
entity_col, time_col = y.columns[:2]

# 时间序列分割
y_train, y_test = y.pipe(train_test_split(test_size=3))

# 拟合-预测
forecaster = linear_model(freq="1mo", lags=24)
forecaster.fit(y=y_train)
y_pred = forecaster.predict(fh=3)

# 评分预测
scores = mase(y_true=y_test, y_pred=y_pred, y_train=y_train)

特征提取

Functime提供了100多个时间序列特征提取器,每个特征都可以通过Functime的自定义ts(时间序列)命名空间轻松访问。例如,可以使用以下代码提取单个时间序列的特征:

from functime.feature_extractors import FeatureExtractor, binned_entropy

# 加载商品价格数据
y = pl.read_parquet("https://github.com/functime-org/functime/raw/main/data/commodities.parquet")
entity_col, time_col, value_col = y.columns

# 提取单个时间序列的特征
binned_entropy = binned_entropy(
    pl.Series(np.random.normal(01, size=10)),
    bin_count=10
)

Functime还支持在LazyFrames上进行查询优化,可以快速地对多个时间序列进行特征提取。

使用大模型进行分析

Functime允许用户利用大型语言模型对预测结果进行深入分析。例如,可以分析不同商品的价格预测,并提供数据集的上下文以帮助LLM进行更准确的分析:

analysis = y_pred.llm.analyze(
    context="This dataset comprises of forecasted commodity prices between 2020 to 2023.",
    basket=["Aluminum""Banana, Europe"],
)

Functime还允许用户比较不同商品或资产类别的预测结果。以下是一个比较两个不同商品篮子预测结果的示例:

basket_a = ["Aluminum""Banana, Europe"]
basket_b = ["Chicken""Cocoa"]
comparison = y_pred.llm.compare(basket=basket_a, other_basket=basket_b)

总结

Functime是一个功能丰富的时间序列分析库,它不仅提供了高效的预测和特征提取工具,还通过集成大型语言模型,增强了对预测结果的分析和解释能力。通过结合传统机器学习方法和最新的人工智能技术,Functime为用户提供了一个全面而先进的时间序列分析解决方案。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/111117
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 3分钟前
下一篇 2分钟前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注