跳到内容

⇅ 二元特征

预处理

二元特征直接转换为长度为 n(其中 n 是数据集的大小)的二值向量,并添加到 HDF5 文件中,键名反映数据集中的列名。

preprocessing:
    missing_value_strategy: fill_with_false
    fallback_true_label: null
    fill_value: null

参数

  • missing_value_strategy (默认: fill_with_false) : 当二元列中存在缺失值时采取的策略。选项: fill_with_mode, bfill, ffill, drop_row, fill_with_false, fill_with_true。详情请参阅 缺失值策略
  • fallback_true_label (默认: null): 当二元特征没有常规布尔值时,解释为 1 (真) 的标签。
  • fill_value (默认: null): 如果 missing_value_strategy 设置为 fill_with_const,用于替换缺失值的值。

预处理参数也可以一次定义,并通过 类型全局预处理 部分应用于所有二元输入特征。

输入特征

二元特征有两个编码器:passthroughdense。可用的编码器可以通过 type 参数指定

  • type (默认 passthrough): 可能的值为 passthroughdensepassthrough 输出原始整数值,不做修改。dense 随机初始化一个可训练的嵌入矩阵。

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

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

输入特征列表中的二元特征示例条目

name: binary_column_name
type: binary
tied: null
encoder: 
    type: dense

编码器类型和编码器参数也可以一次定义,并通过 类型全局编码器 部分应用于所有二元输入特征。

编码器

直通编码器

passthrough 编码器直接传递原始二元值,不进行任何转换。大小为 b 的输入转换为大小为 b x 1 的输出,其中 b 是批量大小。

encoder:
    type: passthrough

passthrough 编码器没有额外的参数。

密集编码器

dense 编码器将原始二元值通过一个全连接层。大小为 b 的输入转换为大小为 b x h

encoder:
    type: dense
    dropout: 0.0
    output_size: 256
    norm: null
    num_layers: 1
    activation: relu
    use_bias: true
    bias_initializer: zeros
    weights_initializer: xavier_uniform
    norm_params: null
    fc_layers: null

参数

  • dropout (默认: 0.0) : 应用于全连接层的默认 dropout 率。增加 dropout 是对抗过拟合的常见正则化形式。dropout 表示一个元素被归零的概率 (0.0 表示没有 dropout)。
  • output_size (默认: 256) : 特征的输出大小。
  • norm (默认: null) : 在全连接层开始时应用的默认归一化类型。选项: batch, layer, ghost, null
  • num_layers (默认: 1) : 应用的堆叠全连接层数。增加层数可以增加模型容量,使其能够学习更复杂的特征交互。
  • activation (默认: relu): 应用于全连接层输出的默认激活函数。选项: elu, leakyRelu, logSigmoid, relu, sigmoid, tanh, softmax, 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。或者,也可以指定一个字典,其中包含一个标识初始化器类型的键 type 和其他参数键,例如 {type: normal, mean: 0, stddev: 0}。有关每个初始化器参数的描述,请参阅 torch.nn.init

  • weights_initializer (默认: xavier_uniform): 权重矩阵的初始化器。选项: uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity。或者,也可以指定一个字典,其中包含一个标识初始化器类型的键 type 和其他参数键,例如 {type: normal, mean: 0, stddev: 0}。有关每个初始化器参数的描述,请参阅 torch.nn.init

  • norm_params (默认: null): 传递给 norm 模块的默认参数。

  • fc_layers (默认: null): 包含所有全连接层参数的字典列表。列表的长度决定了堆叠的全连接层数,每个字典的内容决定了特定层的参数。每层可用的参数有: activation, dropout, norm, norm_params, output_size, use_bias, bias_initializerweights_initializer。如果字典中缺少任何这些值,将使用作为独立参数提供的默认值。

输出特征

当需要执行二元分类或输出是单个概率时,可以使用二元输出特征。只有一个可用的解码器: regressor

使用默认参数的二元输出特征示例

name: binary_column_name
type: binary
reduce_input: sum
dependencies: []
calibration: false
reduce_dependencies: sum
threshold: 0.5
decoder:
  type: regressor
  fc_layers: null
  num_fc_layers: 0
  fc_output_size: 256
  fc_use_bias: true
  fc_weights_initializer: xavier_uniform
  fc_bias_initializer: zeros
  fc_norm: null
  fc_norm_params: null
  fc_activation: relu
  fc_dropout: 0.0
  input_size: null
  use_bias: true
  weights_initializer: xavier_uniform
  bias_initializer: zeros
loss:
  type: binary_weighted_cross_entropy
  weight: 1.0
  positive_class_weight: null
  robust_lambda: 0
  confidence_penalty: 0

参数

  • reduce_input (默认 sum): 定义如何将不是向量而是矩阵或更高阶张量的输入在第一维(如果包含批量维则为第二维)上进行归约。可用值有: sum (求和), meanavg (平均), max (最大值), concat (沿第一维连接), last (返回第一维的最后一个向量)。
  • dependencies (默认 []): 此输出特征所依赖的其他输出特征。详细说明请参阅 输出特征依赖
  • calibration (默认 false): 如果为真,在训练完成后执行温度缩放校准。校准使用验证集找到一个比例因子(温度),该因子与 logits 相乘,将输出概率移向更接近真实似然值。
  • reduce_dependencies (默认 sum): 定义如何将不是向量而是矩阵或更高阶张量的依赖特征的输出在第一维(如果包含批量维则为第二维)上进行归约。可用值有: sum (求和), meanavg (平均), max (最大值), concat (沿第一维连接), last (返回第一维的最后一个向量)。
  • threshold (默认 0.5): 当 sigmoid 函数的预测输出大于或等于此阈值时,将映射到 1。
  • loss (默认 {"type": "binary_weighted_cross_entropy"}): 是一个包含损失 type 的字典。binary_weighted_cross_entropy 是二元输出特征唯一支持的损失类型。详情请参阅 损失函数
  • decoder (默认: {"type": "regressor"}): 用于所需任务的解码器。选项: regressor。详情请参阅 解码器

解码器类型和解码器参数也可以一次定义,并通过 类型全局解码器 部分应用于所有二元输出特征。

解码器

回归器

graph LR
  A["Combiner\n Output"] --> B["Fully\n Connected\n Layers"];
  B --> C["Projection into\n Output Space"];
  C --> D["Sigmoid"];
  subgraph DEC["DECODER.."]
  B
  C
  D
  end

回归器解码器是一个(可能为空的)全连接层堆叠,然后投影为一个单个数值,再经过 sigmoid 函数。

decoder:
    type: regressor
    num_fc_layers: 0
    fc_output_size: 256
    fc_norm: null
    fc_dropout: 0.0
    fc_activation: relu
    fc_layers: null
    fc_use_bias: true
    fc_weights_initializer: xavier_uniform
    fc_bias_initializer: zeros
    fc_norm_params: null
    use_bias: true
    weights_initializer: xavier_uniform
    bias_initializer: zeros

参数

  • num_fc_layers (默认: 0) : 如果未指定 fc_layers,则表示全连接层数。增加层数可以增加模型容量,使其能够学习更复杂的特征交互。
  • fc_output_size (默认: 256) : 全连接层堆叠的输出大小。
  • fc_norm (默认: null) : 在全连接层开始时应用的默认归一化类型。选项: batch, layer, ghost, null
  • fc_dropout (默认: 0.0) : 应用于全连接层的默认 dropout 率。增加 dropout 是对抗过拟合的常见正则化形式。dropout 表示一个元素被归零的概率 (0.0 表示没有 dropout)。
  • fc_activation (默认: relu): 应用于全连接层输出的默认激活函数。选项: elu, leakyRelu, logSigmoid, relu, sigmoid, tanh, softmax, null
  • fc_layers (默认: null): 包含所有全连接层参数的字典列表。列表的长度决定了堆叠的全连接层数,每个字典的内容决定了特定层的参数。每层可用的参数有: activation, dropout, norm, norm_params, output_size, use_bias, bias_initializerweights_initializer。如果字典中缺少任何这些值,将使用作为独立参数提供的默认值。
  • fc_use_bias (默认: true): 全连接堆叠中的层是否使用偏置向量。选项: true, false
  • fc_weights_initializer (默认: xavier_uniform): 用于全连接堆叠中各层的权重初始化器。
  • fc_bias_initializer (默认: zeros): 用于全连接堆叠中各层的偏置初始化器。
  • fc_norm_params (默认: null): 传递给 norm 模块的默认参数。
  • use_bias (默认: true): 层是否使用偏置向量。选项: true, false
  • weights_initializer (默认: xavier_uniform): 权重矩阵的初始化器。选项: uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity
  • bias_initializer (默认: zeros): 偏置向量的初始化器。选项: uniform, normal, constant, ones, zeros, eye, dirac, xavier_uniform, xavier_normal, kaiming_uniform, kaiming_normal, orthogonal, sparse, identity

损失函数

二元加权交叉熵

loss:
    type: binary_weighted_cross_entropy
    positive_class_weight: null
    weight: 1.0
    robust_lambda: 0
    confidence_penalty: 0

参数

  • positive_class_weight (默认: null) : 正类的权重。
  • weight (默认: 1.0): 损失的权重。
  • robust_lambda (默认: 0): 将损失函数替换为 (1 - robust_lambda) * loss + robust_lambda / c,其中 c 是类别数。在存在噪声标签的情况下很有用。
  • confidence_penalty (默认: 0): 通过向损失函数添加一个 a * (max_entropy - entropy) / max_entropy 项来惩罚过于自信的预测(低熵),其中 a 是此参数的值。在存在噪声标签的情况下很有用。

损失和损失相关参数也可以一次定义,并通过 类型全局损失函数 部分应用于所有二元输出特征。

评估指标

为二元特征计算的每个 epoch 可用的评估指标包括 accuracy (准确率), loss (损失), precision (精确率), recall (召回率), roc_auc (ROC AUC) 和 specificity (特异度)。

如果 validation_field 设置为二元特征的名称,您可以将这些指标中的任何一个设置为配置的 training 部分中的 validation_metric