尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

RFM模型实战指南:从SQL取数到Python用户分层

发布时间:2026/9/15 16:16:40

资讯中心
01
ARTICLE

RFM模型实战指南:从SQL取数到Python用户分层

RFM模型实战指南:从SQL取数到Python用户分层
RFM模型在电商零售分析里被提了很多年但真正把它跑通、跑出业务价值的人并没有想象中多。我见过不少团队卡在模型原理都懂、一上数据就懵的状态R值到底按天算还是按小时算F值要不要剔除退款单M值被大客户拉偏了怎么处理分层阈值是拍脑袋还是用分位数——这些细节没定清楚后面出的图再漂亮运营也不敢拿去做决策。这篇内容我打算用一套完整的电商零售数据分析项目为主线把RFM从口径定义、SQL取数、Python打分分层的完整实现到分层结果如何对应运营动作的过程全部拆开讲一遍。内容适合三类人看刚接触RFM想找个完整案例复现的数据分析师、正在做用户分层但总觉得结果不准的运营同学、以及想在有深度的分析项目上积累经验的数据方向学习者。1. RFM模型在电商零售分析里为什么能打1.1 三个维度背后的用户价值度量逻辑RFM不复杂就是看三个数最近一次消费时间Recency、消费频率Frequency、消费金额Monetary。但就这么简单的三个维度能长期在用户分析领域站稳脚跟根本原因在于它抓住了电商用户价值的三个本质侧面。先看R值。它衡量的是用户的温度。一个昨天刚下过单的用户和一个三个月没进店的用户即便消费金额一样接下来的行为预期也完全是两码事。R值本质上是一个当下性指标反映用户与店铺之间当前的连接强度。再看F值它衡量的是用户的习惯。一个月消费八次的人和半年消费一次的人对品牌的认知深度、对购物流程的熟悉程度、对价格波动的敏感度都不一样。高频用户哪怕单次金额低也是店铺流量和活跃度的基石。最后是M值它衡量的是用户的钱包份额。一个人在你店里花多少钱直接体现了他愿意把多少消费预算分配给你。单看任何一个维度都会有偏差——只看M值会被一次性大额客户误导只看F值会忽略高价值低频客户只看R值更是容易被营销活动带来的瞬时活跃干扰。RFM的厉害之处在于三维交叉把谁现在愿意买谁经常买谁买得多三个信号拼在一起比任何一个单一指标都更能逼近用户真实的商业价值。1.2 RFM与传统流量指标的差异做电商数据分析的人日常接触最多的指标是UV、转化率、客单价、GMV这些流量和销售指标。它们有一个共同特点描述的是店的视角——今天来了多少人多少人下单卖了多少钱。而RFM提供的是人的视角——这些成交到底是谁贡献的不同人的行为模式有什么差异。举个实际例子。某个月GMV涨了20%从店铺视角看是好事。但用RFM拆开看如果增长主要来自长期未购用户的一次集中爆发比如大促而下个月这批人大概率又沉默回去。反过来如果增长来自高频高价值用户群体的复购周期缩短那这个增长就有更强的可持续性。同样的GMV增速背后的用户结构健康度天差地别这就是RFM视角的价值。1.3 模型在电商场景里的适用边界RFM也不是万能的它有明显的适用范围。最适用的场景是复购性质明显、消费数据积累充分的电商业务——服装、美妆、食品、日用百货这类用户会反复购买的品类效果都很不错。但如果是低频高客单业务比如装修建材、婚纱摄影这类用户一辈子可能就消费一两次的行业F值几乎没有区分度RFM就明显水土不服。另外新品牌早期数据量太小用户样本不足以支撑分位数计算时硬套RFM也容易得出误导性结论。提示判断你的业务适不适合RFM先问自己一个问题——用户在没有外力干预的情况下有没有自然复购的可能如果答案是否定的RFM对你的价值就非常有限。2. R/F/M三个维度的计算口径最容易埋坑的地方很多人做RFM分析第一个反应就是先给用户打标签算分数结果往往是维度口径没定清楚后面怎么算都是错的。我在实际项目中见过太多这种情况。RFM的预处理工作核心就是三件事确定R的时间单位、定义F的统计范围、处理M的区间数据。2.1 R值的两种时间取法与统一起点R值定义是最近一次消费距离当前的时间间隔。多数分析会用天数作为单位比如距离上次下单已经过去了35天。但这里有一个不容易注意到的细节任何用户的最小R值都是0——刚下完单那一刻间隔就是0天。当天购买的用户R值会集中堆在0附近这个分布形态对后面分层有影响。另一个常见分叉是R值用距今X天还是最近消费日期来表示。两者信息等价但下游处理逻辑不同。用Python打分时会倾向于直接取last_purchase_date然后通过(reference_date - last_purchase_date).dt.days转成R天数用SQL取数时可以直接DATEDIFF(CURDATE(), last_purchase_date)拿到天数。我建议在中间表里两个字段都保留既能看日期排查异常又能用天数做计算。还有一个必须统一的问题参考日期对不齐。如果分析周期横跨某个大促节点比如双11前一周到双11后一周那么双11当天的购买行为会让大量用户的R值瞬间变0分层结果可能全偏。实操中如果你只是做常规月度分析参考日就取当前日期如果你做的是活动复盘分析建议以活动开始前的用户状态为准把R值算到活动节点的前一天把活动影响单独隔离出来看。2.2 F值统计窗口怎么定才算合理F值是统计周期内的消费次数。问题集中在统计周期怎么选。用一个月、一个季度还是一年结果差异非常大。对快消品电商来说用户一个月消费三到五次是常态用月度窗口能很好地区分活跃度梯度对数码3C类用户通常一年也就下单一两次月度窗口会让绝大多数用户F值偏0毫无区分度。一条通用经验是统计窗口至少覆盖该品类用户平均复购周期的2-3倍。比如你算出来全店用户的平均复购间隔是45天那么F值的统计窗口至少取90天到135天才能保证大多数活跃用户在这个窗口内有多次购买记录。F值还有一个争议点同一张订单里买了多件商品算一次还是算多次常规做法是按下单次数算而不是按商品件数算。原因是RFM模型里的F值意图是衡量消费行为发生的频次一个用户一天内下了3张订单和另一个用户一天内下了1张包含3件商品的订单购物决策的触发频率是不同的。不过如果你想用RFM做偏供应链侧的备货分析按件数统计也有它的道理。我的建议是模型层面按下单次数算如果想看件数信息单独加一列字段不要破坏RFM的原始定义。2.3 M值的陷阱到底是看单均金额还是累计金额M值这里是最多人翻车的。字面上M是消费金额但具体用累计金额、平均客单价还是单笔最高金额业务含义差了很远。累计金额高的人可能是买了很多次但每次都很便宜的羊毛党平均客单价高的人可能是半年一买、一买就买大件的理性消费者。模型实践中我最常用的是统计周期内的累计消费金额因为它能反映一段时期内用户为店铺贡献的总收入和财务口径能够对齐也方便后续算LTV延伸指标。但如果你发现自己业务里F值和M值的相关性极强比如高频用户几乎必然是累计金额高的人那就说明你的M值被F值绑架了两者的业务信息高度重叠。这时候可以考虑用平均客单价替代累计金额作为M值用平均客单价来衡量用户的质量等级频率维度单独由F值负责维度之间的独立性会更好。下面是一张我常用的口径设计参考表维度取数字段统一口径常见坑R值最近下单时间距离参考日期的天数取整参考日期不统一、大促导致R值突变F值下单次数窗口期内已支付订单数按订单号去重退款订单未剔除、统计窗口过短M值累计消费金额窗口期内已支付订单实付金额合计退款金额未扣除、维度与F值高度重合实践中最稳妥的做法是正式建模之前先把三个维度的描述性统计和相关性矩阵跑出来看一眼发现不合理的地方及时调整口径而不是直接闷头往下算。2.4 退款、补发、虚拟商品等边界订单的处理策略处理退款是一个非常现实的难题。订单状态纷繁复杂有已支付、已发货、已完成、售后中、已退款不同状态下到底算不算数我的经验是已退款订单要从F和M里同时剔除否则退款用户会被误判成高价值用户。已下单未支付的订单一律不算成交不计入RFM的任何维度。已完成但退款中的订单建议按未退款状态先计入在M值后处理环节单独打标总之要有一个明确的处理节点。虚拟商品充值、优惠券、会员购买是否需要纳入取决于业务导向。如果是做纯实物零售分析建议把纯虚拟商品订单剔除因为充值行为的逻辑跟购买实物完全不同混合在一起会污染F值分布。3. 分层逻辑与打分方式用数据找决策依据3.1 八类客户分层的经典映射逻辑RFM最经典的处理方式是把三个维度各自分成高低两组于是得到2×2×28类用户。这八类用户对应着不同的生命周期阶段和运营策略是RFM模型能够直接指导业务的价值所在。以我常做的服装电商项目为例先按R值把用户分成活跃与沉默再按F值分成高频与低频最后按M值分成高额与低额组合后的八类用户分别是高R高F高M核心价值用户店铺的头部资产高R高F低M高频低额用户活跃但消费力一般高R低F高M新客大额用户一般是大促期间涌入的高潜力用户高R低F低M新客小额用户刚完成首单的尝鲜者低R高F高M曾经的高价值高频用户正在流失中需要优先召回低R高F低M曾经活跃但近期不来了沉默用户低R低F高M单笔金额不低但很久不来的用户流失风险极高低R低F低M长期沉默的低价值用户基本处于流失状态传统RFM模型里还有一个重要挽留客户的概念即时间维度较久但金额较高的客户群体这类客户虽然近期没有消费但历史上贡献价值大值得投入成本去唤醒。在运营优先级上核心价值用户需要重点维护流失边缘的高价值用户需要集中资源召回而沉默的低价值用户可以降低触达频次、用低成本方式维持存在感。3.2 打分法 vs 分箱法什么时候用哪种实现上常见有两种路线简单分箱法和五分位打分法。简单分箱法是把每个维度按照中位数或业务经验阈值直接切成高低两组然后做组合映射。优点是快、简单、解释成本低缺点是比较粗用户离阈值一线之差就可能从高价值变成低价值分层结果不太稳定。五分位打分法是把每个维度按分位点一般是20%、40%、60%、80%切成五档从1分到5分打分再把三维得分组合算总分或分群。优点是粒度更细、能体现用户价值的梯度差异也方便后续做更精细的分群缺点是计算和解释都更复杂一些。我的建议是给管理层汇报或做粗粒度人群运营规划时用八分类就够了如果是上权益模型、促销策略、智能推送这类精细化运营场景最好用五分位打分法。两种方法不冲突可以在同一套数据上同时算一个用来讲战略一个用来定策略。3.3 评分阈值的选取中位数还是分位数很多教程直接说高于中位数就是高低于中位数就是低实际落地时这个逻辑是有很大问题的。消费者的金额分布通常长尾严重可能一个头部客户就抵几十个尾部客户。这种情况下中位数往往被大量低频小额的沉默用户拉得很低用中位数做阈值会把大量还算有点价值的用户错划进高价值组。更合适的做法是参考P60到P75的分位数作为高低分界。比如计算R值时可以用P60作为活跃和沉默的分界线——60%的用户都在这个天数内下过单那超过这个天数的用户确实低频了。F值和M值也可以按照类似逻辑各自取分位数。如果数据量足够还可以用聚类方法自动找分界点但这样可解释性会差一些做业务汇报时讲不清楚。我记得有个做零食电商的朋友分享过一个案例他们用中位数做R值分界线的时候高R人群占了全店近70%的GMV看起来没什么问题但把阈值从P50换到P65之后发现P50到P65这段用户虽然在R值上还算活跃但F值和M值都明显偏低实际上是一群活跃但贡献有限的用户。这个发现帮他们调整了推送策略把营销资源从这部分用户上腾出来给了真正的高潜用户。这就是阈值调整带来的实际业务增量。3.4 每组用户数占比的合理性检查分层跑完之后有一个非常重要的检查步骤看每类用户的占比分布是否合理。理论上应该出现头部小、腰部大、底部长尾的结构——核心价值用户通常占5%-10%各类中间用户占大头长期沉默用户占20%-30%。如果你算出来核心价值用户占比超过30%或者某一类用户占了半数以上先不要急着做策略回去检查一下是不是阈值取偏了或者维度口径出了问题。还有一种情况是数据源本身有问题比如F值没按订单去重导致同一个用户被算了多次或者M值包含了大量虚拟商品订单导致金额虚高都会造成分层结果的扭曲。分层结果最好用占比分布和业务经验双重验证之后再进入运营环节。4. 用Python实现RFM全流程从SQL取数到可视化分层理论讲得再多不如直接跑一遍。这里我给出一个完整的RFM分析实现流程包括SQL取数、Python数据处理、特征打分、用户分层和可视化。整个流程用的都是电商零售场景里最常见的数据表结构。4.1 关键SQL一张宽表把R/F/M一次取到位做RFM分析不推荐直接在业务库的订单表上反复做聚合计算更合理的做法是先建一张用户粒度的汇总宽表。假设你的数仓里有两张核心表用户注册表dim_user和订单事实表fact_order。先把订单表清洗到仅有效已支付订单的粒度再按用户聚合一次取出R/F/M三列。SELECT user_id, DATEDIFF(2024-06-30, MAX(pay_date)) AS recency_days, COUNT(DISTINCT order_id) AS frequency_cnt, SUM(pay_amount) AS monetary_amt FROM ( -- 子查询只保留已支付且未退款的实物订单 SELECT user_id, order_id, DATE(pay_time) AS pay_date, pay_amount FROM fact_order WHERE order_status paid AND refund_status none AND order_type physical -- 剔除虚拟商品 AND pay_time 2024-01-01 -- 统计窗口 AND pay_time 2024-07-01 ) t GROUP BY user_id这是一个标准的RFM取数模板。DATEDIFF里面用的是参考日期的字面量实际操作中建议用参数化方式传入方便更换分析周期。COUNT(DISTINCT order_id)是为了防止同订单拆单产生的重复计数加到frequency_cnt里。pay_amount取的是实付金额不是订单原价这样后续算M值时才不会失真。4.2 数据读取与清洗处理缺失值、异常值和重复记录把SQL结果读入Python之后第一件事绝对不是急着算打分而是做数据体检。核心检查项有四个。import pandas as pd import numpy as np df pd.read_csv(rfm_raw.csv) # 1. 检查列类型与缺失 print(df.info()) print(df.isnull().sum()) # 2. 检查重复用户 print(重复user_id数量:, df[user_id].duplicated().sum()) df df.drop_duplicates(subsetuser_id) # 3. 检查异常值R为负、F为0、M为负 print(df[df[recency_days] 0]) print(df[df[frequency_cnt] 0]) print(df[df[monetary_amt] 0]) # 4. 处理缺失值本项目里如果用户有订单记录三维都不应缺失 df df.dropna(subset[recency_days, frequency_cnt, monetary_amt])这段代码里比较容易被忽略的是frequency_cnt 0的检查。理论上能进入宽表的用户至少有一笔有效订单F值一定是正整数但如果上游订单表里存在全部退款的订单清洗时把这类用户的订单全删了用户就可能在宽表里只剩一行空记录。提前发现这个情况能防止后面打分环节出现灾难性的空值。4.3 用四分位数自动识别打分边界清洗完数据之后进入到特征打分环节。这里我用的是最常用的M五分位打分法每个维度按1-5分打分然后做三维组合分群。# 定义分位数打分函数 def rfm_score(series, reverseFalse, q[0.2, 0.4, 0.6, 0.8]): series: 某一维度数据 reverse: R值越小越好所以reverseTrue q: 分位数边界默认五分位 labels [1, 2, 3, 4, 5] if reverse: # 值越小得分越高从大到小排序分位 return pd.qcut(series, qq, labelslabels[::-1]) else: return pd.qcut(series, qq, labelslabels) df[R_score] rfm_score(df[recency_days], reverseTrue) df[F_score] rfm_score(df[frequency_cnt]) df[M_score] rfm_score(df[monetary_amt])这里有个关键点需要注意R值的reverse值要设为True。R代表最近一次消费距今多少天数值越大代表用户越久没来价值越低。距今超过某阈值反而对应低分所以打分的分位方向和其他两个维度是反的。如果这步搞反了你的活性最高的用户会被打成最低分整个分层彻底错误。如果某维度数据分布过于集中比如大量用户F值都是1pd.qcut会报错提示分位数边界不能唯一确定。这时候可以把duplicatesdrop参数加上或者改用自定义分位数区间的pd.cut。实操中遇到这个报错很正常不用慌调整一下分箱策略就好。4.4 八分类分群把分数映射成可运营的人群打完分之后把分数映射到经典八分类。这里我习惯用三维分数直接拼接分组标签直观且方便后续透视。# 将1-5分映射为高/低一般取3为高也可以按业务调整 df[R_level] np.where(df[R_score] 3, 高, 低) df[F_level] np.where(df[F_score] 3, 高, 低) df[M_level] np.where(df[M_score] 3, 高, 低) # 拼接分群标签 df[rfm_group] df[R_level] df[F_level] df[M_level]高和低的分数界线同样建议结合业务调优不一定死守3分。如果你发现用3分做界时高高高人群占比过大说明用户整体都很活跃这时候可以把R值的高标准提高到4分让分层更有区分度。需要记住的是模型是工具标准应该为业务目标服务。4.5 全店用户贡献度透视验证分层合理性分层做完之后先不要着急画图先做一个非常重要的透视验证用人数占比和GMV占比的对比来看分层的经济合理性。import pandas as pd group_stats df.groupby(rfm_group).agg( 用户数(user_id, count), 总消费金额(monetary_amt, sum), 人均消费金额(monetary_amt, mean), 平均频次(frequency_cnt, mean) ).sort_values(总消费金额, ascendingFalse) group_stats[人数占比] group_stats[用户数] / group_stats[用户数].sum() group_stats[金额占比] group_stats[总消费金额] / group_stats[总消费金额].sum() print(group_stats.round(2))如果算出来高高高组合的人数占比只有5%-8%但金额占比却达到了25%-35%说明分层结构基本合理头部用户确实承担了主要的销售额贡献。反过来如果高高高金额占比超过60%要警惕是否有少量极端大客户把M值分布拉得过于偏斜导致分层失真。4.6 可视化三维用户分群结果图上读懂用户结构RFM分析做可视化我常用的有三张图三维散点气泡图、用户价值四象限热力图、金额贡献占比条形图。这三张图结合起来基本能把用户结构讲得很清晰。import matplotlib.pyplot as plt # 三维气泡图x轴为R_scorey轴为F_score气泡大小代表M_score均值 fig, ax plt.subplots(figsize(10, 7)) scatter ax.scatter( df[R_score], df[F_score], sdf.groupby([R_score, F_score])[M_score].transform(mean) * 100, alpha0.6 ) ax.set_xlabel(R_score (最近消费)) ax.set_ylabel(F_score (消费频率)) ax.set_title(RFM三维用户分布) plt.show()这里的气泡大小表示该坐标点上用户的平均M分实际上是用二维平面承载了三维信息。这类图在团队内部讲数据时非常直观右上角气泡大的就是核心价值人群聚集区左下角气泡小的就是沉默低价值人群。配合一张用户群体占比的条形图就能在周会上把消费者结构讲得非常生动。5. 从分析结果到运营动作RFM分层怎么反哺业务决策5.1 核心价值用户专属权益与优先服务策略高高高用户是全店最宝贵的资产。这类用户近期活跃、频次高、金额高是店铺利润的中流砥柱。他们对价格不那么敏感对服务和体验的要求更高。运营上应该给他们被重视的感觉。具体动作包括建立独立会员体系提供专属客服通道在年中大促和品牌上新前做一对一的预告通知和高意向商品推荐在售后体验上给予免运费退货、优先退款等优待。一个值得关注的指标是这类用户的跨品类购买率如果核心用户群能做品类拓展客单价的提升空间会非常可观。关键注意点是核心用户对过度营销非常敏感。如果你把他们归进了高频推送的人群包每周弹广告、每天发短信他们会很快疲倦甚至流失。对核心价值用户推送的宗旨是少而精、有差异化而不是高频触达。5.2 新客高潜用户培育复购习惯对高R低F高M和高R低F低M这两类用户共同点是刚买过东西还没有形成复购习惯区别只在消费金额。前者是很有钱但还没习惯在你店里买后者是首单体验还可以但客单价偏低。对高R低F高M的用户核心动作是缩短二次复购周期。他们在第一次消费后的一到两周内对店铺还有记忆点这时候推送关联品、搭配品转化率往往最好。比如买过高端面霜的人推精华和眼霜的转化率会远超推同品类低价替代品的转化率。对低R低F低M用户核心动作是在用户生命周期早期提高连带率通过凑单、满减、小样赠送等方式把首单客单价拉上去让他们在第一次消费时就形成这家店还不错的品牌印象。新客运营最重要的一件事是首单体验的保证。一个刚下完首单的用户如果发货慢、包装差、商品与描述不符后续RFM分层做得再好也拉不回来。所以新客运营一定要跟供应链、客服团队做好协同把新客的履约体验当成最重要的增长杠杆之一。5.3 流失风险用户差异化召回策略低R高F高M和低R高F低M这两类用户是最值得做召回的。他们的特点是一段时间没来了但历史上消费频次和金额都还不错本身的忠诚度底子是有的只是最近被竞争对手、生活节奏变化或者其他因素淹没了。召回策略按价值分层递进对低R高F高M用户可以用高价值用户回馈的定向券、专属客服电话、私域社群邀约等方式一次性给出足够有吸引力的回归礼对低R高F低M用户可以用短信、公众号模板消息等低成本方式推送新品或促销信息观察响应率。做召回分析时要同时关注两个数据召回成功率和召回ROI。我之前看过一个案例某美妆品牌对沉睡半年的高价值用户发了一波大额券召回率做到了12%但算下来券后毛利接近零忙活半天不赚钱。所以召回策略不能只看回来多少人还要看回来的成本值不值。5.4 用户生命周期节奏与RFM的动态监控RFM不是做一次就完事了更建议把它做成一个周期性监控的报表每周或每月更新一次用户分层跟踪各类人群的数量变化和金额贡献变化。这样做最大的价值在于能够看到用户生命周期的流动趋势多少个高价值用户滑落到了流失风险组多少新客成功升级成了高R高F用户这张表对业务的指导意义很大。比如连续两个月低R高F高M组人数在涨说明老客流失问题在恶化要提前干预高R低F高M组人数在涨说明拉新渠道的质量在变好可以加大投放。RFM作为时间序列来看的时候就从一个静态分层模型变成了一个用户流动监控体系。6. 实操中的常见坑与排查心得6.1 时间窗口的生命周期校准问题统计窗口要是取长了R值的分辨率会下降——所有用户都被算成近期活跃窗口取短了F值又会大量为0——一堆低频但真实的用户被误判成不活跃。我之前吃过一个教训某项目直接用自然月做窗口分析运动户算出来高高高用户占比接近30%后来排查发现是窗口太短导致的。把窗口拉长到按季度后整体分布就正常多了。校准方法其实不复杂把每个用户的订单时间间隔拿出来做个分析统计平均复购间隔的分布。用这个分布去选窗口而不是凭经验拍一个最近90天。业务数据本身会告诉你窗口该设多长多花半小时做这个分析能省后面很多解释成本。6.2 维度相关性过高时的信息冗余处理RFM的三个维度理论上应该互相独立但实操中F值和M值经常高度相关。高频用户自然买得多累计金额就高。这时候两个维度提供的信息大量重叠分层的实际区分度就会下降。拆解办法如前所述把M值从累计金额改成平均客单价或单次最高消费金额就能把买得频繁和买得贵两个信息解耦开。改完之后再看分层结果往往会发现一批低频高单值用户被单独分出来这类用户其实是很多品类里最值得深耕的人群——他们平时不常来一来就买贵的说明他们对你的品牌有认可只是触发场景少。针对这类用户可以做长周期高价值商品的重点推荐。6.3 大促节点对R值和M值的脉冲式干扰每年双11、618这类大促活动都会对RFM计算造成严重干扰。活动期间大量沉默用户集中下单R值集体归零M值也被活动期的集中消费拉高算出来的活跃用户里混进了一堆大促脉冲用户。应对手法主要有两种一种是在R值计算时把活动周期内的数据单独标记做活动排除版的R值另一种是把参考日期选在活动结束至少两周以后让R值分布回归常态。更严谨的做法是构建活动影响系数——比较活动期间消费用户和非活动消费用户在下个月的复购差异判断是否有必要对分层结果做修正。6.4 存量客户与新增客户是否要分开建模型对一个快速增长期的电商平台用户池里每年会涌进大量新客。新客没有历史消费积累RFM的三个维度天然偏低很容易被整体分层的分位数压到低分组。但新客的价值逻辑跟老客完全不同——他们的R值是最高的只是F和M还不够高如果直接混在一起打分往往会得出新客都是低价值用户的错误结论进而被排除在重点运营人群之外。我见过比较成熟的团队做法是把新客池和老客池拆开分别计算分位数、分别建模。新客看的是首单表现和首单后30天内的二次复购率老客看的才是完整的RFM三层结构。两者放到同一个模型里反而会让决策动作变得混乱。7. 一些经验之外的建议[这里没有内容] 在写这个项目的过程中我又想起之前的一次分享经历。当时讲完RFM的Python实现之后有个做电商运营的听众问了我一个问题模型跑出来的结果到底怎么让运营同事愿意用这个问题其实比模型本身更难回答。我的体会有两点一是RFM分层的结果一定要落到运营同事熟悉的语言上比如这些人是高价值用户不如说这5%的人贡献了35%的销售额他们需要专属服务二是一定要跟运营团队一起制定并验证策略执行后的效果用数据证明分层确实能提升ROI下一次他们才会主动来用这个模型。最后再分享一个小技巧。如果你是用Python做RFM分析每次跑完分层之后顺手把分群结果导出一份CSV表标注好用户ID、各维度分值和分群标签。这份名单可以直接作为用户运营系统的人群包上传依据。从分析到运营动作之间的闭环往往就差这一张表。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。