恭喜,您的开机速度击败了全国7%的用户

恭喜,您的开机速度击败了全国7%的用户

[专栏] / 挖课机 [作者] / KEN

世界上最遥远的距离,不是没有网络;而是万事俱备,电脑还没开机。。。而我还TM死的不明不白~

>> 点击查看相关课程 :和小蚊子学数据分析

你可曾在一个月黑风高的夜里,或是一个晨露未晞的清晨...

图片

倒上一杯饮料

切好一盘西瓜

图片

准备一包纸巾

图片

按下电脑的开机键...

图片

等待着...

图片

等...

图片

...

有时不用等那么久:

图片

但更多的时候...

图片

...

所以大家一定很好奇开机时间是怎么计算的吧!

图片

不管你们好不好奇,不如先脑洞大开,想象一下,这个功能软件工程师是怎么设计的呢?

你可能会觉得它是这样子实现的:

1、收集所有用户的开机时间的数据,排好序放在一个数据库中;

2、然后根据你的开机时间,找出你的排名,除以总用户数,就是你击败电脑占比。

图片

是的,这样子设计排名算法是非常合理,但是有以下几个问题:

1、你电脑开机的时候,没有连接网络怎么办呢?那就无法请求到所有的用户的数据了对吧。

2、就算所有的用户的数据,已经下载到你本地,根据不完全统计,180*2的用户数,估计也超过10亿了吧,上10亿行的数据进行比较统计,放在开机这个地方,恐怕不妥,而且做过软件开发的人都知道,这种同步数据的方式,非常蛋疼。

图片

那么我觉得它是怎么设计的呢?

我会这样子设计,首先,收集尽量多的用户的开机时间,然后,查看时间的分布如何。

Step 1. 查看时间分布

注:以下代码均为R语言代码实现

图片

图片

从这个图中,我们可以看到,开机时间貌似符合正态分布,有戏!

但是我只能用貌似,因为我还没有检测数据的正态性,好,我们使用R来检测一下开机时间是否符合正态分布。

Step 2. 检测正态分布

绘制QQ图,QQ图判断法:

查看我们的数据,是否绝大部分落在中间直线的附近。

图片

图片

可以看到,QQ图中,所有的点都落在了中间的直线上,直观上我们就可以判断这个数据的分布符合正态分布了。

图片

验证了数据是正态分布的之后,事情就变得非常简单了,下面我们来看看如何进行建模。

Step 3. 查看时间分布

1、建立正态分布的模型。

只需要求出正态分布的均值和标准差即可,也就是:

图片

2、保存这个数据在软件中。

有一个用户开机时间为38秒,那么他的排名是多少呢?

图片

也就是说,我们使用pnorm函数,根据正态分布的性质,就可以求出这个用户的排名是87.5%了。

图片

这样子设计这个功能,是否非常地简单,快捷呢?但是很多人可能想不到是这样子设计的。而说起统计学,大家的第一反应可能是这样的:

图片

或是这样的:

图片

但统计学可不像这么挫,正态分布也是一个完全可以让计算机自动计算的问题。

更多R语言相关实战课程,戳这里享受优惠和惊喜的学习体验!


注:本文没有使用到奇虎360公司的任何数据,所有数据都是通过模拟出来的,方案也是我个人YY的,如果做对了,纯属巧合,如果不对,你们可以批判我,请不要告我,谢谢周先生不杀之恩。

文章来源:小蚊子数据分析 ID:wzdata

作者:KEN 已授权转载