[专栏] / 挖课机 [作者] / KEN
世界上最遥远的距离,不是没有网络;而是万事俱备,电脑还没开机。。。而我还TM死的不明不白~
>> 点击查看相关课程 :和小蚊子学数据分析你可曾在一个月黑风高的夜里,或是一个晨露未晞的清晨...
倒上一杯饮料
切好一盘西瓜
准备一包纸巾
按下电脑的开机键...
等待着...
等...
...
有时不用等那么久:
但更多的时候...
...
所以大家一定很好奇开机时间是怎么计算的吧!
不管你们好不好奇,不如先脑洞大开,想象一下,这个功能软件工程师是怎么设计的呢?
你可能会觉得它是这样子实现的:
1、收集所有用户的开机时间的数据,排好序放在一个数据库中;
2、然后根据你的开机时间,找出你的排名,除以总用户数,就是你击败电脑占比。
是的,这样子设计排名算法是非常合理,但是有以下几个问题:
1、你电脑开机的时候,没有连接网络怎么办呢?那就无法请求到所有的用户的数据了对吧。
2、就算所有的用户的数据,已经下载到你本地,根据不完全统计,180*2的用户数,估计也超过10亿了吧,上10亿行的数据进行比较统计,放在开机这个地方,恐怕不妥,而且做过软件开发的人都知道,这种同步数据的方式,非常蛋疼。
那么我觉得它是怎么设计的呢?
我会这样子设计,首先,收集尽量多的用户的开机时间,然后,查看时间的分布如何。
从这个图中,我们可以看到,开机时间貌似符合正态分布,有戏!
但是我只能用貌似,因为我还没有检测数据的正态性,好,我们使用R来检测一下开机时间是否符合正态分布。
绘制QQ图,QQ图判断法:
查看我们的数据,是否绝大部分落在中间直线的附近。
可以看到,QQ图中,所有的点都落在了中间的直线上,直观上我们就可以判断这个数据的分布符合正态分布了。
验证了数据是正态分布的之后,事情就变得非常简单了,下面我们来看看如何进行建模。
1、建立正态分布的模型。
只需要求出正态分布的均值和标准差即可,也就是:
2、保存这个数据在软件中。
有一个用户开机时间为38秒,那么他的排名是多少呢?
也就是说,我们使用pnorm函数,根据正态分布的性质,就可以求出这个用户的排名是87.5%了。
这样子设计这个功能,是否非常地简单,快捷呢?但是很多人可能想不到是这样子设计的。而说起统计学,大家的第一反应可能是这样的:
或是这样的:
但统计学可不像这么挫,正态分布也是一个完全可以让计算机自动计算的问题。
更多R语言相关实战课程,戳这里享受优惠和惊喜的学习体验!
注:本文没有使用到奇虎360公司的任何数据,所有数据都是通过模拟出来的,方案也是我个人YY的,如果做对了,纯属巧合,如果不对,你们可以批判我,请不要告我,谢谢周先生不杀之恩。
文章来源:小蚊子数据分析 ID:wzdata
作者:KEN 已授权转载