神经网络用起来——大数据客户分层

手动原创:繁林林与机器学习

背景:

客户分层,实际上与运营,市场等密切相关。目前大部分客户分层无非 在 人口特征纬度,地域特征纬度对客户进行划分。比如,某化妆品定位的是上海的年轻女性。这是传统的操作方法。

现代社会,用户留下来大量的数据,点击记录,购买记录,搜索记录,消费频率,会员,社交平台活跃程度等等,一个用户可能在一个平台上能有500个纬度的特征数据。那么传统的方法实际上很难对客户进行划分,那是否能有一种方法考虑到500种特征的情况下,对客户进行划分呢?

今天给大家分享一个用起来很简单,也很好理解,但是验证有点费劲的算法—Autoencoder

算法介绍

Autoencoder,非监督学习算法的一种。非监督学习(Unsupervised Learning)是机器自己学习的模式。上篇 “机器学习的Hello world”,是监督学习(Supervised Learning)的一种。

监督与非监督学习的差别很简单,就是是否会有一个明确的标签。

例如,“机器学习的Hello world”中的数字图片识别,最终数据库会告诉你这个图片对应的数字分类。然后建立神经网络之后,通过训练及学习 将神经网络预测结果调整至与已知的标签对应。监督学习,学的就是那个明确的标签。

但是现实社会中,大部分数据或者问题,是没有明确的标签的或者说标签样本量不够大。这就属于非监督学习的范畴了。让机器自己去发现规律,找到方法。

那么autoencoder是怎么工作的呢?

假设我们目前的数据是60000*600 ,60000个用户 每个用户600个特征;

同样Autoencoder是一种特殊的神经网络架构,其也要包含输入层,隐藏层、输出层。

输入层:600个输入值

隐藏层: 暂略

输出层:600个输出值

首先,Autoencoder的第一个特征是输入层与输出层相同。这看起来很奇怪,因为输入60000*600的训练数据,经历神经网络运算一通骚操作之后,输出的结果要和输入一样。 感觉是白费功夫,但是这也是这个算法的核心。

其次,下面是一个Autoencoder 结构简单的例子,大家能看出来,其实这是个缩小再放大的过程。

请输入描述

当数据经历整个神经网络,就是一个“压缩”再“解压”的过程。想象下,当把一个电影压缩,再解压。压缩解压之后,电影还是那个电影。 但是压缩后的“电影”其实是原电影的另一种存在形式。即,压缩后的电影也继承了原电影的特征值。

上图可以看出,神经网络将6个(蓝色)特征值 压缩成 2个(红色框框)神经元,再解压成6个蓝色。 当训练完之后,我们只用神经网络的前半部分,输入6个特征值,输出2个神经元预测结果。

请输入描述

换一个角度,原来的客户有600个数据特征,即600维度特征。Autoencoder就是用上面那个漏斗形的网络,将600个特征值降维到 二维。

即,将600个客户特征浓缩到 两维 特征。其实我并不清楚浓缩后的特征代表着什么。因为,这两个特征是浓缩600个特征值之后的结果,但是重要的是浓缩后的特征的数据的趋向性。

比如下图,每个点是一个客户。大家能发现明显的聚合趋势,能发现明显的极端值。这样就完成了第一步的客户特征值降维

请输入描述

总结下原理,其实这个算法背后的逻辑很直接也很好理解。就是通过将原来600个特征压缩再解压后,得出的还是自己。 所以,可以推断出压缩后的状态其实代表着自己本身的数据特征。

算法验证

当我看到这个算法时,我内心是抗拒的,是怀疑的。。。真的

因为,感觉太简单来,操作简单,理解简单,出结果也很简单。肯定有什么问题,接下来和大家介绍下我自己的思考

准确性

首先,非监督学习由于没有标签,肯定就没有准确性一说。那既然没有准确性一说,那只能通过实践A-B Test来测试;

可重复性

之前的文章有很简单的降到梯度下降的问题,简单的理解是找通过“下坡”找最低点。 例如下图,如果出生位子不好,不一定能下到最低点的地方。这还是3D的图,如果是600D ,那就更不确定来。

可重复性还带来一个问题,就是计算结果的不一致性,比如最后降到二维XY。 第一次run程序用户A:X=1 ,Y=2 ;第二次run可能是完全不同的结果。 这也是一个问题,但是我认为 XY的绝对值并不重要,重要的是60000个用户的趋向性。比如第一次run ABC 是抱团的,第二次run,他们也是抱团的。 当然这需要验证。

请输入描述

有代表性

另一个我想到的问题是,其出来的数据有代表性。 说到客户分层的代表性,自然是指的是结果能代表用户行为。这个,,,就更没办法验证来。但是退一步讲,人口特征能很大程度上代表用户行为吗? 在某一细分领域上,年轻女性都会有一致的动作倾向吗? 我不这么认为。

最后

最后,最近比较忙, 又半夜写了篇文章,希望对大家有帮助。 需要代码请留言,谢谢~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180619A1YQ8E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券