回归模型¶
回归模型和CTR模型基本一致,只是采用的loss不一样。
如下图所示, 和CTR模型相比增加了: loss_type: L2_LOSS
1. 内置模型¶
model_config:{
model_class: "DeepFM"
feature_groups: {
group_name: "deep"
feature_names: "hour"
feature_names: "c1"
...
feature_names: "site_id_app_id"
wide_deep:DEEP
}
feature_groups: {
group_name: "wide"
feature_names: "hour"
feature_names: "c1"
...
feature_names: "c21"
wide_deep:WIDE
}
deepfm {
wide_output_dim: 16
dnn {
hidden_units: [128, 64, 32]
}
final_dnn {
hidden_units: [128, 64]
}
l2_regularization: 1e-5
}
embedding_regularization: 1e-7
loss_type: L2_LOSS
}
2. 组件化模型¶
model_config: {
model_name: 'DeepFM'
model_class: 'RankModel'
feature_groups: {
group_name: 'wide'
feature_names: 'user_id'
feature_names: 'movie_id'
feature_names: 'job_id'
feature_names: 'age'
feature_names: 'gender'
feature_names: 'year'
feature_names: 'genres'
wide_deep: WIDE
}
feature_groups: {
group_name: 'features'
feature_names: 'user_id'
feature_names: 'movie_id'
feature_names: 'job_id'
feature_names: 'age'
feature_names: 'gender'
feature_names: 'year'
feature_names: 'genres'
feature_names: 'title'
wide_deep: DEEP
}
backbone {
blocks {
name: 'wide_logit'
inputs {
feature_group_name: 'wide'
}
lambda {
expression: 'lambda x: tf.reduce_sum(x, axis=1, keepdims=True)'
}
}
blocks {
name: 'features'
inputs {
feature_group_name: 'features'
}
input_layer {
output_2d_tensor_and_feature_list: true
}
}
blocks {
name: 'fm'
inputs {
block_name: 'features'
input_fn: 'lambda x: x[1]'
}
keras_layer {
class_name: 'FM'
fm {
use_variant: true
}
}
}
blocks {
name: 'deep'
inputs {
block_name: 'features'
input_fn: 'lambda x: x[0]'
}
keras_layer {
class_name: 'MLP'
mlp {
hidden_units: [256, 128, 64]
use_final_bn: false
final_activation: 'linear'
}
}
}
concat_blocks: ['wide_logit', 'fm', 'deep']
top_mlp {
hidden_units: [128, 64]
}
}
model_params {
l2_regularization: 1e-5
wide_output_dim: 16
}
loss_type: L2_LOSS
embedding_regularization: 1e-4
}