从“脱单”这件小事看数据分析与机器学习(上)

本文由公众号 AIU人工智能(ID:ai_cda)出品,转载需授权

故事背景

Hello,大家好,我是一个在帝都漂了好几年的北漂,刚开始的时候还好,随着年纪的增长每次给家里打电话或者回家都像是经历一次渡劫,当然每每渡劫都不成功,被父上母上大人联手劈的外焦里嫩。如果有和我差不多年纪的单身哥们儿大概会懂这种感受.过程是这样的,最开始的催找女朋友---中期即使没有女朋友也要直接催婚—后期的连女朋友都没有就直接催生,我也是招架不住.

哦,忘了交代,至于我为什么还没有女朋友,是不是我气质猥琐又不上进?必须不是啊,想当年我也是社会主义接班人来着,绝对是五官和思想一样端正,作为一名数据分析师,兢兢业业,为公司创造多大价值这种涉及商业机密的事儿就不多说了,所以我没女朋友真的单纯的是因为一没时间去找,二是圈子太小,平时公司的团建看着出席的一双双一对对的,不知各位有没有体验过冷冷的狗粮胡乱的往嘴里塞是什么感受,其实也还好,公司男多女少,单身汪们平摊一下火力,还能剩下点肚子吃点团建餐。

然而,作为一个正常的男人,还是需要妹子的啊!可是,身为公司栋梁,平时的工作,我要说忙成狗吧,狗都不乐意,毕竟我家的狗子平时除了拆家来活动活动筋骨之外就没啥可忙的!所以,我也没时间去各种活动认识妹子,当我再次把这样的理由报告给电话另一端的母上大人时,母上大人怒了:”没时间参加什么活动,就不能从网上找一个嘛?亏你还天天炫耀没有什么是你不能分析的,你怎么就不分析分析怎么找个女朋友?!“ 哇塞!母上大人英明啊!以前觉得网上各种交友网站不太靠谱,鱼龙混杂,我去粗取精一下不就好了嘛,在我眼里,一切皆数据啊,数据提取出来分析分析找出靠谱的数据就好了嘛!

“脱单”大计正式开始执行

第一步

OK,说干就干,既然是要通过数据分析来找一个女朋友,当然是要走个完整流程,第一步,确立目标!我的目标是要结交一个以结婚为目的的女朋友!不要小瞧这个目标,里边包含的学问可不少,首先,要进行数据分析,目标一定要明确!目标犹如灯塔,唯一且明亮,这样才能指引小船不偏离航道。当然很多时候目标都是阶段性的,在一个大的项目里边,会有一个大的总目标,而总目标又通常会被拆解成若干个小目标,一一攻破。 就像现在我的目标,要结交一个以结婚为目的的女朋友,就可以拆解成几个小目标,首先要先获取到妹子的信息,其次再进行梳理筛选自己中意的,再次要去了解妹子,知己知彼,而后要创造和妹子接触的机会,最后发展成我的女朋友,当然后边还有终极目标,就是成功娶回家喽。咳咳,目标定的还不够远大,毕竟以后我们孩子要叫什么名字上哪所幼儿园之类的我还没开始想……

第二步

好了,目标已经确立好,接下来第二步,获取数据!enmmm,数据从哪里获取比较好呢,有那么多相亲网站交友软件,作为数据分析师,任何决定可都不是拍脑袋决定的,选择数据源也一样,而且数据源的质量直接影响后期我能找到合适妹子的概率,或者说影响我能找到合适妹子的效率,所以,数据源的数据质量不容忽视。在工作中,大多数时候我的数据源来自公司数据库和网页公开数据,现在我的数据源就仅限于网页公开数据了。至于我的数据源是怎么选择的呢,特别的简单,直接爬了几个相亲网站的数据,虽然据说有一些信息不真实,好在基数够大,况且我只找一个女朋友,多了,咱也不敢要啊,不,是多了我也不会要的,我可是思想端正的社会主义好青年!思想工作结束,继续我的数据分析工作!去写爬虫!

爬不同的网站,写一套爬虫是不够的,而且网站数据更新,爬取同一个网站的爬虫也要有改变。不过主要语法框架是差不多的,修改起来并不难,而且Python这种语言,开发效率相当高,重写一套爬虫对于我这种经常需要爬网站的数据分析师来说,根本就不叫事儿嘛!所以,最开始几天的下班后,我一直在爬啊爬,爬啊爬,爬啊爬…….尽量多爬几个网站数据,广撒网,尽量把最有可能的那个她网罗进我的数据库中!当然我爬取的都是公开的数据,比如昵称、编号、地区、昵称、爱好、对另一半要求以及网站给出的匹配度等等。至于我爬了哪些网站的公开信息嘛,保密啊,毕竟这些网站大佬们又不会给我打广告费,哈哈哈!

第三步

终于,搞定了数据源之后,我到了第三步,数据清洗!这一步是我比较不愿意面对的一步了,为什么呢,因为工作量实在是有点大,根据我多年的从业经验,数据清洗在数据分析的整个流程中大概占到了60%--80%的工作量。类似于做菜前的摘菜、洗菜、切菜等等工作,貌似饭店的配菜工。想想有这么一个配菜工,一大堆的菜要摘,不符合要求的菜叶子要都剔除出去,不能有遗漏,万一客人在盘子里发现了一片颜色不对的烂叶子,这是会影响饭店形象和收益的。OK,好不容易经过万分仔细的摘菜之后,开始洗菜了,保证每片菜叶子都洗干净,一点沙粒都不能留,要不硌着客人的牙了咋办?终于摘菜洗菜后,到了切菜的环节,考验刀工的时候到了,一定要切的粗细均匀,卖相太差会显得我们做菜很不专业!

现在大家都能明白的配菜过程,映射到数据清洗过程是这样子的:首先,查看数据的全貌,做一个简单判断,比如我需要的数据是有时间要求的,如果一个妹子半年都没登录过相亲网站,即使她的各项条件都特别的吸引我,也没啥用啊,人家可能是找到如意郎君了,可能是受了情伤再也不相信爱情了,可能是沉迷于工作无法自拔了……不管什么原因吧,人家妹子都不来这个网站了,我也联系不到她啊!所以我的数据是按照妹子们最近一次登录的时间来排列的,只要最近登录时间为两周之内的,前边说过,作为一个数据分析师,任何决定都不是拍脑袋决定,然而,凡事有例外,如果这是公司项目,我会去爬取更多的数据,然后算一下,大概多久不登录的账户,在后期的日子里会再也不登录了,但是这是我自己的事儿,加上我时间有限(好吧,其实我还有一点想偷懒),所以就没有去爬取更多的数据做这项分析,只是抽样了一些数据简单看了下,大概把时间节点定在了两周。当然不是说登录时间两周前的就完全没希望,这只是一个概率的问题而已。

到了这一步,开始我真正的摘菜洗菜切菜的工作,不不不,是真正的数据清洗工作。首先,信息填写不全的,关键信息有缺失的那种,就可以直接删除了,比如我都不知道对方妹子多大,在不在我的择偶范围之内的这种,就只能删掉了,否则万一经过我的各种分析出来一个我特别中意的妹子,联系后发现人家不是比我大太多就是小太多,这就尴尬了对不对,所以工作要做在前边,尽量考虑到各种可能发生的情况,要不然事情做到一半或者即将结束的时候发现问题要推倒重来实在是令人崩溃。所以,第一步来处理缺失值问题,有些缺失值不太影响最后结果的,比如昵称这种,在一定程度上可以反映对方的性格或者偏好,但是对最终的结果不会影响太大,就不用因为它的缺失而删除整条记录了,但是放任不管,后期数据扔进模型的时候又会受到影响,就可以考虑填充一下啦。至于用什么填充,可以考虑用编号填充,这样填充的记录不会有重复。

处理完缺失值后该处理重复值了,重复的记录对分析的结果还是很有影响的,想象一下,经过各种分析,最后我终于挑出来三五个妹子觉得可以沟通互相了解一下,结果发现其中三条记录信息都是同一个妹子的,会不会觉得自己损失了一大片森林?重复记录的处理就没什么其他选择了,果断删除,行动要快,动作要帅,装X完毕!最后是离群值的处理,怎样的数据算离群值呢,比如说我可以对年龄数据画一个箱线图,设置参数,使年龄大于多少的和小于多少的成为离群值,至于这个多少是哪个数字嘛就不方便透露了,毕竟这只是我的个人倾向,并且处在这两个年龄阶段的妹子也不是不好,就像上边筛选登陆时间的理念是一样的,只是概率问题,我与异性接触的有限经验显示这两个年龄段的妹子和我能聊到一起的概率不太大而已。然后,在箱线图上下限之间的记录就会被留下来了。

到这里,数据清洗的工作好像就已经完成了,留下的数据是完整干净符合要求的数据了。事实真是如此么,如果这么简单粗暴,我还怎么好意思宣称自己是公司的栋梁,是能够为社会主义建设贡献力量的好青年呢?事情当然不会这么简单,毕竟这中间隐藏着很多虚假信息啊,据说有各种托,作为一个平时勤俭节约一心在攒老婆本儿的五好青年,必须不能落入托的圈套去各种花钱买买买,所以要在数据进入模型前把这些虚假信息筛选剔除出去。就像是每个公司的业务不同,没有哪套制式的流程能够适应所有公司,都是需要基于具体业务的。

单纯的从数据层面上来说,前边的流程的确也算是完成了清洗,但是从业务层面来说还远远不够,这也是数据清洗工作量比较大的原因之一,需要根据具体业务调整清洗的标准呢。所以接下来就是要剔除虚假信息。要剔除虚假信息,首先需要对虚假信息进行判定,具体的标准就不透露,我保证不了这套标准能够百分百的剔除虚假信息还不误删正常信息,所以呢,对于我自己这个“脱单”项目的数据清洗工作就算是完成啦。

(未完待续,本故事纯属虚构,如有雷同,纯属巧合)

你可能感兴趣的:(从“脱单”这件小事看数据分析与机器学习(上))