RFM模型

一、RFM模型简介

1.什么是RFM模型
RFM是一个比较原生的客户价值分群模型,是通过在某段时间内一个客户的最近的消费时间、总体购买频率、购买总金额这三个维度来描述该客户价值状况的客户分类模型。
2.三个维度
最近一次消费距离(Recency):这个值越小对我们来说价值越大
某段时间内消费次数 (Frequency):这个值越大越好
某段时间内消费总金额 (Monetary):这个值越大越好
3.客户价值分类标签
RFM划分图

RFM价值分类
111重要价值客户
011重要保持客户
101重要发展客户
001重要挽留客户
110一般价值客户
010一般保持客户
100一般发展客户
000一般挽留客户

4.如何进行分类
本次仅仅使用均值进行划分,大于均值为1,小于均值为0;

二、数据集情况

数据集来自于阿里天池:https://tianchi.aliyun.com/dataset/148605
注:字段有所改变

三、Python代码实现

核心代码

import  numpy as np
from sqlalchemy import create_engine
import pandas as pd
conn = create_engine('mysql+pymysql://root:704256345@127.0.0.1:3306/sq?charset=utf8')
sql="select * from `user_action` where `behavior_type`=4;"
df = pd.read_sql(sql,conn)
rfm=df.pivot_table(index="user_id",values=["time","item_id","cost"],aggfunc={"time":"max","item_id":"count","cost":"sum"})
rfm["R"]=-(rfm["time"]-rfm["time"].max())/np.timedelta64(1,"D") ##取相差天数保留一位小数
rfm.rename(columns={"item_id":"F","cost":"M"},inplace=True)
def rfm_func(x):
    level=x.apply(lambda x:"1" if x>=1 else "0")
    label=level["R"]+level["F"]+level["M"]
    d={
        "111":"重要价值客户",
        "011":"重要保持客户",
        "001":"重要挽留客户",
        "010":"一般保持客户",
        "110":"一般价值客户",
        "101":"重要发展客户",
        "100":"一般发展客户",
        "000":"一般挽留客户"
    }
    result=d[label]
    return result
rfm["label"]=rfm[["R","F","M"]].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)

四、模型调优

1.指标
在实际的业务中需要根据维度进行调优;
example:一些较难成交的业务,可以使用活跃度替换的消费频率以及消费总金额

2.维度
原始的RFM模型仅仅从最近一次消费时间、消费频率、消费总金额这三个维度进行分析,实际业务中需要对维度进行增删。

五、策略

价值分类策略
重要价值客户SVIP客户,需要重点关注。
重要保持客户给予优惠券或其他手段吸引到店
重要发展客户签到活动,提高复购率
重要挽留客户回归礼包、专属客户询问原因
一般价值客户给予进阶的服务,推荐高价值的商品
一般保持客户给予小额优惠券吸引到店
一般发展客户提高复购率
一般挽留客户放弃,召回成本低可以考虑召回
### Python 库用于 RFM 模型实现 对于 RFM (Recency, Frequency, Monetary) 模型的实现,多个 Python 库提供了强大的支持。以下是几个常用的库: #### 1. `lifetimes` 库 `lifetimes` 是一个专注于客户生命周期分析的库,特别适合于 RFM 分析。该库实现了多种生存模型和频率预测模型,能够帮助理解客户的购买行为。 ```python from lifetimes import BetaGeoFitter bgf = BetaGeoFitter(penalizer_coef=0.0) bgf.fit(frequency, recency, T) # 预测未来某个时间段内的购买次数 frequency_predictions = bgf.predict(t=30, frequency=frequency, recency=recency, T=T) ``` 此库不仅适用于简单的 RFM 计算,还扩展到了更复杂的客户流失率建模[^1]。 #### 2. `pandas` 和 `numpy` 虽然不是专门针对 RFM 的库,但是 `pandas` 和 `numpy` 提供了处理数据所需的基础工具。通过这两个库可以轻松计算 Recency、Frequency 和 Monetary 值,并进行初步的数据探索与清洗工作。 ```python import pandas as pd import numpy as np data['TotalSum'] = data.groupby('CustomerID')['Amount'].transform(np.sum) rfmTable = data.groupby('CustomerID').agg({ 'InvoiceDate': lambda x: (max_date - x.max()).days, 'InvoiceNo': 'count', 'TotalSum': 'mean' }) rfmTable.rename(columns={ 'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True) ``` 上述代码片段展示了如何利用基础数据分析库来构建 RFM 表格。 #### 3. `scikit-learn` 及其他机器学习框架 当涉及到进一步的应用场景时,比如聚类分析或分类任务,则可借助像 `scikit-learn` 这样的通用 ML 平台来进行高级分析。例如 KMeans 聚类可以帮助识别不同类型的顾客群体。 ```python from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=4).fit(rfm_normalized) labels = kmeans.labels_ centroids = kmeans.cluster_centers_ print(labels) print(centroids) ``` 这种组合方式使得不仅可以执行基本的 RFM 分析,还可以深入挖掘潜在模式并做出更加精准的商业决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值