模型配置¶
ModelConfig 是 DT 中最重要的参数。它用于设置如何自动清理和预处理数据,以及如何组装各种网络组件以构建用于预测任务的神经网络,还包括网络超参数的设置等。如果您不更改 ModelConfig 中的任何设置,DT 在大多数情况下也能正常工作。但是,通过调整 ModelConfig 中的参数,您可以获得更好的性能。
我们在下面详细描述。
ModelConfig的简单用例¶
from deeptables.models.deeptable import DeepTable, ModelConfig
from deeptables.models.deepnets import DeepFM
conf = ModelConfig(
nets=DeepFM, # same as `nets=['linear','dnn_nets','fm_nets']`
categorical_columns='auto', # or categorical_columns=['x1', 'x2', 'x3', ...]
metrics=['AUC', 'accuracy'], # can be `metrics=['RootMeanSquaredError']` for regression task
auto_categorize=True,
auto_discrete=False,
embeddings_output_dim=20,
embedding_dropout=0.3,
)
dt = DeepTable(config=conf)
dt.fit(X, y)
参数¶
网络¶
字符串列表或自定义函数, (默认=['dnn_nets'])
您可以使用多个组件来组合神经网络联合训练以执行预测任务。
nets 的值可以是组件名称、预设模型和自定义函数的任意组合。
组件:
- ‘dnn_nets’
- ‘linear’
- ‘cin_nets’
- ‘fm_nets’
- ‘afm_nets’
- ‘opnn_nets’
- ‘ipnn_nets’
- ‘pnn_nets’,
- ‘cross_nets’
- ‘cross_dnn_nets’
- ‘dcn_nets’,
- ‘autoint_nets’
- ‘fg_nets’
- ‘fgcnn_cin_nets’
- ‘fgcnn_fm_nets’
- ‘fgcnn_ipnn_nets’
- ‘fgcnn_dnn_nets’
- ‘fibi_nets’
- ‘fibi_dnn_nets’
预设模型: (在包 deeptables.models.deepnets 中)
- DeepFM
- xDeepFM
- DCN
- PNN
- WideDeep
- AutoInt
- AFM
- FGCNN
- FibiNet
自定义函数:
def custom_net(embeddings, flatten_emb_layer, dense_layer, concat_emb_dense, config, model_desc):
out = layers.Dense(10)(flatten_emb_layer)
return out
示例:
from deeptables.models.deeptable import ModelConfig, DeepTable
from deeptables.models import deepnets
from tensorflow.keras import layers
#preset model
conf = ModelConfig(nets=deepnets.DeepFM)
#list of str(name of component)
conf = ModelConfig(nets=['linear','dnn_nets','cin_nets','cross_nets'])
#mixed preset model and names
conf = ModelConfig(nets=deepnets.WideDeep+['cin_nets'])
#mixed names and custom function
def custom_net(embeddings, flatten_emb_layer, dense_layer, concat_emb_dense, config, model_desc):
out = layers.Dense(10)(flatten_emb_layer)
return out
conf = ModelConfig(nets=['linear', custom_net])
分类列¶
字符串列表或‘auto’,可选,(默认='auto')
只有分类特征会被传递到嵌入层,而DT中的大多数组件都是专门为特征提取的嵌入输出设计的。合理选择分类特征对模型性能至关重要。
如果字符串列表,则解释为列名。
如果 'auto',自动获取分类列。默认情况下会选择 object、bool 和 category 列,并且 [auto_categorize] 将不再生效。
如果没有必要,我们强烈建议使用默认值 'auto'。
排除列¶
字符串列表, (默认=[])
指标¶
字符串列表或可调用对象,(默认=['accuracy'])
模型在训练和测试期间要评估的指标列表。通常你会使用metrics=['accuracy']或metrics=['AUC']。每个指标应该是tf.keras.metrics中的内置评估指标或像r2(y_true, y_pred):...这样的可调用对象。
另请参阅: https://tensorflow.google.cn/versions/r2.0/api_docs/python/tf/keras/metrics
cat_exponent¶
浮点数, (默认=0.5), 介于0和1之间
仅在 auto_categrization = True 时可用。
具有(number of unique values < number of samples ** cat_exponent)的列将被视为分类特征。
cat_remain_numeric¶
布尔值, (默认=True)
仅在 auto_categrization = True 时可用。
连续特征转换为分类特征后是否保留数值特征。
True:False:
固定嵌入维度¶
布尔值, (默认=True)
所有分类特征的嵌入输出是否使用相同的‘output_dim’。需要注意的是,某些组件要求嵌入的output_dim必须相同,包括FM、AFM、CIN、MultiheadAttention、SENET、InnerProduct等。
如果 False 并且 embedding_output_dim=0,那么嵌入的 output_dim 将使用以下公式计算:
min(4 * int(pow(voc_size, 0.25)), 20)
#voc_size is the number of unique values of each feature.
embeddings_output_dim¶
整数, (默认=4)
output_use_bias¶
布尔值, (默认=True)
损失¶
str(目标函数名称) 或 目标函数 或 tf.losses.Loss 实例 或 'auto', (默认='auto')
参见 tf.losses。
- ‘auto’: 根据任务类型自动选择目标函数。
home_dir¶
字符串, (默认=None)
用于保存模型相关文件的主目录。每次运行fit(...)或fit_cross_validation(...)时,都会在此目录中创建一个带有时间戳的子目录。
监控指标¶
字符串, (默认=None)
earlystopping_patience¶
整数, (默认=1)
distribute_strategy:¶
tensorflow.python.distribute.distribute_lib.Strategy, (默认=None)
dnn_params¶
字典 仅在‘dnn_nets’或使用‘dnn’的组件(如‘pnn_nets’、‘dcn_nets’)包含在[nets]中时可用。
{
'hidden_units': ((128, 0, False), (64, 0, False)),
'dnn_activation': 'relu'}
)
autoint_params¶
字典 仅在 [nets] 中包含 'autoint_nets' 时可用。
{
'num_attention': 3,
'num_heads': 1,
'dropout_rate': 0,
'use_residual': True
}
fgcnn参数¶
字典 仅在[nets]中包含'fgcnn_nets'或使用'fgcnn'的组件时可用。
{
'fg_filters': (14, 16),
'fg_widths': (7, 7),
'fg_pool_widths': (2, 2),
'fg_new_feat_filters': (2, 2),
}
fibinet_params¶
字典 仅在[nets]中包含'fibi_nets'时可用。
{
'senet_pooling_op': 'mean',
'senet_reduction_ratio': 3,
'bilinear_type': 'field_interaction',
}
cin_params¶
字典 仅在[nets]中包含'cin_nets'时可用。
{
'cross_layer_size': (128, 128),
'activation': 'relu',
'use_residual': False,
'use_bias': False,
'direct': False,
'reduce_D': False,
}