ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从数据挖掘到标签体系:用户画像全链路实战指南

从数据挖掘到标签体系:用户画像全链路实战指南 做了这么多年用户画像相关的项目我最大的感受是很多人把用户画像做成了“高级报表”——堆了一堆维度和指标业务方打开看两眼就再也不用了。真正能落地、能驱动业务的画像系统核心不是“画得有多全”而是能不能从数据里挖出可解释、可决策的标签并搭出一套可持续维护的标签体系。这篇文章就把我在大数据挖掘和标签体系构建上的完整思路、踩坑经验包括从原始数据到标签上线的全链路一次性讲清楚。适合正在做画像系统、数据中台或者想从0到1搭建标签平台的数据产品经理、数据分析师和数据开发参考。1. 为什么画像总被做成“高级报表”先想清楚三件事我见过不少团队启动用户画像项目时特别兴奋觉得终于能把用户“看透”了。结果两三个月后交付的东西打开一看用户基本属性表、订单金额分布、活跃时段统计……这些内容BI报表早就有了只是套了个“画像”的壳。业务方的反馈也很直接“我关心的是下一步该对谁做什么不是再看一遍统计数字。”1.1 画像的本质是“解释人”不是“描述订单”常规报表回答的是“发生了什么”比如上个月消费超过5000元的用户有多少画像要回答的是“这群人是谁、为什么会这样、接下来会怎样”。同样一批消费超过5000元的用户报表告诉你他们有8000人画像告诉你这8000人里有65%集中在25到35岁、有母婴购买行为、对囤货装和大包装有明显偏好其中40%最近30天没有打开过APP正在流失边缘。这就是“描述订单”和“解释人”的差别。前者是把事实列出来后者是给用户做分层归类提炼出可复用的判断依据。所以我一直跟团队强调一句话画像的产出物不是数字是标签。标签才是业务方能直接拿走的“半成品”。1.2 画像和业务策略之间还隔着一道“场景化”工序就算你有了“高消费潜力”“价格敏感”“母婴人群”这些标签业务方还是不知道怎么用。他们需要的是“针对价格敏感型母婴用户在每个月18号大促前推送大包装纸尿裤券”。这个转化过程叫策略编排是画像下游的事。但这不代表画像不用管场景。恰恰相反做标签设计时就必须想清楚标签将来会在什么场景里被消费是做人群圈选还是做推荐召回还是做风控校验。不同的消费方式对标签的计算逻辑、更新频率、甚至存储方式的要求都不一样。人群圈选要求标签可以灵活组合查询推荐召回要求标签能快速读取风控场景则要求标签有足够高的准确率而不是覆盖率。这些约束必须在标签定义阶段就定下来。1.3 动手前必须确认的三个业务问题我每次启动画像项目第一步不碰数据先拉着业务方开一次会确认三件事画像给谁用是给运营做人­群圈选还是给产品做个性化推荐还是给客服做用户识别要解决什么核心问题提升复购、降低流失、提高转化、还是优化客单价上线后谁来维护画像不是一次性交付标签口径会变、业务场景会变必须有明确的owner。这三个问题想不清楚画像项目大概率烂尾。我见过一个项目业务方说“我全都要”结果做了300多个标签最后真正被使用的不到20个。不是标签做得不好是需求根本没收敛。先聚焦最核心的两三个业务目标把链路跑通再逐步扩展这是画像系统能活下去的关键。2. 数据挖掘在画像里怎么用从原始数据到特征工程很多讲画像的文章动不动就是“用机器学习构建用户画像”听起来高大上实际项目里机器学习只占一小部分。真正撑起画像系统的大头是数据清洗、特征量化和规则提炼。先把这些基本功做好再考虑上不上模型的问题。2.1 基础属性怎么挖从原始数据到高质量维度用户画像的第一层通常是人口属性性别、年龄、地域、职业、收入水平。问题在于你手上往往没有这些字段的准确值只有一堆线索。以性别为例最理想的情况是用户在注册或实名认证时主动填写过但很多产品并没有强校验。没有的时候怎么办我常用的方法是从行为数据里推断内容型产品可以看内容偏好比如美妆内容浏览占比、游戏内容浏览占比电商产品可以看商品类目偏好一个反复浏览母婴用品、连衣裙、护肤品的账号是女性的概率就很高。这类推断模型不复杂用逻辑回归就能解决关键是特征要选得准。年龄推断也是类似思路。一个刚注册的用户不会告诉你他32岁但可以从他浏览的商品类目、内容频道、消费客单价来推断。这里有个细节不要只输出一个年龄预测值最好输出年龄段的概率分布“25到30岁概率0.631到35岁概率0.3”下游在圈选人群时能根据这个概率做更灵活的阈值控制。地域属性相对简单但也有一些坑。很多用户填的收货地址和常住地并不一致我一般会同时保留“收货地址地域”和“IP归属地”两个字段用交易频次判断常住地。比如一个用户平时收货地址在杭州但春节前后两周IP归属地在某个县城这时候不能简单地把地域标签改成县城否则节后他的地域标签就是错的。正确的做法是分层刷新月级别刷新常住地日级别保留IP归属地的实时变化避免一次性覆盖。2.2 行为量化RFM模型不是算出来就完事的RFMRecency最近一次消费间隔、Frequency消费频率、Monetary消费金额是做消费行为画像最经典的框架。但直接照搬教科书写法很容易翻车。经典做法是取三个统计量然后按分位数切分成1到5分。问题在于不同品类、不同客单价的用户分布差别极大。比如同样是“最近一次消费间隔”生鲜电商30天没下单和珠宝电商30天没下单含义完全不同。如果把全量用户放在一起算分位数结果就是生鲜用户分普遍偏低珠宝用户分普遍偏高标签完全失真。我的改造方案是分层计算。先按一级品类或业务线给用户分组在每个组内分别求R、F、M的分位数。这样就算出来的RFM才真正反映的是“同类用户里的相对水平”。加上时间窗口也要跟着业务节奏走比如做日百快消品用90天窗口做大家电就得拉长到365天。伪代码大概是这样的-- 分层RFM计算示意伪SQL -- 按一级类目分组分别计算最近一次消费间隔、消费次数、消费金额 SELECT user_id, category_group, DATE_DIFF(day, MAX(order_time), CURRENT_DATE) AS r_value, COUNT(DISTINCT order_id) AS f_value, SUM(order_amount) AS m_value FROM orders WHERE order_time DATE_SUB(CURRENT_DATE, 365) GROUP BY user_id, category_group拿到R、F、M的分值之后再组合成用户类型。常用的逻辑是R高且F高且M高是重要价值用户R低但F高且M高是重要保持用户快要流失了R高但F低且M低是潜力用户。这个组合规则不是定死的要结合业务场景灵活改。2.3 预测型标签什么时候值得上机器学习不是所有标签都需要机器学习大部分标签靠规则就够了。但有两种情况规则搞不定必须上模型第一种是行为意图预测比如流失预测、购买意愿预测。这类标签的核心特征是“未来”过去的行为模式无法直接给出答案需要用历史数据做有监督学习。第二种是相似人群扩展look-alike已经有了一批种子用户需要找出更多相似的人。以流失预测为例我一般这么操作定义正样本过去90天有活跃行为、但未来30天没有任何行为的用户标记为流失。定义负样本持续活跃的用户。选择特征最近访问间隔、近7天/30天登录次数、近30天订单数、近30天浏览深度、优惠券使用率、客单价变化率都是比较有效的信息。模型选择项目实际用下来XGBoost和LightGBM在大多数场景下优于深度学习训练成本低、可解释性强适合业务快速迭代。逻辑回归也不是不能选但在特征非线性关系较强时效果通常弱一些。效果评估除了看AUC更关键的是看精确率和召回率的平衡点。流失预测的场景里我通常更看重召回率宁可多圈一些人也不能漏掉真正要流失的高价值用户但圈选后要对不同概率段的用户分开运营。这里有一个经常被忽略的细节训练样本的时间窗口必须严格切分不能用同一时间段既做特征又做标签否则会出现严重的数据泄露离线指标很漂亮上线后效果崩掉。特征窗口和标签窗口之间必须留一个明确的时间间隔。2.4 特征工程时间窗口和归一化的那些细节特征工程决定了模型的上限也决定了规则标签的准确性。两个最容易忽略的坑是时间窗口和归一化。时间窗口不是越长越好。访问行为特征用近7天和近30天就够了消费习惯特征可能需要90天甚至一年兴趣偏好特征要看内容产品的更新节奏。我一般的做法是多个窗口并行比如同时计算7天、30天、90天三个窗口的订单金额让模型自己决定哪一个更有效。窗口之间是有交叉的不用担心信息冗余树模型对特征筛选并不敏感但要注意特征的时效性业务变化快的产品超过180天的行为特征往往已经没有太大区分度了。归一化的问题主要出在距离类模型上。K-Means聚类的例子比较典型——消费金额量级是几千块访问次数量级是个位数如果不做归一化聚类结果基本被消费金额完全主导。做归一化的时候要注意不能用全量数据的均值和标准差要用训练集的统计量否则会引入未来信息。线上做实时预测时也需要复用训练时的归一化参数不能每次重新计算。3. 标签体系构建分层、命名、口径一个都不能少标签体系是整个画像系统的骨架。骨架没搭好标签再多也是垃圾。我看到的失败案例有一个共同点标签定义随意、分类混乱、口径不一致最后业务方根本不知道哪个标签该信。3.1 四层标签结构事实、规则、模型、预测我把标签划分成四个层次每个层次的计算逻辑和用途都不一样标签类型来源典型例子计算方式适用场景事实标签原始数据直接提取性别、注册天数、会员等级不需要加工人群筛选、用户分群规则标签按业务规则加工高活跃用户、流失预警、高频客固定规则SQL日常运营圈选模型标签机器学习模型产出流失概率、购买意愿、兴趣偏好分模型预测预测性决策策略标签多标签组合业务策略形成重点召回用户、沉默高价值用户标签组策略规则精准运营、自动策略这里面我想重点说一下事实标签。很多团队给事实标签贴了太多价值实际上事实标签“准确率高但洞察价值低”它只是描述性的不能告诉你用户接下来会怎样。规则标签和模型标签才是画像系统里真正具备决策价值的资产。所以在标签设计评审时我会追问每一个标签的用途如果只是“看个事实”那报表就能解决没必要进画像系统。3.2 标签的字段设计和命名规范标签体系最容易乱的地方就是命名。不同的开发同学有不同的习惯有的叫is_active有的叫active_user_flag时间一长没人知道谁是谁。我这里分享一套比较通用的字段设计模板字段说明示例tag_id标签唯一编码P-GEN-M-001tag_name标签名称性别-男tag_category标签分类四级人口属性-基本信息-性别-男data_type数据类型string/int/double/boolcompute_type计算方式fact/rule/modelcomputation_logic计算逻辑说明注册时用户主动填写人工审核data_source数据来源user_profile表update_freq更新频率实时/小时/T1/周/月owner负责人xx团队/xx人status生效状态online/offlinecreate_time创建时间2024-06-01version标签版本号v1.2命名规范建议用四级分类结构一级按人口属性、设备属性、消费行为、兴趣偏好、业务场景等大域划分二级按细分维度三级按具体特征四级按具体值。这样编码的好处是看到标签ID就能知道它属于哪个领域、什么含义避免歧义。我见过比较坑的情况是标签名称用缩写比如“HVU”代表“高价值用户”“PUR”代表“价格敏感用户”——过了一个月业务方拿着标签列表来问“这个HVU是什么意思”开发说“你查文档”文档压根没人写。与其后面补文档不如一开始就在tag_name上用中文全称编码只用于系统内部关联。3.3 计算口径的统一一个“活跃用户”引发的分歧口径不一致是标签体系里最消耗信任的问题。一个“活跃用户”标签运营团队说“近7天有登录行为”产品团队说“近30天有购买行为”两个团队对同一批用户打上了不同的标签值最后对数据就对不上。这个问题的根源是标签定义没有人拍板、没有人统一管理。我的建议是每类标签都建一个“口径字典”标签名称计算口径算法逻辑参数适用业务场景不适用场景口径变更记录变更人、变更时间、变更原因建立口径字典后还有一个重要环节口径变更评审。不要今天开发同学觉得“这个参数不太合理”就顺手改了必须走评审流程通知到所有下游消费方。因为标签口径变了历史数据就不可比了所有基于这个标签做的策略都可能受影响。我在一个项目里就是因为“活跃用户”的定义从7天改成14天导致一个正在跑的触达策略圈选出来的用户范围直接翻倍预算差点超了。从那以后口径变更的必要性评估和通知机制就成了硬性要求。3.4 标签冲突与重叠怎么处理标签体系的另一个问题是冲突。同一个用户既被打了“高消费能力”标签又被打了“价格敏感”标签看起来自相矛盾。业务方就会问“到底该信哪个”其实这不一定真矛盾关键看标签的计算逻辑。消费能力标签看的是客单价、消费总额价格敏感标签看的是优惠券使用率、比价行为。一个用户可能总消费高但是在买大件时特别精打细算两个标签同时为真完全可以解释。处理方式有两个层面。第一个层面是标签本身要做好定义切分比如“价格敏感”改成“促销敏感型消费行为”避免和“消费能力”在语义上打架。第二个层面是在应用层做“标签组”把常用于策略组合的标签打包比如“高消费能力促销敏感”就是“大促重点攻坚人群”不用业务方自己去拼策略人员可以更快速地完成人群圈选。标签冲突不是bug是更高维度的用户分层信息关键是解释清楚它为什么会同时成立。4. 标签上线后的工程化难题更新、质量、冷启动标签开发出来只是第一步上线后的工程化管理才是决定画像系统能否长期稳定运行的关键。这一章我把标签更新策略、质量评估和冷启动问题分开讲。4.1 更新策略按标签时效性分层调度不同场景对标签时效性的要求差异极大统一用一个频率刷新是不行的。我一般把标签按时效性分为四层时效级别更新频率典型标签技术实现实时标签秒级/毫秒级用户当前登录状态、当前位置Flink/ClickHouse近实时标签分钟级/小时级实时兴趣、近1小时行为Flink Redis离线标签T1消费偏好、活跃度、RFM类Spark/Hive 批处理低频标签周/月生命周期阶段、长期价值分周期性批任务这里面最大的坑在于大家都想追求实时但实时标签的准确率和稳定性往往不如离线标签。比如“消费偏好”这个标签如果按最近1小时的行为实时刷新用户可能只是偶然点了两个钓鱼工具商品就会被打上“钓鱼爱好者”的标签。所以我的经验是实时标签只放那些对时效性要求极高、且行为意图明确的场景比如“正在浏览某商品”这种可以用强信号的行为弱信号的行为偏好标签老老实实走离线T1。你不要为了炫技把实时化做成一锅粥。数据开发的调度上要注意依赖管理。离线标签之间经常有上下游依赖关系比如“高价值用户”依赖RFM标签结果RFM依赖订单汇总表。如果订单汇总表的任务延迟了RFM也要跟着延迟不能让它用前一天的老数据去覆盖今天的正确结果。我当时用调度平台配置了“失败自动跳过”的机制结果某个上游表连续三天没更新下游的标签任务全在跑空数据最后业务方圈选出了一个完全错误的人群。至此之后“上游数据质量校验通过才允许下游任务启动”成了铁律。4.2 质量评估覆盖率、准确率、稳定性三把尺标签上线后必须有一个持续的质量监控机制。我总结了三把尺子覆盖率、准确率、稳定性。覆盖率即目标人群中有多少用户被打上了这个标签。比如“家庭住址”标签预期覆盖95%以上的注册用户如果某个批次只有60%说明数据处理链路有断点。覆盖率不是越高越好标签使用评估时也要看“有效覆盖率”比如“高消费人群”标签覆盖20%的用户是合理的覆盖80%就不叫“高消费”了。准确率反映标签值与真实情况的一致程度。事实标签可以通过抽样人工回访验证模型标签则需要持续和用户实际行为做对比。比如流失预测标签可以每个月回头核对上个月预测“会流失”的用户里有多少人真的流失了。准确率不达标时首先检查输入数据的质量其次是模型是否需要重新训练。稳定性指标签值分布随时间的波动情况。一个“25到30岁”的性别比例标签如果某天突然从40%变成15%大概率不是用户结构变了而是底层数据有问题。我习惯每天监控核心标签的分布变化用PSI群体稳定性指数来看单日波动是否超过阈值一旦超过就触发告警让开发排查。这三把尺子不能只在项目验收时看一次必须做成日常监控报表每天自动运行。数据质量问题是每天都可能出现的不盯就会出大事。4.3 冷启动没有历史行为数据的新用户怎么办新用户没有历史行为数据导致画像系统对这部分人群几乎“失明”。这是所有画像系统都会遇到的冷启动问题。我常用的三个兜底方案第一是默认标签。给新用户打上“新用户-未知人群”标签让运营策略对这部分用户走通用拉新流程不做精细化区分。第二是浅层标签替代。新用户虽然没有消费和访问的历史但可能有注册来源信息、首次访问落地页、授权的地理位置。比如“来自某渠道的新用户”“从某活动页进入的用户”这些浅层标签虽然不能精准刻画偏好但可以指导第一轮触达策略。第三是试探性运营。给新用户推一波覆盖不同品类的内容或商品观察点击反馈用反馈结果逐步形成有效标签。这个过程相当于用低成本的试探来主动“制造”行为数据。冷启动本质上是给系统一段“学习期”不要指望第一天就做到老用户一样的精细度。4.4 标签生命周期别让它“只增不减”标签体系会随着业务需求不断膨胀但如果不做生命周期管理最终会变成一个谁也理不清的庞然大物。据我观察上线超过两年的画像系统至少有30%的标签已经不再被任何业务使用了但它们还在每天占用计算资源还在数据字典里增加噪音。我给标签体系加了一套生命周期状态机制草稿期、活跃期、沉默期、下线期。每个月跑一次标签使用情况统计连续三个月没有任何业务消费的标签标记为“沉默期”通知标签owner确认是否保留如果再过一个月仍然无人认领就进入“下线期”从线上标签库中移除。这个机制严格执行之后标签库的可用性和检索效率都提升了。标签下线时还要注意历史数据的保留问题。不要让下游任务在标签下线后立刻读不到数据最好保留一个读取缓冲期否则一些“隐藏消费者”任务比如月报里用到的标签会莫名其妙地报错。5. 我在实际项目中反复踩的坑写下来给你下面这些问题都是我在真实项目里踩过、也帮别人填过的坑。如果你正在做画像系统建议逐条对照检查。5.1 标签口径漂移没有版本管理标签的计算口径不是一成不变的业务方会提新需求开发同学会优化计算逻辑。但如果没有版本管理最怕的就是“口径已经改了下游不知道”。比如“高净收入人群”的口径从“月收入超过2万且负债率低于30%”改成“可支配月收入超过1.5万”圈选出来的人群可能完全不一样所有基于这个标签的运营策略都会被影响。我的解决方案是给标签加版本号标签字段里必须有当选版本信息。每次计算逻辑变更都生成一个新的版本记录并同步通知所有下游消费方确认影响。上线前还要做“新旧逻辑差异对比报告”量化变更影响了多少用户多少人从“高净收入人群”变成了普通人群避免上线后才发现问题。5.2 数据倾斜导致的人群分布偏差大数据挖掘里常见的“少数群体秒变大多数”问题在画像场景里也很突出。比如做RFM分位数切分时如果全量用户一起排序一线城市高客单价的用户可能占比不到5%而低消费频次的用户占了60%。做了全量分位数之后结果就是一线城市的用户全部被打成“高价值人群”反而把真正的差异化抹掉了。处理这个问题的方法是分析维度分层。我在做分位数时是按城市级别、用户生命周期阶段分别计算然后在不同的受众群体里独立切分。这样才能保证“在一线城市的同类用户里依然能区分出高中低价值”。5.3 把离线画像标签当成实时决策的唯一依据这是画像系统上线后很容易发生的场景推荐系统、客服系统直接读画像标签做实时判断。但离线画像的更新频率是T1标签里记录的是昨天的用户状态拿昨天的状态做今天的实时决策有时会出大问题。比如用户昨晚刚刚卸载APP但“活跃用户”标签还是今天的生效值推荐系统继续给他推消息体验就很差。我的原则是实时决策场景必须用实时特征离线标签只能作为兜底或辅助信号。如果一定要用标签也要给标签加“数据时点”字段让下游系统可以根据更新时间判断该标签是否可用。不要嫌麻烦这是能不能真正做好实时化项目的分水岭。5.4 个人信息保护与数据安全不是合规部门一家的事用户画像本质上是把分散的数据汇集到一个人身上这个过程天然涉及个人信息保护。我见过不少团队觉得“反正数据都在公司内部没问题的”。但个人信息保护相关法规出来后这个“没问题”可能是真有问题。从数据安全的角度我有几个基本做法。第一是脱敏手机号、身份证号等直接标识符画像系统里一律不存储明文。第二是权限控制能查画像标签的系统和人员必须最小化授权尤其是涉及用户敏感属性如健康状况、政治倾向、性取向的标签不是必要的业务场景就不允许生成和使用。第三是审计所有查询画像数据的行为必须留痕。特别提醒一下不要为了追求标签的完整性去收集和推断与业务无关的敏感信息。比如你做的是一个电商APP其实没有必要做“宗教信仰”这样一个标签。数据收集要遵循必要性和最小化原则这也是合规的基本要求。我在实际项目中还有一个体会画像系统一旦上线它本质上会成为公司数据资产的一部分也会成为公司业务决策的底层依赖之一。这个依赖意味着你不能把它当作一个“做完交付就结束”的项目而是要在组织上、流程上、数据治理上持续投入。标签口径的评审、数据质量的监控、版本的管理——这些琐碎的“手术刀”活儿才是画像系统能够持续产生价值的地方。如果你现在正准备启动画像项目我的建议很简单不要一上来就贪大求全做几百个标签先找业务方最痛的两个场景做五到十个真正能落地决策的标签把从数据接入、特征开发、标签计算、质量监控到业务应用的全链路跑通再去逐步扩展。画像系统的成败从来不取决于标签的数量而在于每一个标签能不能在正确的时间、为正确的决策提供正确的依据。
返回列表