如何实现 通过RFM 模型、 RFE 模型和 PSM 模型,通过 KMenas 算法完成不同用户的消费能力,活跃 度以及价格敏感的画像
时间: 2024-04-01 08:34:07 浏览: 16
首先,RFM模型是根据用户最近一次消费时间(Recency)、消费频率(Frequency)和消费金额(Monetary)三个指标来对用户进行分析的模型,可以用于刻画用户的消费能力和活跃度。
其次,RFE模型是根据用户的历史行为数据,通过逐步剔除不重要的特征,来建立一个更为精简的预测模型,可以用于刻画用户的消费能力和价格敏感度。
最后,PSM模型是根据用户的消费行为和个人属性等信息,来预测用户的购买行为,可以用于刻画用户的消费能力和价格敏感度。
在使用KMenas算法进行聚类分析时,可以将上述三个模型得到的特征作为输入,将用户分为不同的群体。通过对每个群体的特征进行分析,可以得到不同用户的消费能力、活跃度和价格敏感度的画像。
相关问题
电商用户大数据分析实际案例和代码RFM模型
RFM模型是电商用户大数据分析中常用的一种模型,用于衡量用户价值和忠诚度。RFM模型包括三个指标:
R (Recency):最近一次购买时间距离当前时间的天数,表示用户的活跃度。
F (Frequency):用户购买的次数,表示用户的忠诚度。
M (Monetary):用户购买的总金额,表示用户的价值。
以下是一个电商平台的用户RFM模型分析案例和对应的 SQL 语句:
1. 计算每个用户的R、F、M值
```sql
SELECT user_id,
DATEDIFF(NOW(), MAX(purchase_time)) AS R,
COUNT(*) AS F,
SUM(amount) AS M
FROM purchase_table
GROUP BY user_id;
```
2. 对R、F、M值进行分组,并计算每个组的平均值和标准差
```sql
SELECT
CASE
WHEN R < 30 THEN '1. 0-30'
WHEN R < 60 THEN '2. 31-60'
WHEN R < 90 THEN '3. 61-90'
ELSE '4. 91+'
END AS R_Group,
CASE
WHEN F < 2 THEN '1. 1-2'
WHEN F < 4 THEN '2. 3-4'
WHEN F < 6 THEN '3. 5-6'
ELSE '4. 7+'
END AS F_Group,
CASE
WHEN M < 100 THEN '1. 0-100'
WHEN M < 200 THEN '2. 101-200'
WHEN M < 500 THEN '3. 201-500'
ELSE '4. 501+'
END AS M_Group,
COUNT(*) AS user_count,
AVG(R) AS avg_R,
AVG(F) AS avg_F,
AVG(M) AS avg_M,
STDDEV(R) AS std_R,
STDDEV(F) AS std_F,
STDDEV(M) AS std_M
FROM
(SELECT user_id,
DATEDIFF(NOW(), MAX(purchase_time)) AS R,
COUNT(*) AS F,
SUM(amount) AS M
FROM purchase_table
GROUP BY user_id) AS RFM
GROUP BY R_Group, F_Group, M_Group;
```
这里的 R_Group、F_Group、M_Group 分别代表 R、F、M 指标的分组,分别将用户的 R、F、M 值分成四组,分别是 0-30、31-60、61-90、91+ 天,1-2、3-4、5-6、7+ 次,0-100、101-200、201-500、501+ 元。可以根据实际业务场景进行适当调整。
通过RFM模型的分析,可以对用户进行分类,进而制定更有针对性的营销策略,提高用户忠诚度和购买频率,从而提高电商平台的销售额。
Python实现RFM模型
RFM模型是一种常用的客户分析模型,用于评估客户的价值和重要性。下面是一个简单的Python实现RFM模型的示例:
```python
import pandas as pd
# 读取订单数据
df = pd.read_excel('sales.xlsx')
# 计算最近购买日期、购买频率和消费金额
rfm_data = df.groupby('会员ID').agg({
'最近购买日期': lambda x: (df['最近购买日期'].max() - x.max()).days,
'购买频率': 'count',
'消费金额': 'sum'
}).rename(columns={
'最近购买日期': 'R',
'购买频率': 'F',
'消费金额': 'M'
})
# 对R、F、M进行分段打分
rfm_data['R_score'] = pd.cut(rfm_data['R'], bins=[-float('inf'), 30, 60, 90, float('inf')], labels=[4, 3, 2, 1], right=False)
rfm_data['F_score'] = pd.cut(rfm_data['F'], bins=[-float('inf'), 1, 2, 3, float('inf')], labels=[1, 2, 3, 4], right=False)
rfm_data['M_score'] = pd.cut(rfm_data['M'], bins=[-float('inf'), 1000, 2000, 3000, float('inf')], labels=[1, 2, 3, 4], right=False)
# 计算RFM得分
rfm_data['RFM_score'] = rfm_data['R_score'].astype(str) + rfm_data['F_score'].astype(str) + rfm_data['M_score'].astype(str)
# 打印RFM得分数据
print(rfm_data)
# 将RFM得分数据写入Excel文件
rfm_data.to_excel('rfm_scores.xlsx')
```
上述代码假设你的订单数据保存在名为'sales.xlsx'的Excel文件中,并且包含'会员ID'、'最近购买日期'、'购买频率'和'消费金额'等列。代码首先计算最近购买日期(R)、购买频率(F)和消费金额(M),然后对这三个指标进行分段打分,最后计算RFM得分并存储在'RFM_score'列中。打印RFM得分数据并将其写入名为'rfm_scores.xlsx'的Excel文件中。
请根据你的实际数据和需求修改代码中的列名、分段打分方式和文件路径等参数。