共计 1720 个字符,预计需要花费 5 分钟才能阅读完成。
作者 |Michael Grogan
编译 |VK
起源 |Towards Data Science
蒙特卡洛这种办法在金融等畛域失去了宽泛的利用,以便对各种危险情景进行建模。
然而,该办法在工夫序列剖析的其余方面也有重要的利用。在这个特定的例子中,让咱们看看蒙特卡洛办法如何被用来为 web 页面浏览量建模。
以上工夫序列来源于 Wikimedia Toolforge,是从 2019 年 1 月到 2020 年 7 月维基百科上“医疗”一词的网页浏览量的工夫序列。数据都是按每日划分的。
咱们能够看到,工夫序列每天都显示出显著的波动性,并且显示了数据中一些奇怪的“峰值”的典型特色。或者说,在这些天中,搜寻该术语的次数特地高。
试图对这样的工夫序列进行间接预测通常是徒劳的。这是因为不可能从统计学上预测搜索词何时会呈现峰值,因为这会受到独立于过来数据的影响。例如,与衰弱无关的重大新闻事件会导致搜寻该词的顶峰。
然而,特地乏味的是咱们能够创立一个模仿,以剖析 web 页面统计的许多潜在场景,并预计在不失常的场景下这个搜索词的页面浏览量有多高或多低。
概率分布
当运行蒙特卡罗模仿时,重要的是要留神所应用的散布类型。
思考到页面浏览量不能为负,咱们假如散布是正偏态的。
以下是数据的柱状图:
咱们能够看到,散布显示正偏态,有几个离群值使散布尾部向右歪斜。
>>> series = value;
>>> skewness = series.skew();
>>> print("Skewness:");
>>> print(round(skewness,2));
Skewness:
0.17
此散布的偏态为 0.17。
QQ 图表明,除了呈现的异样值外,大多数值的散布都是正态分布。
然而,更可能的是,因为正偏态,该数据表示对数正态分布。咱们将数据转换为对数格局将导致散布的正态性。
>>> mu=np.mean(logvalue)
>>> sigma=np.std(logvalue)
>>> x = mu + sigma * np.random.lognormal(mu, sigma, 10000)
>>> num_bins = 50
这是对数数据的散布,更能代表正态分布。
此外,此散布的偏态当初为 -0.41。
>>> logvalue=pd.Series(logvalue)
>>> logseries = logvalue;
>>> skewness = logseries.skew();
>>> print("Skewness:");
>>> print(round(skewness,2));
Skewness:
-0.41
这表明有轻微的负偏态,但 QQ 图仍显示正态分布。
蒙特卡罗模仿
既然数据曾经被适当地转换,就能够生成蒙特卡罗模仿来剖析页面浏览量统计的潜在后果范畴。页面浏览量依照所选的散布以对数格局示意。
首先,计算工夫序列的平均值和稳定率(用标准差掂量)。
>>> mu=np.mean(logvalue)
>>> sigma=np.std(logvalue)
>>> x = mu + sigma * np.random.lognormal(mu, sigma, 10000)
>>> num_bins = 50
而后用 x 定义相应的数组,应用 mu 和 sigma,再生成 10000 个随机数,这些随机数依照定义的均值和标准差遵循对数正态分布。
array([5.21777304, 5.58552424, 5.39748092, ..., 5.27737933, 5.42742056, 5.52693816])
当初,让咱们绘制直方图。
同样,这些值以对数格局示意。咱们看到这个形态代表正态分布。如前所述,蒙特卡罗模仿的思维不是预测网页浏览量自身,而是提供在许多不同的模仿中网页浏览量的估计值,以便确定
- 1)大多数网页浏览量的范畴;
- 2)散布中极值的范畴。
论断
在本文中,你看到了:
- 蒙特卡罗模仿的利用
- 偏态在定义散布中的作用
- 如何进行模仿以辨认取得极值的概率
原文链接:https://towardsdatascience.co…
欢送关注磐创 AI 博客站:
http://panchuang.net/
sklearn 机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/