根据用户的一些特征数据,如果能推测出用户的性别借此提高产品的服务质量、广告的精准性等都是极好的。

机器学习方法有很多,而且一般都可以达到不错的效果,比如svm或神经网络等。

本文使用的代码参考——《TensorFlow练习18: 根据姓名判断性别》

但原文代码已经无法直接跑起来,对于最新的TensorFlow需要酌情调整部分参数和函数名等,根据报错调整即可比较容易,文末我也可以考虑放出自己的代码,看心情吧 O(∩_∩)O~

下面我们开始一步步剖析原文中用到的word embedding方法:

  虽然word embedding通常是用于自然语言处理的,但其实用于分析用户性别也不错,通过训练word embedding可将一句话分为积极、消极或高兴、生气等态度,所以把用户特征当做一句话,分析出男女(相当于这句话的态度)自然是可行的。

  word embedding中用到了卷积神经网络,关于什么是卷积神经网络,可参考这篇知乎回答——《CNN(卷积神经网络)是什么?有入门简介或文章吗?》,讲解的深入浅出,非常适合入门理解。

  而对于《TensorFlow练习18》中的代码只有一类特征就是姓名,先将名字中每个字向量化(前57行代码)并用于embedding计算和卷积计算等,实际情况下可能不会知道姓名而且也会做数据脱敏,当然这都是后话,通常的特征数据类型有设备类型、安装的软件等,这些特征也要先经过向量化处理,比如设备A,软件x、软件y、软件z,把其中每项当成原文中一个字来做向量化即可,转换之后就变成了4个数值(下文简称向量值),向量值才是计算机可以理解的信息。

  接下来就到了最关键的embedding层了,至于这个embedding到底是怎么回事,可以参考这篇文章《TensorFlow学习笔记3:词向量》,核心就是上述向量值太简单了,没有相关性,无法直接用于计算卷积神经网络,所以在训练模型过程中用embedding算法得出每个向量值在多个维度的语义和相关性数据。原文中embedding_size=128,所以就会为每个向量值计算128维的数据,当然对于实际的应用场景可能维度太多反倒会适得其反,可以调整embedding_size多训练几个模型来确定最适合的值,比如我最终确定embedding_size=16准确率最高。

  在embedding层之后就是卷积层和池化层了,还有dropout层,这些在《CNN(卷积神经网络)是什么?有入门简介或文章吗?》也有详细介绍,就不赘述了。原文中filter_sizes = [3,4,5]一共三项,所以一共三层卷积,而每层卷积的感受野分别为3、4、5,至于num_filters=128即每层卷积有128个卷积核(可以认为是128种滤镜)。另外其中的filter_sizes也是可以根据应用场景适当调整的,num_filters也可以调下试试,不过我感觉调整num_filters对于我的场景帮助不大。

未完待续

深度学习word embedding猜测性别初探的更多相关文章

  1. 深度学习中Embedding的理解

    这学期为数不多的精读论文中基本上都涉及到了Embedding这个概念,下面结合自己的理解和查阅的资料对这个概念进行一下梳理. ===================================== ...

  2. 广告行业中那些趣事系列9:一网打尽Youtube深度学习推荐系统

    最新最全的文章请关注我的微信公众号:数据拾光者. 摘要:本篇主要分析Youtube深度学习推荐系统,借鉴模型框架以及工程中优秀的解决方案从而应用于实际项目.首先讲了下用户.广告主和抖音这一类视频平台三 ...

  3. AI安全初探——利用深度学习检测DNS隐蔽通道

    AI安全初探——利用深度学习检测DNS隐蔽通道 目录 AI安全初探——利用深度学习检测DNS隐蔽通道 1.DNS 隐蔽通道简介 2. 算法前的准备工作——数据采集 3. 利用深度学习进行DNS隐蔽通道 ...

  4. 基于深度学习的人脸性别识别系统(含UI界面,Python代码)

    摘要:人脸性别识别是人脸识别领域的一个热门方向,本文详细介绍基于深度学习的人脸性别识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中可以选择人脸图片.视频进行检 ...

  5. 深度学习课程笔记(十一)初探 Capsule Network

    深度学习课程笔记(十一)初探 Capsule Network  2018-02-01  15:58:52 一.先列出几个不错的 reference: 1. https://medium.com/ai% ...

  6. 吴恩达《深度学习》-课后测验-第五门课 序列模型(Sequence Models)-Week 2: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入)

    Week 2 Quiz: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入) 1.Suppose you learn ...

  7. DeepMind背后的人工智能:深度学习原理初探

    去年11月,一篇名为<Playing Atari with Deep Reinforcement Learning>的文章被初创人工智能公司DeepMind的员工上传到了arXiv网站.两 ...

  8. 深度学习初探——符号式编程、框架、TensorFlow

    一.命令式编程(imperative)和符号式编程(symblic) 命令式: import numpy as np a = np.ones(10) b = np.ones(10) * 2 c = b ...

  9. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

随机推荐

  1. Java并发编程之synchronized关键字

    整理一下synchronized关键字相关的知识点. 在多线程并发编程中synchronized扮演着相当重要的角色,synchronized关键字是用来控制线程同步的,可以保证在同一个时刻,只有一个 ...

  2. iOS开发(3):tips提示 | 如何提示一行文字或一个图片

    我有一个需求:在点击或长按某个按钮时,显示提示,包括简单的文字提示,还有复杂一点的图片甚至是动态图的提示(可能还要加上文字),怎么实现呢? (1)文字tips 使用之前介绍的qmuikit里面的QMU ...

  3. android开发(1):底部导航条的实现 | navigation tab | activity的创建

    底部导航条,在iOS中叫tabbar,在android中叫bottombar或bottom navigation,是一个常用的切换页面的导航条. 同样,如果有良好的第三方库,我们应该优先考虑,能用好别 ...

  4. centos7环境开启WIFI热点

    1.环境介绍 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@localhost ~]# u ...

  5. RabbitMQ在分布式系统中的应用

    怎么保证可靠性的? RabbitMQ提供了几种特性,牺牲了一点性能代价,提供了可靠性的保证. 持久化当RabbitMQ退出时,默认会将消息和队列都清除,所以需要在第一次声明队列和发送消息时指定其持久化 ...

  6. 三、TortoiseGit之配置密钥

    TortoiseGit使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥. 也就是说使用 ssh-keygen  -t rsa  -C "username@email.co ...

  7. nodejs+nginx获取真实ip

    nodejs + nginx获取真实ip分为两部分: 第一.配置nginx: 第二.通过nodejs代码获取: 其他语言也是一样的,都是配置nginx之后,在http头里面获取“x-forwarded ...

  8. AD预测论文研读系列2

    EARLY PREDICTION OF ALZHEIMER'S DISEASE DEMENTIA BASED ON BASELINE HIPPOCAMPAL MRI AND 1-YEAR FOLLOW ...

  9. netty源码解解析(4.0)-7 线程模型-IO线程EventLoopGroup和NIO实现(二)

    把NIO事件转换成对channel unsafe的调用或NioTask的调用 processSelectedKeys()方法是处理NIO事件的入口: private void processSelec ...

  10. FFmpeg时间戳详解

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10584910.html 1. I帧/P帧/B帧 I帧:I帧(Intra-coded pi ...