用户分类是运营、营销过程中的很基础的一环,合理地对用户进行分类,分别实施合适的运营手段,以提高效率。
本文数据集来自于《python数据分析与挖掘实战(第二版)》,有兴趣的同学买来看看。
先介绍一下RFM和Kmeans:
RFM模型:
R,recently,表示用户最近付费/使用/登录等行为的时间
F,frequency,表示用户付费/使用等行为的频次/频率
M,money,表示用户在一个时间段内的消费金额,如果是免费产品,像抖音,应该可以用时间替换,时间就是金钱啊!
对于游戏来说,这个模型衡量你有没有氪金,玩的多不多,最近有没有玩;对于B站来说,这个模型衡量你冲大会员没有,投币没有,看得多不多;
显然,RFM模型是一个3特征模型,虽然它3个特征已经比较好地刻画出用户价值的模型,也适用于大多数场景,也好进行可视化(三维),但是基于每一种具体的业务场景,肯定有基础该场景的也重要的特征,把这些特征加进来,能更好地分类用户。
把RFM值都计算出来后,问题就来了,怎么划分?如果以每个字段(RFM)的某个特定值,如平均值、某分位数值进行划分,组合2³将用户划分成8类,三维空间也被划分为方方的8个区域;
这是经典的划分方法,后续可以根据不同的划分阈值测试调整,使收益最大化。
那这种方法的缺陷在哪呢?
1.需要人为去设定阈值,有非常丰富的经验还好,但是非常丰富的经验是需要代价的。
2.划分得太“方正”,这种按特定值的划分方式,没有考虑数据的集中程度,对特征也不敏感,比如说一个业务场景以M划分应该要分成3部分,R划分两部分,F划分3部分,这就很难去实现了。
为了弥补上述缺陷,大神们在几十年前发明了Kmeans算法。
Kmeans算法
k,表示k个中心
means,表示均值
不同于按特定值划分,Kmeans用样本到中心点的距离来分类(近墨者黑),以RFM为例,假设初始设置的k=3,即有三个聚类中心,得到的结果是这样的