LTV(用户生命周期价值)定义
LTV(Lifetime Value) 指用户在整个生命周期内为产品贡献的总收入总和,是衡量用户长期价值和获客成本上限的核心指标。
核心公式:
LTV = ARPU × 用户平均生命周期
*例:ARPU=¥10,平均留存时长=90天 → LTV=¥900*
⚠️ 核心意义:指导用户获取成本(CAC)投入,健康产品要求 LTV > 3×CAC
Python分析LTV全流程(附代码)
1. 数据准备
数据集 user_behavior.csv
结构:
csv
user_id,first_date,last_date,total_revenue,channel 1001,2023-01-01,2023-06-30,648,抖音 1002,2023-02-15,2023-03-20,98,应用商店 # 已流失用户
2. 历史LTV计算(已流失用户)
python
import pandas as pd
import numpy as np
df = pd.read_csv('user_behavior.csv', parse_dates=['first_date', 'last_date'])
df['lifetime'] = (df['last_date'] - df['first_date']).dt.days # 生命周期天数
# 计算整体LTV(总收入/总用户数)
ltv_total = df['total_revenue'].sum() / df['user_id'].nunique()
# 分渠道计算LTV
ltv_channel = (
df.groupby('channel')
.apply(lambda g: g['total_revenue'].sum() / g['user_id'].nunique())
)
print(f"整体LTV: ¥{ltv_total:.0f}\n分渠道LTV:\n{ltv_channel}")
输出:
text
整体LTV: ¥420 分渠道LTV: 抖音 ¥580 应用商店 ¥320 Facebook ¥210
3. LTV预测模型(活跃用户)
方法1:留存率模型(行业通用)
python
# 步骤1:计算每日留存率
cohort_data = df.groupby(['first_date', 'day_since_first'])['user_id'].nunique().unstack()
retention = cohort_data.div(cohort_data.iloc[:, 0], axis=0) # 首日基准
# 步骤2:拟合留存曲线(指数衰减)
from scipy.optimize import curve_fit
def retention_func(days, a, b):
return a * np.exp(-b * days) # 指数衰减模型
x = retention.columns
y = retention.mean().values
params, _ = curve_fit(retention_func, x, y, p0=[0.8, 0.01])
a, b = params # a=初始留存率, b=衰减系数
# 步骤3:计算平均生命周期
avg_lifetime = 1 / b # 指数衰减下生命周期=1/b
# 步骤4:LTV = ARPU × 生命周期
arpu = df['total_revenue'].sum() / df['user_id'].nunique()
ltv_pred = arpu * avg_lifetime
print(f"预测LTV: ¥{ltv_pred:.0f} (生命周期={avg_lifetime:.0f}天)")
方法2:机器学习预测(更精准)
python
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
# 特征工程
df['recency'] = (pd.Timestamp.now() - df['last_date']).dt.days
df['login_freq'] = df['login_count'] / df['lifetime'] # 日均登录频次
# 构建训练集(仅已流失用户)
train_data = df[df['last_date'] < '2023-06-01'] # 截止6月前的流失用户
X = train_data[['channel', 'recency', 'login_freq', 'first_pay_amount']]
y = train_data['total_revenue']
# 训练模型
model = RandomForestRegressor(n_estimators=100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model.fit(pd.get_dummies(X_train), y_train)
# 预测活跃用户LTV
active_users = df[df['last_date'] >= '2023-06-01']
active_users['pred_ltv'] = model.predict(pd.get_dummies(active_users[X.columns]))
https://i.imgur.com/9YFkz3R.png
提升LTV的5大核心策略
策略1:高潜力渠道扩量(基于LTV/CAC)
渠道 | LTV | CAC | LTV/CAC | 策略 |
---|---|---|---|---|
抖音 | ¥580 | ¥150 | 3.87 | 追加预算 |
¥210 | ¥120 | 1.75 | 缩减投入 |
策略2:鲸鱼用户生命周期延长
-
问题:鲸鱼用户(LTV>¥2000)90天后流失率骤升
-
方案:
-
第60天推送 “传奇玩家礼包”(含专属内容)
-
开通 1v1 VIP客服
-
-
结果:鲸鱼用户生命周期从110天→168天
策略3:付费内容节奏优化
python
# 分析首次付费时间与LTV关系
df['days_to_first_pay'] = (df['first_pay_date'] - df['first_date']).dt.days
sns.lmplot(x='days_to_first_pay', y='total_revenue', data=df, order=2)
发现:首周付费用户LTV比首月后付费高3.2倍 → 加速新用户付费转化
策略4:订阅制深化设计
-
机制:
-
¥30 基础月卡:每日90钻石
-
¥68 进阶月卡:追加专属副本+加速道具
-
-
效果:
-
用户平均生命周期延长至210天
-
LTV提升40%
-
策略5:社交关系链加固
python
# 验证好友数量与LTV相关性
print(df[['friend_count', 'total_revenue']].corr())
输出:相关系数=0.72 → 推出 “邀请好友共战” 活动(邀请1人送抽卡券)