代码逻辑分析:改进的 Wide & Deep 模型

代码逻辑分析:改进的 Wide & Deep 模型

1. 核心目标

这段代码构建了一个改进版的 Wide & Deep 模型(Google 提出的经典推荐系统模型):

  • Wide 部分:捕捉特征间的直接关系(如用户点击了某个商品)

  • Deep 部分:捕捉深层特征组合(如用户偏好+商品特征的复杂关联)

  • 创新点:增加了特征交叉层强化特征交互能力


2. 模型结构详解

(1) 输入层
wide_input = Input(shape=(wide_dim,), name='wide_input')  # 宽输入:原始特征(如用户ID/商品ID)
deep_input = Input(shape=(deep_dim,), name='deep_input')  # 深输入:嵌入特征(如用户偏好向量)
  • Wide 输入:低维特征(如用户行为统计)

  • Deep 输入:高维特征(如嵌入向量)

(2) 特征交叉层(创新点)
cross_layer = Dense(deep_dim, activation='relu')(wide_input)
cross_layer = Dense(deep_dim, activation='relu')(cross_layer)  # 二次特征交叉
  • 目的:自动学习 Wide 特征的组合关系(如“年轻用户+折扣商品”组合)

  • 相当于用全连接层实现特征交叉(类似 FM 的升级版)

(3) Deep 路径
deep_path = Dense(256, activation='relu')(deep_input)
deep_path = Dense(128, activation='relu')(deep_path)  # 经典MLP结构
  • 通过多层神经网络挖掘 深层特征模式

  • 类似人类大脑的抽象思考(例如从点击历史推断用户兴趣)

(4) 合并与输出
merged = concatenate([cross_layer, deep_path])  # 特征融合
output = Dense(1, activation='sigmoid')(merged)  # 二分类概率输出
  • 合并层:将记忆能力(Wide)与泛化能力(Deep)结合

  • Sigmoid 输出:预测用户行为概率(如点击率 CTR)


3. 模型编译配置
model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),  # 自适应学习率
    loss='binary_crossentropy',  # 二分类标准损失
    metrics=['accuracy', tf.keras.metrics.AUC(name='auc')]  # AUC评估排序能力
)
  • Adam 优化器:自动调整学习步长

  • AUC 指标:关键推荐指标(衡量正负样本区分能力)


4. 模型设计思想
组件类比解释推荐系统作用
Wide 部分人的短期记忆(记住具体事件)捕捉直接关联规则
Deep 部分人的长期经验(抽象认知)发现潜在兴趣模式
特征交叉层事件关联分析(分析规律)自动组合特征提升表达能力
AUC 指标考试排名(区分好/差学生)衡量推荐排序质量

新人学习要点

  1. 分治思想:复杂模型 = Wide + Deep + 交叉层(各司其职)

  2. 特征工程
    • Wide 特征:人工设计的特征组合

    • Deep 特征:神经网络自动学习

  3. 评估指标:AUC 比准确率更能反映推荐效果

  4. Keras 范式
    输入层 → 处理层 → 合并层 → 输出层 → 编译
    

💡 业务场景:当需要同时处理明确规则(如"iPhone用户常买AirPods")和隐性模式(如"科技爱好者偏好极简设计")时,此类模型特别有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值