示意图:年龄、运动、饮食、生活方式四张特征卡片指向中央的个人营养画像卡片
图:四类个人信息按变化速度分层,分别转成静态、滚动和事件特征后进入推荐模型

先按变化速度把信息分层

个性化营养的输入看似一张整齐的表,实际由四种性质迥异的信息拼成:年龄几乎不动,运动以周为单位起伏,饮食结构要积累两三周才显出轮廓,睡眠和进餐时间天天在变。纵横国际整理这些输入时,先按“变化多快、记录多准”分层,再决定每一层以什么形式进入模型。下面借一位设定的用户说明:假设她34岁,每周跑步3次,朝九晚六上班,工作日晚饭常拖到九点以后。

维度 进入模型的形式设定的特征示例 主要风险
年龄 静态特征:年龄段加连续值 34岁,成年阶段 把年龄当成结论
运动 滚动特征加事件特征 近28天周均次数、强度分布、跑后2小时是否进餐 设备误差,只看总量
饮食 滚动分布加偏好向量 近14天蛋白质三餐分配、蔬果餐次占比、禁忌标记 自报低报,份量估错
生活方式 周期特征加事件特征 工作日标记、晚餐距入睡小时数、昨晚睡眠是否偏短 单夜数据被过度解读

年龄:给需求划出区间,而不是给出结论

年龄最常见的处理是当成一条直线,岁数每大一岁,某个目标就按固定斜率变化。营养需求其实分阶段,边界又很模糊,所以更稳妥的做法是同时提供年龄段标签和连续年龄值,让模型在段内看渐变,在段间允许跳变。

年龄几乎没有噪声,适合做先验,决定推荐的起点范围,再由行为数据把起点往两边挪动。让年龄拥有最终决定权,等于假设同龄人过着同一种生活,这正是静态画像解释不了同龄人差异的根源。

运动:频率、强度、类型要拆开

“每周跑步3次”若只记成一个数字,模型分不出是30分钟的轻松慢跑,还是60分钟含间歇的训练。拆开以后,频率取近28天的滚动均值,强度取心率区间或自感用力程度的分布,类型取类别标签:频率影响长期能量需求,强度影响单次训练前后的补给,类型影响蛋白质与碳水的分配倾向。

跑步结束后两小时内有没有进餐,无法用均值表达,要作为带时间戳的事件单独保存。运动数据若来自可穿戴设备,还得接受误差:2026年《Frontiers in Digital Health》一篇关于测量误差的论文指出,可穿戴设备存在传感器漂移、校准衰减,不同品牌之间也不可比。运动特征宁可粗一点、稳一点,详见穿戴设备进入营养系统以后能回答什么

饮食:结构、偏好和禁忌是三种不同的东西

结构回答“她实际吃了什么”,用近两周的分布描述。偏好回答“她愿意吃什么”,决定推荐能不能被接受。禁忌与过敏是硬约束,不该参与打分,而应在排序之前直接过滤候选食品。把禁忌写成很低的偏好权重是危险的,其他因素足够强时,模型仍可能把它推出来。

结构特征还要面对自报数据的系统性偏差。上述论文同时指出,验证研究显示高BMI人群的能量和蛋白摄入低报可达20%–30%。饮食特征的可信度应当作为独立字段进入模型:记了份量和配料的一餐,与只写“外卖一份”的一餐,权重不该相同。

生活方式:睡眠和进餐时间更像事件,而不是均值

睡眠与进餐时间变化最快。这位上班族工作日晚饭多在九点以后,周末在七点左右,全周平均得到一个“八点二十的晚餐”,而这个时刻在她的生活里根本不存在。更合适的做法是保留周期特征,再叠加“昨晚睡眠明显偏短”这样的事件标记,让模型对次日的能量分配做小幅调整,而不是推翻整套方案。

特征进入推荐前的处理链
原始记录清洗与时间对齐静态、滚动、事件特征构造硬约束过滤排序打分附带理由输出

权重会移动,推荐要交代理由

纵横国际不给四类特征设固定权重,权重会随场景移动。假设这位用户报名了一场10公里比赛,备赛的那个月,运动特征的权重应当上升;出差一周、作息被打乱时,饮食与生活方式记录的可信度下降,模型应更依赖长期均值。权重固定的系统,在用户状态改变时会给出前后矛盾的建议。

与之配套的是理由输出。给她推荐早餐时,系统可以写明“近28天早餐蛋白质偏低,明天又有一次跑步安排”,用户能立刻核对哪条依据已经过时,比如跑步临时取消了。理由是错误输入被发现、被纠正的入口。

要点:进入模型的不是“运动”“饮食”这些名词,而是各自带着时间尺度和可信度的特征。给每个特征标注更新频率与可信度,往往比多加十个特征更能改善推荐质量。

冷启动时怎么办

新用户只有年龄和一句目标时,没有滚动特征可用,只能给较宽的推荐区间,并明确写出“依据不足”。随着记录积累,区间逐步收窄,长期结构才会显现,这个过程在一天吃得很健康为什么不能说明长期饮食结构里有细讲。纵横国际的设计思路是让区间宽度本身成为可见输出,用户在个性化营养栏目里看到的,应是“目前依据有限”这样的诚实提示,而不是精确到克的数字。