1、为什么预测流失
每个企业都渴望建立和保持一个忠实的客户群,而事实是由于各方面原因不可避免的会流失一些用户。如果我们根据用户的活跃度及消费情况,判断用户的流失意向,及时对有流失趋向的用户进行营销召回,这对公司来讲是非常有必要的。
2、需求分析
- 模型标签、目标值、y(用户流失的概率)。比如说:A(0.2),B(0.4),C(0.6),D(0.8),这是概率问题,越高流失率越高。那么我们怎么计算流失率呢?
- 要通过历史既定事实(满足某些特征的人群中,哪些流失了,哪些没流失)来得出,才会靠谱!
3、特征工程
(1)特征数据源
1、从公司大量的流失用户中,随机挑选1万人
2、从公司大量的未流失用户中,随机挑选1万人
3、将这2万人的数据(特征)组成先验样本集!
特征1 | 特征2 | 特征3 | 特征…… | 特征n | 标签 |
---|---|---|---|---|---|
x 1 x_1 x1 | x 2 x_2 x2 | x 3 x_3 x3 | …… | x n x_n xn | 0/1 |
(2)特征选择
原则:所选取的特征,应该跟流失与否有关联!
- 活跃属性
- 消费属性
- 最后距今登录天数
- 最后距今购买天数
- 事件属性(好评、中评、差评)
- 从数据仓库中抽取相关的数仓表(更全面的用户属性)、画像报表。
四、算法选择·逻辑回归算法
(1)逻辑回归算法简介
- 是一种分类算法,分类预测的结果还有一定的概率含义。在生产中使用非常频繁;
- 线性回归实际解决的是预测实数连续值的问题;逻辑回归解决的是分类问题;
- 用于二分类领域,可以得出概率值,适用于根据分类概率排名的领域,如搜索排名等;
- Logistic回归的扩展softmax可以应用于多分类领域,如手写字识别等;
- 信用评估;
- 测量市场营销的成功度;
- 预测某个产品的收益等。
(2)实现步骤 - 加载经验样本数据
- 将样本数据向量化
- 构建逻辑回归算法工具
- 算法对样本数据进行训练形成模型
- 用模型对新数据做预测
五、代码走起
(1)样本数据(假数据)
import numpy as np
import pandas as pd
X = np.random.randint(1,15,size =(50,15))
X_train = pd.DataFrame(X,columns=['x_%d'%(i+1) for i in range(15)])
y_train = np.random.randint(0,2,size = 50)
(2)待预测分类数据
X2 = np.random.randint(1,15,size = (20,15))
X_test = pd.DataFrame(X2,columns=['x_%d'%(i+1) for i in range(15)])
(3)代码实现
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr.fit(X_train,y_train)
y_pred = lr.predict(X_test)
print(y_pred)
y_prob = lr.predict_proba(X_test)
y_prob
输出结果:
[1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0]
array([[0.03230703, 0.96769297],
[0.93171709, 0.06828291],
[0.97942594, 0.02057406],
[0.01089909, 0.98910091],
[0.99745415, 0.00254585],
[0.48741499, 0.51258501],
[0.99583849, 0.00416151],
[0.38237058, 0.61762942],
[0.62847683, 0.37152317],
[0.83675616, 0.16324384],
[0.12151155, 0.87848845],
[0.45674081, 0.54325919],
[0.39225385, 0.60774615],
[0.97983221, 0.02016779],
[0.13230931, 0.86769069],
[0.96127878, 0.03872122],
[0.16607067, 0.83392933],
[0.82587121, 0.17412879],
[0.05371583, 0.94628417],
[0.99835238, 0.00164762]])