【机器学习】用户运营+用户分群+智能推荐

1. 项目目的

公司最近要在某音上投放广告,进行新用户获取,或者通过app push推送一些优惠券,来提高用户的留存。无论是广告还是优惠券,都成为营销的干预手段,其背后都是有成本的。营销的目标就是在成本有限的情况下最大化营销的总产出,这里面最关键的一点是我们能否准确找到真正能被营销打动的用户,我们称他们为营销敏感人群,可以通过项目来尝试解决这个问题

通过机器学习,对用户进行精准划分和智能推荐,从而提高营销转化效果。目标可以细分成下面几个小的目标:

  • 识别不同用户群体。

  • 针对不同群体设计个性化营销策略。

  • 通过智能推荐系统提升用户参与度和转化率。

以下是项目的大概流程:

  • 数据采集:从用户行为日志、交易数据等来源收集数据。

  • 数据预处理:清洗数据、特征工程。

  • 模型训练:使用机器学习模型对用户进行分类。

  • 推荐服务:根据用户类别生成个性化推荐。

  • 结果展示:通过 API 或 Dashboard 展示推荐结果。


2. 用户分析

识别区分用户群体,我们可以基于营销人群四象限理论,用户可以分为以下四类:

个人手画,使用请标注来源,谢谢

2.1 Persuadables(营销敏感型)

  • 特点:对营销活动敏感,容易被优惠、促销等活动吸引。

  • 行为特征:频繁点击广告、参与促销活动、对价格敏感。

  • 营销策略:推送个性化优惠券、限时折扣等,营销的重点对象。

2.2 Sleeping Dogs(勿扰型)

  • 特点:对营销活动不感兴趣,甚至反感。

  • 行为特征:很少点击广告,对促销活动无反应。

  • 营销策略:减少营销推送,避免打扰,不用发优惠券。

2.3 Sure Things(确认型)

  • 特点:忠诚度高,无论是否有营销活动都会购买。

  • 行为特征:高频购买,对品牌忠诚。

  • 营销策略:提供会员专属福利,增强用户粘性,优惠券就可以不用浪费了。

2.4 Lost Causes(沉睡型)

  • 特点:曾经活跃,但现在已经流失。

  • 行为特征:长时间未登录或购买。

  • 营销策略:尝试召回,如发送唤醒邮件或推送。


3. 技术程序开发

我们将开发一个基于机器学习的程序,主要包括以下2个功能:

  1. 用户划分:使用聚类算法将用户划分为四类。

  2. 智能推荐:根据用户类别推送个性化营销内容。

3.1 数据准备

使用虚拟数据模拟用户行为,包括以下字段:

  • user_id:用户 ID。

  • clicks:广告点击次数。

  • purchases:购买次数。

  • last_active_days:最近一次活跃距离现在的天数。

  • discount_sensitivity:对折扣的敏感度(0-1)。

import pandas as pd
import numpy as np

# 生成虚拟数据
np.random.seed(42)
n_users = 1000
data = {
    "user_id": range(1, n_users + 1),
    "clicks": np.random.randint(0, 50, n_users),
    "purchases": np.random.randint(0, 20, n_users),
    "last_active_days": np.random.randint(0, 365, n_users),
    "discount_sensitivity": np.random.rand(n_users)
}

df = pd.DataFrame(data)
print(df.head())

3.2 用户划分

使用 K-Means 聚类算法将用户划分为四类。

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# 特征选择
X = df[["clicks", "purchases", "last_active_days", "discount_sensitivity"]]

# 标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# K-Means 聚类
kmeans = KMeans(n_clusters=4, random_state=42)
df["cluster"] = kmeans.fit_predict(X_scaled)

# 查看聚类结果
print(df["cluster"].value_counts())

3.3 用户类别映射

将聚类结果映射到四象限:

  • 0:Persuadables

  • 1:Sleeping Dogs

  • 2:Sure Things

  • 3:Lost Causes

# 映射聚类结果到四象限
cluster_mapping = {
    0: "Persuadables",
    1: "Sleeping Dogs",
    2: "Sure Things",
    3: "Lost Causes"
}
df["user_type"] = df["cluster"].map(cluster_mapping)


# 用户行为数据分布
plt.figure(figsize=(12, 6))
sns.histplot(df["clicks"], bins=30, kde=True, color="blue")
plt.title("Distribution of Clicks")
plt.xlabel("Clicks")
plt.ylabel("Frequency")
plt.show()

# 用户类别分布
plt.figure(figsize=(8, 6))
sns.countplot(x="user_type", data=df, palette="Set2")
plt.title("Distribution of User Types")
plt.xlabel("User Type")
plt.ylabel("Count")
plt.show()

3.4 智能推荐

根据用户类别设计个性化推荐策略,具体的策略可以根据需求实际情况来定义。

def recommend_strategy(user_type):
    if user_type == "Persuadables":
        return "推送个性化优惠券和限时折扣"
    elif user_type == "Sleeping Dogs":
        return "减少营销推送,避免打扰"
    elif user_type == "Sure Things":
        return "提供会员专属福利"
    elif user_type == "Lost Causes":
        return "发送唤醒邮件或推送"
    else:
        return "无推荐策略"

# 为每个用户生成推荐策略
df["recommendation"] = df["user_type"].apply(recommend_strategy)

# 查看推荐结果
print(df[["user_id", "user_type", "recommendation"]].head(10))
   user_id      user_type recommendation
0        1   Persuadables  推送个性化优惠券和限时折扣
1        2    Sure Things       提供会员专属福利
2        3   Persuadables  推送个性化优惠券和限时折扣
3        4    Sure Things       提供会员专属福利
4        5    Lost Causes      发送唤醒邮件或推送
5        6    Lost Causes      发送唤醒邮件或推送
6        7    Sure Things       提供会员专属福利
7        8   Persuadables  推送个性化优惠券和限时折扣
8        9  Sleeping Dogs    减少营销推送,避免打扰
9       10    Lost Causes      发送唤醒邮件或推送
Silhouette Score: 0.19700009511955516

4. 复盘与优化

4.1 程序实现优化

  • 特征工程:引入更多用户行为特征(如浏览时长、购物车添加次数等)。

  • 算法优化:尝试其他聚类算法(如 DBSCAN 或层次聚类)。

  • 模型评估:使用轮廓系数(Silhouette Score)评估聚类效果。

from sklearn.metrics import silhouette_score

# 计算轮廓系数
score = silhouette_score(X_scaled, df["cluster"])
print("Silhouette Score:", score)

4.2 营销策略优化

  • A/B 测试:对不同用户群体进行 A/B 测试,验证推荐策略的有效性。

  • 动态调整:根据用户行为变化动态调整聚类模型和推荐策略。


5. 完整代码

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score

# 生成虚拟数据
np.random.seed(42)
n_users = 1000
data = {
    "user_id": range(1, n_users + 1),
    "clicks": np.random.randint(0, 50, n_users),
    "purchases": np.random.randint(0, 20, n_users),
    "last_active_days": np.random.randint(0, 365, n_users),
    "discount_sensitivity": np.random.rand(n_users)
}
df = pd.DataFrame(data)

# 特征选择与标准化
X = df[["clicks", "purchases", "last_active_days", "discount_sensitivity"]]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# K-Means 聚类
kmeans = KMeans(n_clusters=4, random_state=42)
df["cluster"] = kmeans.fit_predict(X_scaled)

# 映射聚类结果到四象限
cluster_mapping = {
    0: "Persuadables",
    1: "Sleeping Dogs",
    2: "Sure Things",
    3: "Lost Causes"
}
df["user_type"] = df["cluster"].map(cluster_mapping)

# 推荐策略
def recommend_strategy(user_type):
    if user_type == "Persuadables":
        return "推送个性化优惠券和限时折扣"
    elif user_type == "Sleeping Dogs":
        return "减少营销推送,避免打扰"
    elif user_type == "Sure Things":
        return "提供会员专属福利"
    elif user_type == "Lost Causes":
        return "发送唤醒邮件或推送"
    else:
        return "无推荐策略"
df["recommendation"] = df["user_type"].apply(recommend_strategy)

# 输出结果
print(df[["user_id", "user_type", "recommendation"]].head(10))

# 计算轮廓系数
score = silhouette_score(X_scaled, df["cluster"])
print("Silhouette Score:", score)

6. 总结

通过机器学习技术,我们成功将用户划分为四类,并设计了针对性的营销策略。未来可以通过引入更多特征和优化算法进一步提升模型效果。当然数据都是虚拟的,旨在提供一种思路,实际中要结合真实数据,引入更多用户行为数据,比如:browsing_time:平均每次浏览时长(分钟),cart_additions:购物车添加次数,wishlist_additions:收藏夹添加次数,avg_order_value:平均订单金额等等,以此来提高用户分类的精准度。另外用户分类方法也有很多像随机森林,都可以尝试一下,技术是工具,达到效果才是目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值