Home >Backend Development >PHP Tutorial >如何做一个算法估算出一个不定时抓取到一个APP每天的下载量

如何做一个算法估算出一个不定时抓取到一个APP每天的下载量

WBOY
WBOYOriginal
2016-06-06 20:13:06990browse

假设每天我固定时间去某一个网站,比如豌豆荚抓取某一个APP的下载量,如果每次都是固定时间抓取,我肯定能够抓到每天的下载量。

但我无法做到每天固定时间抓取,我只能每天不固定时间抓取一次,如何用算法估算出某一天的下载量。

回复内容:

假设每天我固定时间去某一个网站,比如豌豆荚抓取某一个APP的下载量,如果每次都是固定时间抓取,我肯定能够抓到每天的下载量。

但我无法做到每天固定时间抓取,我只能每天不固定时间抓取一次,如何用算法估算出某一天的下载量。

数学题

数据不够的时候怎么估算结果?第一步,做假设,限定一下。

1) 最简单的一种假设,每两次抓取的时间之间,用户下载次数的平均的。

昨天、今天、明天抓取到的总量, S0,S1,S2;
昨天、今天、明天抓取的时间点, t0,t1,t2;

那么今天的总量 = (t1 - 今天0点)/(t1 - t0) (S1 - S0) + (今天24点 - t1)/(t2 - t1) (S2 - S1);

这个值,对于一般的估算每天下载总量是够了。
但是缺点是用户下载频次在采集点突变不合常理,如果APP是新品或者遇到宣传或者遇到爆发点,这个估算的单天偏差就会很大。

2) 较细致的假设:用户下载次数的变更是平滑的,不会突变。

多点连成平滑曲线的问题,可以参考贝塞尔曲线公式。我就不做推导了,只写几个特点。

在数据足够多时,模拟的曲线平滑,但是数据少时,细节数据也只是看起来真实,其实也不值得参考。
多点曲线,在增加新的点(又采集了一天的数据),整体的曲线都会变动,不稳定。

总结来讲,就用第一种吧,谁让数据不够多呢。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn