数据与广告系列十一:从性别预测的CASE开始手撕机器学习代码

作者|黄崇远(题图:ssyer.com,CCO协议)  公号,数据虫巢(ID: blogchong)

 说好的带你们手撕代码。 阅读本文预计需要...我哪知道要多久,反正有点长,看你的理解能力了。

接上一篇《数据与广告系列十:开启机器学习之路》,我们打开数据与广告系列的机器学习相关的篇章,我们了解到了在整个广告的系统流程里,几乎每个环节,如果你愿意,都可以完美的嵌入机器学习的东西。

然而在上一篇,我们并未触及到任何关于算法实践,代码落地的东西,始终停留在场景和少量理论的维度上,甚至可以说任何非技术人员都可以理解。

我的微信签名是“Talk is cheap,show me the data”,标准翻译是“别扯这么多蛋,以数据说话”。今天我们不show data,我们来手撕代码,说不定撕着撕着,那些看似比较难的东西我们就懂了。

01

广告定向中的性别标签

在上篇文章中,我们曾经提到过一个机器学习的应用场景,那就是定向标签的挖掘,而性别标签则又是所有广告平台中最基础也是最常用的一个定向标签。

如下图,这是腾讯广点通平台上创建广告的时候,做定向条件设置的时候,可以看到的界面。

针对于性别标签,这是一个所有广告平台的标配,既然是标配,那意味着是一个常用的能力,那么就要保证覆盖要全,标签要准。

但是,并不是所有平台都拥有准确性别原始数据的,唯一当前我能想到的平台就是银行体系了,毕竟没有身份证你啥也办不了,既然有了身份证,那么就有了性别标签。

诚如腾讯如此大的体量,但并不是所有业务场景都需要用户授权身份证号的,毕竟是一个非常隐私的信息,非常规场景不能用也。所以,同样也面临着如何将性别标签覆盖全体用户的问题,其他平台就更不用说了。

对于所有广告平台来说,显性的增加可靠性别覆盖的方式,一方面是尽量的创建一些合理的业务场景来确保拿到最准确的身份证信息,比如防个沉迷啊,你总的证明你自己成年了,要做个信用评估啊,总的有官方认可的真实身份吧,等等之类。

除此之外,合法的第三方数据来源,这个就不深入展开说了。但不管怎么样,还是那句话,除了银行,都得解决这个问题。那么,就必然会面临如何预测未知性别的问题。

每个平台体系内,总是能通过上面几种方式拿到部分或者很大一部分明确性别的数据,那个就是已知标注的样本。通过已知预测未知,非常之标准的监督学习的问题,或者说典型的归属到分类模型的机器学习问题。

02


手撕数据来源

我们第一个场景就是来做性别的预测,拿到标注好的性别数据,然后再拿到用户对应的各种维度的数据,作为特征,最终预测出靠谱的结果。

对于各大平台来说,体量够大的话,方式对的话,总是能找到很多性别差异显著(差异区分度大,加大预测的可行性)的行为特征。对于我们来说,我们需要找到尽可能的合理以及看似真实的数据,才能更好的手撕代码。

我从kaggle上找到两份跟性别预测相关,且关注人数达数百以上的脱敏数据,一份是之前talkingdata提供的数据,包含用户性别标志,以及各种用户起卸停APP的行为数据,还有关联的APP类别数据等,如果你要去搜索,直接搜索“TalkingData Mobile User Demographics”即可。

但我没用这份数据,虽然下意识的认为这份数据会很靠谱,but,大达5GB,我的那个小小阿里云机,绝壁是跑不动的,加上还有跑模型训练。

所以选择了另一份数据,kaggle搜索“twitter-user-gender-classification”,由参赛方提供的脱敏twitter性别分类数据,看名字就很靠谱。但实际用了下,以及看了下评论,貌似真的不算靠谱,质量稍稍有点堪忧,总共2万多条数据,26个维度特征(绝大部分不可用)。

机器资源有限,精力有限,重点是了解这么一个机器学习的场景,以及实际的机器学习过程,大家不要在意这些细节啦。

03


提前的准备

在写代码之前,希望大家对于python有基础的认知,因为全程将由python完成,所以请自行学习python基础,请自行安装好anaconda3集成环境,请提前稍微熟悉一下python的编译集成环境jupyter notebook,以上,不懂得请goggle之,教程简直一大把。

所有数据预处理,清洗,都将使用numpy,pandas,绘制一些图可能会用到matplotlib等python工具库,虽然我们在文章的过程中可能会稍等学习,但是毕竟有限,请提前学习之。

大部分机器学习实践,都将使用sklearn2.X进行,文章涉及的部分会进行讲解,但毕竟时间有限,请先行了解。

为什么用sklearn?

因为python整套流程支持很足啊,数据的读入,清洗,观测,各种数学库,简直不要太方便,更何况,你觉得一个月几百块的阿里云机能跑的动深度学习的东西吗?连用个数据集,我都得掂量着用。

04


数据初探

任何机器学习的开头,都躲不开对于所持有数据的观测,连数据都不知道长啥样,你玩个锤子算法。

jupyter notebook的环境大概长这个样子,可以随意的创建文件夹,或者创建python文件,下面那个ipynb后缀的就是编译执行文件,不深入,请自行谷歌。

引入几个必然要用的包:

import pandas as pd #python知名数据处理包import numpy as np  #跟上面一样知名,还更古老import matplotlib.pyplot as plt  #同上知名,用于绘图,便于观测

读入数据:

data = pd.read_csv('./data/gender-classifier-DFE-791531.csv'                   ,header = 0                   ,error_bad_lines=False                   ,encoding='latin1'                   ,skip_blank_lines=True)#header=0,不需要自己指定表头,自带#error_bad_lines=False,错误行自动删除多余,就喜欢pd的各种聪明骚操作#encoding,编码,不多说#skip_blank_lines,空行跳过

看一下具体数据的样子:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值