当前位置:   article > 正文

开启你的时间序列分析之旅:一步步教你学会HyperTS

hyperts


前言

HyperTS是一个开源的时间序列分析库,主要用于处理和分析时间序列数据。

一、HyperTS介绍

HyperTS是一个开源的时间序列分析库,是 DataCanvas Automatic Toolkits(DAT) 针对于 时间序列 任务推出了一款涵盖 自动机器学习(AutoML) 与 自动深度学习(AutoDL) 的全Pipeline学习工具。主要用于处理和分析时间序列数据。它提供了一系列功能强大的工具和算法,它涵盖了数据清洗、数据预处理、特征工程、模型选择、超参数优化、模型评估、预测可视化等一系列自动化的操作, 轻松几行代码便可以完全 端到端 地处理多种场景下的时间序列任务。

以下是关于HyperTS的一些详细介绍

  • HyperTS支持常见的时间序列分析任务,如平滑、滞后、差分等。它提供了一系列的函数和方法,可以方便地对时间序列数据进行处理和转换。例如,你可以使用smooth函数对时间序列进行平滑处理,使用lag函数对时间序列进行滞后处理。
  • HyperTS提供了多种特征提取方法,用于从时间序列中提取有用的特征。这些特征可以用于构建机器学习模型和预测任务。例如,你可以使用autocorrelation函数计算自相关系数,使用fft函数进行快速傅里叶变换,以及使用wavelet函数进行小波变换。
  • HyperTS支持多种常见的时间序列模型,如ARIMA、GARCH、VAR等。这些模型可以用于时间序列的建模和预测。例如,你可以使用arima函数建立ARIMA模型,使用garch函数建立GARCH模型,以及使用var函数建立VAR模型。
  • HyperTS还提供了一些评估指标和可视化工具,用于评估模型的性能和结果的可视化。例如,你可以使用mse函数计算均方误差,使用plot函数绘制时间序列的图表。

总的来说,HyperTS是一个功能强大的时间序列分析库,可以帮助你处理和分析时间序列数据。你可以使用它进行时间序列的预处理、特征提取、模型建立和预测等任务。

HyperTS的功能特性清单如下
在这里插入图片描述

二、HyperTS安装、使用

2-1、安装

安装

pip install prophet
pip install hyperts
  • 1
  • 2

可能会发生的是Numpy版本的一个兼容问题,更新Numpy

pip install --upgrade numpy
  • 1

其他:可选择安装tensorflow:

# 如果使用到深度学习时,需要安装
pip install tensorflow
  • 1
  • 2

2-2、HyperTS使用

主要是通过make_experiment函数来训练一个模型

在这里插入图片描述

  • Time Series Task:确定时间序列任务是什么,输入规范后的数据,确定相对应的模型。
  • make_experiment: 通过make_experiment函数的训练,run之后最终得到了一个训练好的模型。
  • predict、evaluate: 使用训练好的模型,去做预测任务、评估模型性能以及作图等。

三、案例

3-0、通用工作流程

通用工作流程

  • 导入所需要的库
  • 加载数据集
  • 使用train_test_split来分割训练集和验证集。
  • 使用make_experiment函数来创建实验,确定任务、数据、模型,进行训练,run之后得到训练后的模型。
  • 评估模型。

其他注意事项

  • 对于划分训练集和测试集,由于数据存在时间上的先后顺序,因此为了防止信息的泄露,我们设置shuffle=False,即不打乱数据集。

task设置:最简单的设置为’forecast’、‘classification’ 、‘regression’, 这样HyperTS将自行判断任务类型。

  • 单变量预测: task=’unvariate-forecast’;
  • 多变量预测: task=’multivariate-forecast’;
  • 单变量二分类: task=’univariate-binaryclass’;
  • 单变量多分类: task=’univariate-multiclass’;
  • 多变量二分类: task=’multivariate-binaryclass’;
  • 多变量多分类: task=’multivariate-multiclass’.

3-1、时间序列预测

时间序列预测: 在时间序列任务中,我们除了按照惯例的流程外,我们还需要向make_experiment中传入参数timestamp,即指定时间戳。如果存在协同变量,我们也需要指定协同变量covariates。指定时序预测任务,即task= ‘forecast’

预测数据格式:在预测任务中, 输入数据应该是一个含有时间列(TimeStamp)(必须有时间列)和变量列的 pandas.DataFrame 格式的二维数据表。

其他

  • 时间可以是无序的,HyperTS可以自动转化为有序数列。
  • 输入数据允许存在缺失值,缺失点与缺失时间片段,HyperTS将会在数据预处理过程被填充。
  • 输入数据允许存在重复行, 重复的时间片段, HyperTS将会在被在数据预处理过程被裁剪。
  • 协变量:辅助建模的数据(可以是数值型(连续变量)也可以是类别型(离散变量)。允许存在缺失值和重复值, 不需要自己处理。)
  • 调用evaluate方法如果想观测指定指标的评分,可以设置参数metrics,例如metrics=[‘mae’, ‘mse’, mape_func]

案例如下

from hyperts import make_experiment
from hyperts.datasets import load_network_traffic

from sklearn.model_selection import train_test_split

data = load_network_traffic()
# 分割训练数据和测试数据
train_data, test_data = train_test_split(data, test_size=0.2, shuffle=False)

model = make_experiment(train_data.copy(),
                        task='multivariate-forecast',
                        mode='stats',
                        timestamp='TimeStamp',
                        covariates=['HourSin', 'WeekCos', 'CBWD']).run()

# 测试数据分割成变量以及目标值
X_test, y_test = model.split_X_y(test_data.copy())
# 使用predict方法来执行结果的预测。
y_pred = model.predict(X_test)

scores = model.evaluate(y_test, y_pred)

model.plot(forecast=y_pred, actual=test_data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出

  • 这里会显示某一个变量的预测曲线, 默认为第一个目标变量;
  • 如果为多变量预测, 想要观测其他的变量曲线变化的情况, 可以修改参数var_id, 例如: var_id=2 或者 var_id=‘Var_3’;
  • plot可支持交互式可视化通过设置 interactive=False (默认交互, 需安装plotly);
  • 绘制更长期的历史信息, 设置参数 history=sub_train_data;
  • 当 actual=None (默认), 则只绘制预测曲线;
    在这里插入图片描述

3-2、时间序列分类

from hyperts import make_experiment
from hyperts.datasets import load_basic_motions

from sklearn.metrics import f1_score
from sklearn.model_selection import train_test_split

data = load_basic_motions()
train_data, test_data = train_test_split(data, test_size=0.2)

model = make_experiment(train_data.copy(),
                        task='classification',
                        mode='dl',
                        tf_gpu_usage_strategy=1,
                        reward_metric='accuracy',
                        max_trials=30,
                        early_stopping_rounds=10).run()

X_test, y_test = model.split_X_y(test_data.copy())

y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)

scores = model.evaluate(y_test, y_pred, y_proba=y_proba, metrics=['accuracy', 'auc', f1_score])

print(scores)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

输出
在这里插入图片描述

3-3、时间序列异常检测

时间序列异常检测: 在时间序列异常检测任务中,同时间序列预测任务类似,我们除了按照惯例的流程外,我们还需要向make_experiment中传入参数timestamp,即指定时间戳。如果存在协同变量,我们也需要指定协同变量covariates。

from hyperts import make_experiment
from hyperts.datasets import load_real_known_cause_dataset

from sklearn.model_selection import train_test_split

data = load_real_known_cause_dataset()
ground_truth = data.pop('anomaly')

detection_length = 15000
train_data, test_data = train_test_split(data, test_size=detection_length, shuffle=False)

model = make_experiment(train_data.copy(),
                        task='detection',
                        mode='stats',
                        reward_metric='f1',
                        max_trials=30,
                        timestamp='timestamp',
                        early_stopping_rounds=10).run()

X_test, _ = model.split_X_y(test_data.copy())
y_test = ground_truth.iloc[-detection_length:]

y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)

scores = model.evaluate(y_test, y_pred, y_proba=y_proba)

model.plot(y_pred, actual=test_data, history=train_data, interactive=False)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

输出

在这里插入图片描述

四、高级应用

4-1、模型的保存和加载

模型的保存

model.save(model_file="./xxx/xxx/models")

# 或者是
from hyperts.utils.models import load_model

pipeline_model = load_model(model_file="./xxx/xxx/models/dl_models")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

模型的加载

from hyperts.utils.models import load_model

pipeline_model = load_model(model_file="./xxx/xxx/models/dl_models")
  • 1
  • 2
  • 3

4-2、选择运行模式

HyperTS内置了三种运行模式:统计模型模式(‘stats’), 深度学习模式(‘dl’)以及神经架构搜索模式(‘nas’, 未开放),默认统计模型模式。

experiment = make_experiment(train_data,
                            mode='dl',
                            ...)
  • 1
  • 2
  • 3

4-3、指定模型的评估指标

当使用 make_experiment 创建实验时, 缺省情况下, 预测任务默认的模型评估指标是’mae’, 分类任务是’accuracy’, 回归任务默认是’rmse’。您可以通过参数 reward_metric 重新指定评估指标, 可以是’str’也可以是 sklearn.metrics 内置函数

目前, reward_metric 可以支持多种评估指标, 具体如下:

  • 分类: accuracy, auc, f1, precision, recall, logloss。

  • 预测及回归: mae, mse, rmse, mape, smape, msle, r2。

案例如下

# str
experiment = make_experiment(train_data,
                            task='univariate-binaryclass',
                            reward_metric='auc',
                            ...)

# sklearn.metrics
from sklearn.metrics import auc
experiment = make_experiment(train_data,
                            task='univariate-binaryclass',
                            reward_metric=auc,
                            ...)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4-4、make_experiment中的其他指标

max_trials: 设置最大搜索次数。
early_stopping: 搜索限制

  • early_stopping_time_limit: 限制实验的运行时间, 粒度为秒。
  • early_stopping_round: 限制实验达到最优值后无效搜索的轮数, 粒度为次。
  • early_stopping_reward: 指定一个奖励得分的界限。

pos_label:二分类任务中指定正标签
eval_data: 指定验证数据
eval_size: 评估数据集的大小
freq:时序预测任务中, 可能没有规律性的时间频率, 即非连续采样时,设置freq=‘null’参数来告知模型。
timestamp: 在某些时序预测数据中, 可能没有存储时间列 timestamp, 即只包含目标列以及协变量列等特征。此时, 您可以通过设置参数 timestamp=‘null’
forecast_train_data_periods : 对于某些存在很长历史数据的时序预测任务, 使用全部数据建模, 历史数据可能不符合未来数据的序列特性而且也会增加模型的训练成本。此时, 您可以通过参数 forecast_train_data_periods 来从训练数据末端向前截取一定周期的数据进行训练
random_state: 固定随机种子,保证结果可以复现。
cv: 通过参数cv指定是否启用交叉验证,当cv设置为True时,表示开启交叉验证,折数可以通过参数num_folds设置。
log_level: 调整日志级别,例如’INFO’,则是将日志设置为信息级别。

五、时序异常检测

5-1、统计模型

5-1-0、stats

模式:直接选择模型为stats,即使用统计模型来自行决策。

  • 导入hyperts自带的数据集,并绘制出对应图形。
from hyperts.datasets import load_real_known_cause_dataset
from hyperts.toolbox import temporal_train_test_split
import pandas as pd
import matplotlib.pyplot as plt
from hyperts import make_experiment

df = load_real_known_cause_dataset()
ground_truth = df.pop('anomaly')

# 用于生成训练集和测试数据,temporal_train_test_split是专门用于时间序列数据集的划分方法
# 其保留了时间序列数据的时间顺序。train_test_split() 是机器学习中常用的数据集划分方法,
# 这个方法是随机地将数据集分成两个部分,
train_data, test_data = temporal_train_test_split(df, test_horizon=15000)
outliers = ground_truth.loc[ground_truth.values == 1]
# 异常点的索引值保存在outliers_index
outliers_index = list(outliers.index)


# 使用matplotlib绘制出训练数据、测试数据和检测到的异常点
plt.figure(figsize=(16, 6))
plt.plot(pd.to_datetime(train_data['timestamp']),
         train_data['value'],
         c='gray',
         label='train data')
plt.plot(pd.to_datetime(test_data['timestamp']),
         test_data['value'],
         c='red',
         label='test data')
plt.scatter(pd.to_datetime(df.loc[outliers_index, 'timestamp']),
            df.loc[outliers_index, 'value'],
            c='purple',
            marker='x',
            label='anomaly')
plt.legend()
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

输出图形如下:左侧为训练数据,右侧为测试数据,紫色的点,为数据本身的异常点。
在这里插入图片描述

  • 使用hyperts,统计学模式,自行搜索出最优模型
experiment = make_experiment(
    train_data=train_data.copy(),
    mode='stats',
    task='detection',
    timestamp='timestamp',
    # 参数搜索的最大次数为60次
    max_trials=60,
    random_state=2022)

model = experiment.run()

# 获得最终模型的超参数
print(model.get_pipeline_params())
X_test, _ = model.split_X_y(test_data.copy())
y_pred = model.predict(X_test)
# predict_proba:在测试集上进行预测的方法,返回的是两个类别的概率
y_proba = model.predict_proba(X_test)
y_test = ground_truth.iloc[-15000:]
scores = model.evaluate(y_true=y_test, y_pred=y_pred, y_proba=y_proba)
model.plot(y_pred, actual=test_data, history=train_data, interactive=False)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 输出模型超参数如下:
    <bound method Pipeline.get_params of Pipeline(steps=[(‘data_preprocessing’,
    TSAFDataPreprocessStep(covariate_cleaner=IdentityTransformer(),
    ensemble_size=10, freq=‘5T’,
    name=‘data_preprocessing’,
    timestamp_col=[‘timestamp’])),
    (‘estimator’,
    TSGreedyEnsemble(weight=[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], scores=[0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283, 0.8282828282828283]))])>

  • 输出异常点如下所示
    在这里插入图片描述

5-1-1、TSIsolationForest

IsolationForest: 孤立森林(Isolation Forest) 是一种使用隔离的手段(某点到其他数据的距离)来做异常检测无监督算法, 而不是对正常点建模。

该方法由Fei Tony Liu 在其2007年的博士论文中提出,是其最初的研究思路之一。该研究的意义在于,它不同于当时大多数现有异常检测的主流哲学,即先分析所有的正常实例,然后将异常识别为不符合正常分布的实例。孤立森林引入了一种不同的方法,即使用二叉树显式的分离异常, 展示了一种更快的异常检测的新可能性,该检测器直接针对异常,而无需分析所有的正常的实例。该算法具有线性的时间复杂度,低内存需求,适用于大容量数据。

5-1-2、TSOneClassSVM

单类支持向量机(One-Class SVM) 是一种无监督的异常检测算法,它学习区分特定类的测试样本与其他类的能力。

One-Class SVM 是处理单类分类问题包括异常检测最常用的方法之一。One-Class SVM 的基本思想是最小化训练数据集中单类实例的超球,并将超球之外或者训练数据分布之外的所有其他样本视为异常值。

5-2、深度学习

5-2-0、dl


  • 1

5-2-1、VAE

变分自动编码器 (Variational AutoEncoder, VAE) 是一种无监督的深度学习模型,可以对训练数据的分布进行建模。

它来自贝叶斯推理,由编码器、潜在分布和解码器组成。其原理是一个参数已知,特征可叠加的简单分布 (如高斯分布),结合神经网络,理论上可以拟合任意分布。VAE在做异常检测的思想也很简单,即找出重构误差大的样本点即为异常点。

案例代码如下

import numpy as np
import pandas as pd
import matplotlib.pylab as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

from hyperts.datasets import load_real_known_cause_dataset

# 卷积变分自编码器(Convolutional Variational Autoencoder,ConvVAE)是一种深度学习模型,
# 结合了卷积神经网络(Convolutional Neural Network,CNN)和变分自编码器(Variational Autoencoder,
# VAE)的思想。它在处理具有时序特征的数据(例如时间序列数据)时非常有用,可以用于特征提取、重构和异常检测等任务。
# ConvVAE类提供了构建和训练ConvVAE模型所需的功能和方法。通过使用该类,可以方便地定义和训练ConvVAE模型,并应用于各种任务,如异常检测、数据生成等。
from hyperts.framework.dl.models import ConvVAE

data = load_real_known_cause_dataset()
target = data.pop('anomaly')
# 将timestamp列转换为日期时间格式。
data['timestamp'] = pd.to_datetime(data['timestamp'])
detect_length = 15000

# 测试长度设置为15000,shuffle设置为False,即不打乱数据
train_data, test_data = train_test_split(data, test_size=detect_length, shuffle=False)
train_X = train_data[['timestamp']]
train_y = train_data[['value']]
sc = StandardScaler()
# 对目标值进行标准化处理
train_y['value'] = sc.fit_transform(train_y['value'].values.reshape(-1, 1))

# task='univariate-detection':指定模型的任务类型为单变量异常检测。
# timestamp='timestamp':指定输入数据中时间戳的列名。
# conv_type='separable':指定卷积类型为可分离卷积。
# window=24:指定滑动窗口的大小,用于提取时间序列特征。
# latent_dim=4:指定潜在空间的维度,即自编码器中编码器输出的维度。
# cnn_filters=64:指定卷积层的滤波器数量。
# learning_rate=0.0005:指定模型的学习率。
# drop_rate=0.2:指定Dropout层的丢弃率。
# nb_layers=3:指定卷积层的数量。
# kernel_size=1:指定卷积核的大小。
# out_activation='linear':指定模型输出层的激活函数为线性函数。
vae = ConvVAE(task='univariate-detection',
              timestamp='timestamp',
              conv_type='separable',
              window=24,
              latent_dim=4,
              cnn_filters=64,
              learning_rate=0.0005,
              drop_rate=0.2,
              nb_layers=3,
              kernel_size=1,
              out_activation='linear')

#
vae.fit(X=train_X, y=train_y, epochs=100)
train_labels = vae.labels_
# 得出训练数据的异常样本
train_outliers = np.where(train_labels == 1)[0].tolist()

# 对测试数据进行异常检测并且获取到异常样本
test_data = test_data.reset_index(drop=True)
test_X = test_data[['timestamp']]
test_y = test_data[['value']]

# 测试集的标准化处理
test_y['value'] = sc.transform(test_y['value'].values.reshape(-1, 1))
test_labels = vae.predict_outliers(X=test_X, y=test_y)
test_outliers = np.where(test_labels == 1)[0].tolist()

# 图形绘制
plt.figure(figsize=(16, 6))
plt.plot(data['timestamp'], data['value'], c='gray')
plt.scatter(train_data.loc[train_outliers, 'timestamp'], train_data.loc[train_outliers, 'value'], c='r', label='train anomaly')
plt.scatter(test_data.loc[test_outliers, 'timestamp'], test_data.loc[test_outliers, 'value'], c='b', label='test anomaly')
plt.legend()
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

输出如下所示
在这里插入图片描述

六、API

6-1、hyperts.experiment

  • train_data: 用于训练的特征数据,带有目标列。
  • task: 任务(‘univariate-forecast’, ‘multivariate-forecast’, and ‘univariate-binaryclass’, ‘univariate-multiclass’, ‘multivariate-binaryclass, and ’multivariate-multiclass’.) 即(单/多变量预测, 单/多变量二分类,单/多变量多分类), 也可以是(‘forecast’, ‘classification’, ‘regression’,and ‘detection’),即(预测、分类、回归、检测)
  • eval_data: 用于评估的特征数据。
  • test_data: 用于测试的特征数据。
  • max_trials: 指的是超参数搜索过程中要执行的最大试验次数,它确定了在搜索期间将评估的不同超参数组合的总数,即在进行超参数优化时,通常会探索超参数的多个组合,以找到使得模型性能最大化的最佳配置。max_trials参数允许您指定在此搜索期间要执行的最大试验数。在搜索过程中,HyperTS使用各种搜索算法(如随机搜索、网格搜索或贝叶斯优化)来探索超参数空间并评估不同的组合。(从小到大去设置,同时考虑计算机的一个计算能力
  • eval_size: 控制在超参数搜索期间用于评估每个试验性能的验证集的大小或比例。它决定了从训练数据中留出的数据量,以评估模型的性能。(eval_size的目标是提供足够的多样性,并涵盖数据中的不同模式和变化。根据数据集的特征找到一个平衡点,可以从一个合理的值开始(例如,验证集大小为20%时为0.2),然后根据问题的特定需求和约束对其进行微调。
  • cv : 如果为True,则使用交叉验证来评估超参数搜索过程。
    1、数据集很小,通常建议较大的cv值,以最大限度地利用可用数据,对于较大的数据集,可以使用较低的cv值。
    2、 如果数据集不平衡,则需要使用专门的交叉验证策略,例如分层k-fold,以确保每个fold都适当地表示数据分布。
    3、如果模型很复杂,或者具有大量参数,则较大的cv值可以帮助获得对其性能更可靠的评估,反之使用较小的cv值。
  • num_folds :交叉验证数,默认为3,仅在cv为True时有效。
  • mode: 可选stats、dl,stats表示在执行过程中选择的所有模型都是统计模型,dl表示在执行过程中选择的所有模型都是深度学习模型。
  • ensemble_size : 要集成的模型的数目,用于集成学习。选择一些表现较好的模型进行集成比只选择一个最佳模型能获得更好的泛化能力。ensemble_size参数决定了集成中要包含的模型的数量。增加集合规模可以通过减少个体模型偏差的影响和增加预测的多样性来潜在地改善集合的性能。(在一定程度上,增大集成大小可能会带来更好的性能。然而,通常会有一个递减的回报,并且在达到一定规模后,改善可能会趋于平稳甚至下降。训练数据的大小也会影响ensemble_size的选择。如果你有一个小的数据集,使用一个大的集合可能会导致过拟合。
  • freq:如果任务是不连续的时间序列,可以将频率指定为“Discrete”。
  • timestamp:指定时间戳
  • covariates: 指定协变量的列名。
  • contamination : 该参数仅在异常检测任务中使用,表明数据集中异常值的比例。
  • reward_metric : 用于指定评估标准,用于指导超参数搜索和优化过程,评估指标包含:accuracy、auc、f1、logloss、mse、mae、rmse、mape、smape、msle、precision、r2、recall。默认 accuracy用于二分类、多分类任务;rmse用于预测、回归任务;
  • tf_gpu_usage_strategy : 0:cpu | 1:gpu动态分配策略| 2:gpu完全分配。
  • random_state : 随机种子

参考文章:
HyperTS官方文档.
github.
API.
案例分析.
深度学习调参tricks总结.


总结

明天是端午节啦~ 想她

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/159542
推荐阅读
相关标签