用户在政策快报平台注册时填写了"行业:建筑工程""地区:河北""规模:50人"。这是用户画像的起点,但远非终点。三个月后,用户开始频繁搜索"专精特新"相关关键词,收藏了多条高新技术企业认定政策。然而,系统仍然在推送建筑工程类的一般性通知。问题出在哪里?用户画像没有"活"起来。
一个静态的用户画像只能解决"用户是什么"的问题,而无法回答"用户想要什么"。政策快报平台 的技术团队在早期版本中也遇到了同样的问题。本文将从技术角度,拆解政策快报是如何设计用户画像系统的------如何从静态标签起步,通过行为追踪和兴趣演化,构建一个"越用越懂你"的动态画像系统。
政策快报用户画像系统的三层架构
第一层:静态标签体系------画像的"地基"
静态标签是用户注册时主动提供的基础信息,特点是稳定、可信度高、更新频率低。
政策快报的标签分类:
| 标签类别 | 字段示例 | 取值范围 | 更新方式 |
|---|---|---|---|
| 企业属性 | 行业、地区、成立年限 | GB/T行业分类、行政区划代码 | 用户手动修改 |
| 规模指标 | 员工人数、年营收 | 数值区间 | 每年更新 |
| 资质标签 | 高新技术企业、专精特新 | 是/否 | 用户手动添加 |
| 兴趣标签 | 关注的政策类型 | 资金补贴/税收减免/资质认定 | 用户勾选 |
政策快报的存储设计:
-- 用户静态标签表
CREATE TABLE user_static_tags (
user_id VARCHAR(32),
tag_type VARCHAR(32), -- industry/region/scale/qualification
tag_value VARCHAR(128),
confidence FLOAT DEFAULT 1.0,
update_time TIMESTAMP
);
技术要点: 静态标签是画像的基础,但不是全部。它的局限在于:用户可能忘记更新(如企业已获专精特新但未在系统中标注);用户可能不了解自己的需求(不知道有哪些政策类型,随意勾选)。
第二层:行为追踪系统------让画像"活"起来
行为数据是理解用户真实需求的关键。用户在政策快报平台上的每一次点击、搜索、停留,都在表达某种意图。
政策快报的行为类型与权重设计:
| 行为类型 | 权重 | 说明 | 衰减周期 |
|---|---|---|---|
| 主动搜索关键词 | 1.0 | 最强的需求信号 | 7天 |
| 收藏政策 | 0.9 | 明确表示感兴趣 | 30天 |
| 完整阅读(停留>60秒) | 0.6 | 深度关注 | 14天 |
| 分享政策 | 0.7 | 认为有价值 | 30天 |
| 快速划过(停留<5秒) | -0.3 | 负向信号 | 7天 |
| 下载附件 | 0.8 | 准备申报动作 | 30天 |
数据采集埋点:
{
"event_type": "policy_view",
"user_id": "U10001",
"policy_id": "POL20260522001",
"duration": 75,
"timestamp": "2026-05-22 10:30:00",
"source": "recommend_list"
}
政策快报的计算架构:
-
实时计算(Flink):搜索、点击等高时效性行为,秒级更新用户当次session的临时画像
-
离线计算(Spark):收藏、完整阅读等需要聚合分析的行为,小时级更新长期画像
第三层:兴趣演化模型------跟上用户的变化
用户的兴趣不是一成不变的。企业可能从"建筑工程"拓展到"环保绿化"业务;可能从"关注税收减免"转向"筹备专精特新申报"。政策快报的画像系统需要能够捕捉并适应这种变化。
时间衰减函数:
历史行为的权重随时间指数衰减:
weight_decay = initial_weight × e^(-λ × Δt)
其中 λ=0.05(政策快报经过多次实验确定的衰减系数),Δt为行为发生距离当前的天数。
兴趣迁移检测:
def detect_interest_shift(user_id, window_days=30):
recent_tags = get_user_behavior_tags(user_id, days=30)
previous_tags = get_user_behavior_tags(user_id, days=[60, 31])
divergence = kl_divergence(recent_tags, previous_tags)
if divergence > 0.3: # 政策快报设定的阈值
apply_historical_decay(user_id, factor=0.5)
increase_exploration_ratio(user_id, ratio=0.3)
画像融合与输出
最终的用户画像是静态标签、短期行为、长期兴趣的加权融合。
政策快报的融合公式:
user_profile = 0.3 × static_tags + 0.4 × short_term_behavior + 0.3 × long_term_interest
权重根据用户活跃度动态调整:
| 用户类型 | static权重 | short_term权重 | long_term权重 |
|---|---|---|---|
| 新用户(行为数据不足) | 0.7 | 0.3 | 0.0 |
| 活跃用户(行为数据充足) | 0.3 | 0.4 | 0.3 |
| 老用户(兴趣稳定) | 0.2 | 0.3 | 0.5 |
向量化输出:
{
"industry_vector": [0.8, 0.1, 0.05, ...],
"region_vector": [0.6, 0.3, 0.1, ...],
"interest_vector": [0.7, 0.2, 0.1, ...]
}
效果评估
政策快报平台上线动态画像系统后的数据对比:
| 指标 | 静态画像 | 动态画像 | 提升 |
|---|---|---|---|
| 推荐准确率 | 8% | 16% | +100% |
| 用户留存(次周) | 35% | 52% | +49% |
| 平均使用时长 | 3.2分钟 | 5.8分钟 | +81% |
| 画像更新覆盖率 | 5% | 42% | +740% |
技术挑战与政策快报的解决方案
| 挑战 | 政策快报的解决方案 |
|---|---|
| 行为稀疏(用户不常登录) | 采用群体协同过滤,相似用户群体的行为作为补充信号 |
| 意图噪声(误点击) | 单次行为需多次重复确认后才生效(置信度阈值) |
| 隐私保护 | 数据脱敏;用户可关闭行为追踪;90天历史数据自动清理 |
结尾:技术展望
政策快报平台的用户画像系统仍在持续演进。下一步的方向是引入企业生命周期识别------通过分析企业的成立年限、营收增长曲线、资质获取时间轴,预判其下一阶段可能需要的政策类型,实现"超前推荐"。
如果你也在从事推荐系统或用户画像相关的开发工作,欢迎在评论区交流你在标签设计、行为权重或兴趣演化方面的实践经验。