⇅ 二元特征
预处理¶
二元特征直接转换为长度为 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
,用于替换缺失值的值。
预处理参数也可以一次定义,并通过 类型全局预处理 部分应用于所有二元输入特征。
输入特征¶
二元特征有两个编码器:passthrough
和 dense
。可用的编码器可以通过 type
参数指定
type
(默认passthrough
): 可能的值为passthrough
和dense
。passthrough
输出原始整数值,不做修改。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_initializer
和weights_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
(求和),mean
或avg
(平均),max
(最大值),concat
(沿第一维连接),last
(返回第一维的最后一个向量)。dependencies
(默认[]
): 此输出特征所依赖的其他输出特征。详细说明请参阅 输出特征依赖。calibration
(默认false
): 如果为真,在训练完成后执行温度缩放校准。校准使用验证集找到一个比例因子(温度),该因子与 logits 相乘,将输出概率移向更接近真实似然值。reduce_dependencies
(默认sum
): 定义如何将不是向量而是矩阵或更高阶张量的依赖特征的输出在第一维(如果包含批量维则为第二维)上进行归约。可用值有:sum
(求和),mean
或avg
(平均),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_initializer
和weights_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
。