You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义EM算法参数以实现12小时制时间的AM/PM分类任务

问题场景下的EM参数定义与实现逻辑

1. 核心定义

  • 隐变量:每个样本i对应的隐变量z_i ∈ {0, 1},z_i=0代表AM,z_i=1代表PM,是待推断的未知属性
  • 观测变量:每个样本的两个观测项,分别是时间表述e_i(如morning、night,共K种离散取值)、12小时制小时数h_i ∈ {1,2,...,12}
  • 数据集:Y = {<e_i, h_i>}_{i=1,...,N},N为样本总数

2. 待估参数定义

你可以根据数据量选择两种参数配置方案,优先推荐数据量足够时的带时间表述约束版本:

方案A:带时间表述约束(更贴合业务逻辑)

  • 先验参数:对每种时间表述e,定义π_e = P(z=1 | e),代表观测到时间表述e时,样本为PM的先验概率,约束为0 ≤ π_e ≤ 1
  • 观测分布参数:对每种时间表述e、隐变量取值z,定义θ_{e,z,h} = P(h | e, z),代表已知时间表述为e、时段为z时,观测到小时h的概率,约束为对任意e、z,有∑_{h=1}^{12} θ_{e,z,h} = 1

方案B:简化版(小数据量适用)

如果不同时间表述的小时分布差异不大,可以简化参数减少过拟合风险:

  • 先验参数:同方案A的π_e
  • 观测分布参数:全局共享时段分布,定义θ_{z,h} = P(h | z),代表时段为z时观测到小时h的概率,约束为对任意z,∑_{h=1}^{12} θ_{z,h} = 1

3. EM迭代逻辑(以简化版方案B为例)

E步(期望步)

对每个样本i,计算当前参数下隐变量的后验概率:

γ_i = P(z_i=1 | e_i, h_i) = (π_{e_i} * θ_{1,h_i}) / [π_{e_i} * θ_{1,h_i} + (1-π_{e_i}) * θ_{0,h_i}]

γ_i就是当前迭代下,样本i属于PM的概率。

M步(最大化步)

用E步得到的后验概率更新所有参数:

  • 先验参数更新:对每种时间表述e,统计所有e_i = e的样本
    π_e = (∑_{i: e_i=e} γ_i) / (∑_{i: e_i=e} 1)
    
    即该类时间表述下所有样本的PM后验概率的均值。
  • 观测分布参数更新:对每个时段z、小时h
    θ_{z,h} = (∑_{i: h_i=h} (z=1 ? γ_i : 1-γ_i)) / (∑_{i=1}^N (z=1 ? γ_i : 1-γ_i))
    
    即对应时段下,小时h的后验权重占该时段总权重的比例。

4. 落地注意事项

  • 初始化可以基于常识设置,比如π_morning初始设为0.1,π_night初始设为0.9,避免局部最优;也可以随机初始化多次取最优收敛结果
  • 迭代终止条件可以设为参数更新量小于1e-6,或者达到预设的最大迭代次数(如100次)
  • 最终分类时,γ_i > 0.5即可判定为PM,否则为AM,γ_i本身也可以作为分类置信度使用

内容的提问来源于stack exchange,提问作者Vered

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:27:02