客户细分帮助公司深入了解客户行为并量身定制服务以满足其需求。RFM聚类是根据客户购买行为进行客户细分的强大方法。在尼日利亚金融科技平台Cowrywise,我们使用RFM客户细分和K-Means聚类进行客户细分,以分析客户活动并提供个性化的金融解决方案。通过使用RFM指标,我们可以根据用户的消费习惯对其进行分类,并通过量身定制的服务增强他们的体验。
在尼日利亚金融科技平台Cowrywise,我们正在使用Metabase通过以下组合来可视化这些见解并提供解决方案:
- RFM(最近一次消费、消费频率和消费金额),
- AUM(资产管理规模)每日指标,以及
- K-Means聚类。
下面是关于它们的更多信息。
了解RFM(最近一次消费、消费频率和消费金额)
RFM表示三个关键的客户参与度指标
- 最近一次消费(自上次交易以来的时间)
- 消费频率(交易次数)
- 消费金额(在平台上花费的总金额)
为了计算RFM分数,我们为每个指标分配值。更高的分数表示更活跃的客户。例如,昨天进行了交易、交易频繁且花费大量资金的用户会获得更高的RFM分数。
以下是我们用于计算RFM分数的Python脚本
import pandas as pd
import datetime as dt
# Load transaction data
df = pd.read_csv("transactions.csv")
# Convert transaction_date to datetime
df["transaction_date"] = pd.to_datetime(df["transaction_date"])
# Calculate Recency, Frequency, and Monetary Value
snapshot_date = df["transaction_date"].max() + dt.timedelta(days=1)
df_rfm = df.groupby("user_id").agg({
"transaction_date": lambda x: (snapshot_date - x.max()).days,
"transaction_id": "count",
"amount": "sum"
}).reset_index()
# Rename columns
df_rfm.rename(columns={
"transaction_date": "Recency",
"transaction_id": "Frequency",
"amount": "MonetaryValue"
}, inplace=True)
# Print the first five rows of the RFM dataframe
print(df_rfm.head())
通过AUM(资产管理规模)改进RFM
虽然RFM客户细分是有效的,但它忽略了客户的投资行为。为了更全面地了解客户的投资习惯和行为,我们将每日AUM(资产管理规模)添加到RFM分数中。
AUM是客户投资资产的总价值,除以他们开始投资以来的天数。以下是我们用于创建此混合指标的脚本
# Load AUM data
df_aum = pd.read_csv("aum.csv")
# Convert start_date to datetime
df_aum["start_date"] = pd.to_datetime(df_aum["start_date"])
# Calculate the number of days since the customer started investing
df_aum["InvestmentDays"] = (snapshot_date - df_aum["start_date"]).dt.days
# Calculate AUM per day
df_aum["AUMperDay"] = df_aum["aum"] / df_aum["InvestmentDays"]
# Merge RFM and AUM dataframes
df_hybrid = pd.merge(df_rfm, df_aum[["user_id", "AUMperDay"]], on="user_id", how="inner")
# Print the first five rows of the hybrid dataframe
print(df_hybrid.head())
使用K-Means聚类进行客户细分
计算RFM指标和AUM分数后,我们运行k-means聚类进行客户细分,以对相似的客户进行分组。K-means聚类是一种机器学习算法,它根据共同特征将数据组织成k个集群。为了找到合适的集群数量,我们使用肘部法则,该方法确定了添加更多集群不再显著改善分组的点。
from sklearn.cluster import KMeans
# combine RFM and AUM data into a single dataframe
rfm_aum_data = pd.concat([rfm_scores, aum_scores], axis=1)
# determine optimal number of clusters using elbow method
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
kmeans.fit(rfm_aum_data)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
# fit k-means clustering to data
kmeans = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=0)
kmeans.fit(rfm_aum_data)
# assign clusters to each customer
customer_clusters = kmeans.predict(rfm_aum_data)
在Metabase中可视化客户细分
一旦每个客户都被分配到一个集群,您就可以开始在Metabase中可视化客户细分了!首先,确保您有一个Metabase帐户并已将Metabase连接到您的数据源。连接后:
- 选择 + 新建 > 问题。
- 选择您的
customer_segmentation
表作为起点(或您称之为包含您的rfm_score
、aum_per_day
和segment
字段的表)。 - 编写查询后,点击 可视化 以创建您的可视化。
- 您可以使用查询生成器来筛选和汇总数据,然后选择要使用的可视化类型。例如,使用条形图显示不同细分客户的分布,或使用散点图显示RFM分数和每日AUM之间的关系。
- 当您得到一些有趣的结果时,点击 保存 按钮。
- 您可以将保存的问题添加到Metabase仪表板并设置筛选器,以便人们可以按细分、日期范围或您选择的其他变量查看数据。