跳至内容

↑ 日期特征

日期特征的格式例如 2023-06-25 15:00:00, 2023-06-25, 6-25-20236/25/2023

预处理

Ludwig 会尝试自动推断日期格式,但也可以指定特定的格式。日期字符串规范与 python 的 datetime 中描述的相同。

preprocessing:
    missing_value_strategy: fill_with_const
    fill_value: ''
    datetime_format: null
name: date_feature_name
type: date
preprocessing:
  missing_value_strategy: fill_with_const
  fill_value: ''
  datetime_format: "%d %b %Y"

参数

  • missing_value_strategy (默认: fill_with_const) : 日期列中存在缺失值时应遵循的策略。选项:fill_with_const, bfill, ffill, drop_row。详见缺失值策略
  • fill_value (默认: ``): 当 missing_value_strategy 为 fill_with_const 时,用于替换缺失值的值。
  • datetime_format (默认: null): 此参数可以是日期时间格式字符串,或为 null,此时将自动推断日期时间格式。

预处理参数也可以使用类型全局预处理部分定义一次并应用于所有日期输入特征。

输入特征

输入日期特征被转换为大小为 N x 9 的整型张量(其中 N 是数据集的大小,9 个维度包含年、月、日、星期几、一年中的第几天、时、分、秒以及一天中的第几秒)。

例如,日期 2022-06-25 09:30:59 将被分解为

[
  2022,   # Year
  6,      # June
  25,     # 25th day of the month
  5,      # Weekday: Saturday
  176,    # 176th day of the year
  9,      # Hour
  30,     # Minute
  59,     # Seconds
  34259,  # 34259th second of the day
]

在特征级别指定的编码器参数是

  • tied (默认 null): 用于绑定编码器权重的另一个输入特征的名称。它必须是相同类型且具有相同编码器参数的特征的名称。

目前支持两种日期编码器:DateEmbed (默认) 和 DateWave。可以通过在输入特征配置的特征 encoder 参数中指定 embedwave 来设置编码器。

输入特征列表中的日期特征示例条目

name: date_feature_name
type: date
encoder: 
    type: embed

编码器类型和编码器参数也可以使用类型全局编码器部分定义一次并应用于所有日期输入特征。

编码器

Embed 编码器

此编码器将年份通过一个单神经元的全连接层,并嵌入日期的所有其他元素,然后将它们连接起来,并通过全连接层传递连接后的表示。

encoder:
    type: embed
    dropout: 0.0
    embedding_size: 10
    output_size: 10
    activation: relu
    norm: null
    use_bias: true
    bias_initializer: zeros
    weights_initializer: xavier_uniform
    embeddings_on_cpu: false
    norm_params: null
    num_fc_layers: 0
    fc_layers: null

参数

  • dropout (默认: 0.0) : 嵌入层的 Dropout 概率。
  • embedding_size (默认: 10) : 采用的最大嵌入大小。
  • output_size (默认: 10) : 如果在 fc_layers 中未指定 output_size,则这是将用于每一层的默认 output_size。它表示全连接层的输出大小。
  • activation (默认: relu): 将用于每一层的默认激活函数。选项:elu, leakyRelu, logSigmoid, relu, sigmoid, tanh, softmax, null
  • norm (默认: null): 将用于每一层的默认范数。选项:batch, layer, null。详见归一化
  • use_bias (默认: true): 层是否使用偏置向量。选项:true, false
  • bias_initializer (默认: zeros): 用于偏置向量的初始化器。选项:uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity
  • weights_initializer (默认: xavier_uniform): 用于权重矩阵的初始化器。选项:uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity
  • embeddings_on_cpu (默认: false): 是否强制将嵌入矩阵放置在常规内存中并由 CPU 解析。选项:true, false
  • norm_params (默认: null): 如果 norm 是 batchlayer,则使用的参数。详见归一化
  • num_fc_layers (默认: 0): 堆叠的全连接层数量。
  • fc_layers (默认: null): 包含每个全连接层参数的字典列表。

Wave 编码器

此编码器将年份通过一个单神经元的全连接层,并使用不同的周期(月份为 12,日期为 31 等)计算其余日期元素的余弦值来表示它们,然后将它们连接起来,并通过全连接层传递连接后的表示。

encoder:
    type: wave
    dropout: 0.0
    output_size: 10
    activation: relu
    norm: null
    use_bias: true
    bias_initializer: zeros
    weights_initializer: xavier_uniform
    norm_params: null
    num_fc_layers: 1
    fc_layers: null

参数

  • dropout (默认: 0.0) : 嵌入层的 Dropout 概率。
  • output_size (默认: 10) : 如果在 fc_layers 中未指定 output_size,则这是将用于每一层的默认 output_size。它表示全连接层的输出大小。
  • activation (默认: relu): 将用于每一层的默认激活函数。选项:elu, leakyRelu, logSigmoid, relu, sigmoid, tanh, softmax, null
  • norm (默认: null): 将用于每一层的默认范数。选项:batch, layer, null。详见归一化
  • use_bias (默认: true): 层是否使用偏置向量。选项:true, false
  • bias_initializer (默认: zeros): 用于偏置向量的初始化器。选项:uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity
  • weights_initializer (默认: xavier_uniform): 用于权重矩阵的初始化器。选项:uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity
  • norm_params (默认: null): 如果 norm 是 batchlayer,则使用的参数。详见归一化
  • num_fc_layers (默认: 1): 堆叠的全连接层数量。
  • fc_layers (默认: null): 包含每个全连接层参数的字典列表。

输出特征

目前不支持将日期作为输出特征。请考虑使用TEXT 类型