沙韬伟,苏宁易购高级算法工程师。
曾任职于Hewlett-Packard、滴滴出行。
数据学院特邀讲师。
主要研究方向包括风控、推荐和半监督学习。目前专注于基于深度学习及集成模型下的用户行为模式的识别。
![](https://img-blog.csdnimg.cn/img_convert/87f75025d2b61d1ad8fdb06ae9ddd5cd.png;wxfrom=5&wx_lazy=1)
用户流失一直都是公司非常重视的一个问题,也是AAARR中的Retention的核心问题,所以各大算法竞赛都很关注。比如最近的:KKBOX的会员流失预测算法竞赛(https://www.kaggle.com/c/kkbox-churn-prediction-challenge),如何能够搭建一个精准的模型成了大家探索的重要问题。
本文主要讲解神经网络、TensorFlow的概述、如何利用python基于TensorFlow神经网络对流失用户进行分类预测,及可能存在的一些常见问题,作为深度学习的入门阅读比较适合。
![](https://img-blog.csdnimg.cn/img_convert/ff29233866d4d71d9167102c1a57dcc4.png)
通常的行业预测用户流失大概分以下几种思路:
1、利用线性模型(比如Logistic)+非线性模型Xgboost判断用户是否回流逝
这种方法有关是行业里面用的最多的,效果也被得意验证足够优秀且稳定的。核心点在于特征的预处理,Xgboost的参数挑优,拟合程度的控制,这个方法值得读者去仔细研究一边。问题也是很明显的,会有一个行业baseline,基本上达到上限之后,想有有提升会非常困难,对要求精准预测的需求会显得非常乏力。
2、规则触发
这种方法比较古老,但是任然有很多公司选择使用,实现成本较低而且非常快速。核心在于,先确定几条核心的流失指标(比如近7日登录时长),然后动态的选择一个移动的窗口,不停根据已经流失的用户去更新流失指标的阈值。当新用户达到阈值的时候,触发流失预警。效果不如第一个方法,但是实现简单,老板也很容易懂。
3、场景模型的预测
这个方法比较依赖于公司业务的特征,如果公司业务有部分依赖于评论,可以做文本分析,比如我上次写的基于word2vec下的用户流失概率分析(http://www.jianshu.com/p/413cff5b9f3a)。如果业务有部分依赖于登录打卡,可以做时间线上的频次预估。这些都是比较偏奇门易巧,不属于通用类别的,不过当第一种方法达到上线的时候,这种方法补充收益会非常的大。
其实还有很多其它方法,我这边也不一一列出了,这个领域的方法论还是很多的。
![](https://img-blog.csdnimg.cn/img_convert/ff29233866d4d71d9167102c1a57dcc4.png)
神经网络流程
上面这张图片诠释了神经网络正向传播的流程,先通过线性变换(上图左侧)Σxw+b将线性可分的数据分离,再通过非线性变换(上图右侧)Sigmoid函数将非线性可分的数据分离,最后将输入空间投向另一个输出空间。
根据上面所说,我们可以知道,通过增加左侧线性节点的个数,我们可以强化线性变换的力度;而通过增加层数,多做N次激活函数(比如上面提到的Sigmoid)可以增强非线性变换的能力。
通过矩阵的线性变换+激活矩阵的非线性变换,将原始不可分的数据,先映射到高纬度,再进行分离。但是这边左侧节点的个数,网络的层数选择是非常困难的课题,需要反复尝试。
刚才我们了解了整个训练的流程,但是如何训练好包括线性变换的矩阵系数是一个还没有解决的问题。
我们来看下面的过程:
input ==> Σxw+b(线性变换) ==> f(Σxw+b)(激活函数) ==> ...(多层的话重复前面过程) ==> output(到此为止,正向传播结束,反向修正矩阵weights开始) ==> error=actual_output-output(计算预测值与正式值误差)==>output处的梯度==>调整后矩阵weight=当前矩阵weight+errorx学习速率xoutput处的负梯度。
核心目的在于通过比较预测值和实际值来调整权重矩阵,将预测值与实际值的差值缩小。
比如&#x