首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

神经网络在客户分层上的应用—Autoencoder

一个原理很简单,操作很简单,但是应用起来费点劲的算法。

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

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

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

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

面对的问题

那么什么是autoencoder呢?

这个算法我在4月份就接触到了,但是直到现在也不知道它的英文名字。不过,名字并不重要,重要的是解决问题的方式,原理及应用场景。

那么,今天所要提到的就是Autoencoder在客户分层场景上的应用。一般的客户分层,可以分为人口特征和地理特征上的分层。比如,你的目标客户是北京 20~30岁的女性。但是传统的客户分层方法有自己的局限性,其中一个就是仅对客户的几个特征进行分类。比如性别,年龄、地理。

但是,当今社会,有大量的数据,个人的特征值也超出了传统人口特征、地理特征的范围。比如在社交平台上活跃度、旅行次数、月消费数量、日均上网时间、某个商品的消费频率等等。

那么,我们面对的问题,简单总结下就是,当我们拿到用户600个特征时,我们怎么对客户进行分层呢? 如何考虑600个特征的同同时,对用户进行分层呢?

算法原理

Autoencoder 在此问题上,能帮上一些忙。那么autoencoder是怎么工作的呢?

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

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

输入层:600个输入值

隐藏层: 暂略

输出层:600个输出值

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

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

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

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

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

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

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

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

这个算法的实际应用及代码展示将在下篇介绍。~

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券