原文:
www.kdnuggets.com/2020/02/forgotten-algorithm-monte-carlo-simulation.html
评论
由 Ian Xiao,Dessa 的参与负责人
TL;DR — 当我们谈论机器学习时,我们通常会想到监督学习和无监督学习。在这篇文章中,我想讨论一个经常被遗忘但同样强大的算法:蒙特卡洛模拟。我将分享一个通用设计框架和一些技术,并提供一个互动工具。最后,你还可以在文章末尾找到一些好的模拟工具列表。
免责声明: 这不是由 Streamlit 赞助的,也不是我提到的任何工具或我工作的任何公司赞助的。我将数据科学和机器学习视为可互换的。*
喜欢你读到的内容? 关注我在 Medium、LinkedIn 和 Twitter 上。
在近期的机器学习(ML)崛起中,监督学习和无监督学习算法,如使用 深度学习 的分类和使用 KNN 的聚类,得到了大多数关注。当这些算法获得热情社区的高度赞扬时,一些同样强大而优雅的技术却在角落里静静地等待。它的名字是 蒙特卡洛 — 这个在原子物理学、现代金融和赌博中被遗忘而不应得的英雄(或者说是恶棍,这取决于你对这些问题的看法)。
注意:为了简洁,我将监督学习和无监督学习方法称为“ML 算法”,将蒙特卡洛方法称为“模拟”。
斯坦尼斯瓦夫·乌拉姆、恩里科·费米 和 约翰·冯·诺伊曼 — 洛斯阿拉莫斯的天才们 — 在 1930 年代发明、改进并推广了蒙特卡洛方法,目的并不那么高尚 (提示:不是为了原子弹)。观看视频了解更多。
蒙特卡洛模拟简短历史(YouTube)
如果我用一句话总结蒙特卡洛模拟,这里是:假装做一亿次,直到我们大概知道现实是什么。
在技术(和更严肃的)层面上,蒙特卡洛方法的目标是 近似 结果的期望,以考虑各种输入、不确定性和系统动态。这个视频介绍了一些对有兴趣的人来说的高级数学。
蒙特卡洛近似,YouTube
如果我必须强调仿较于机器学习算法的一个(过于简单化的)优势,那就是:**探索。**我们使用仿真来理解任何规模系统的内部工作(例如:世界、社区、公司、团队、个人、车队、汽车、车轮、原子等)
通过虚拟仿真重新创建系统,我们可以计算和分析假设结果,而无需实际改变世界或等待真实事件发生。换句话说,仿真允许我们提出大胆的问题并制定战术来管理各种未来结果,而风险和投资相对较小。
根据本杰明·舒曼,一位著名的仿真专家,仿真是过程驱动的,而机器学习是数据中心的。要产生良好的仿真效果,我们需要理解系统的过程和基本原理。相比之下,我们可以仅通过使用数据仓库中的数据和一些现成的算法来创建合理的预测。
换句话说,创建良好的仿真在财务和认知上通常更昂贵。我们为什么还要使用仿真?
好吧,考虑三个简单的问题:
-
你是否在数据仓库中有数据来表示业务问题?
-
你是否有足够的数据——无论是数量上还是质量上——来构建一个好的机器学习模型?
-
预测是否比探索更重要(例如,提出假设性问题并制定支持业务决策的战术)?
如果你对这些问题的回答是“否”,那么你应该考虑使用仿真而不是机器学习算法。
要创建一个蒙特卡洛仿真,至少需要遵循一个 3 步过程:
仿真过程,作者分析
如你所见,创建一个蒙特卡洛仿真仍然需要数据,更重要的是,需要对系统动态有一定了解(例如销售量和价格之间的关系)。要获得这种知识,通常需要与专家交谈,研究流程,以及观察实际业务操作。
要查看基本概念如何实现,你可以访问Yet Another Simulator——这是我使用Streamlit开发的一个交互式工具。
在欢迎页面上,你可以尝试各种输入设置,并观察根据你应用的函数,结果如何变化。
Yet Another Simulator的欢迎页面,作者的工作
除了基本示例外,该工具还包括 4 个案例研究,讨论了各种设计技术,如影响图、敏感性分析、优化和将机器学习与仿真相结合。
例如,在CMO 示例中,我讨论了如何使用影响图来帮助设计一个模拟以解决广告预算分配问题。
影响图,作者的工作
最终,你将踏入数据科学家的角色,建议首席营销官(CMO)。你的目标是帮助 CMO 决定广告支出金额,探索各种情景,并提出在不同不确定性下最大化回报的策略。
广告预算分配,作者的工作
我希望这些示例能说明蒙特卡罗模拟的工作原理,它相较于机器学习算法的优势,以及如何使用不同的设计技巧设计有用的模拟。
一些案例研究仍在积极开发中。请在此处注册,以便在它们准备好时接到通知。
我希望这篇文章提供了对蒙特卡罗方法的另一种视角;在今天的机器学习讨论中,我们常常忽视这样一个有用的工具。模拟具有许多传统机器学习算法无法提供的优势——例如,在巨大不确定性下探索重大问题的能力。
在即将发布的文章中,我将讨论如何在实际商业环境中结合机器学习和模拟以获得两者的最佳效果,以及如何阐明不同模拟情景的含义。
通过关注我的Medium、LinkedIn**或Twitter保持关注。
下次见,
伊恩
如何使用 Streamlit 和 DevOps 工具构建和部署机器学习应用
如何不在机器学习项目中应用敏捷
我如何应对部署机器学习的无聊日子
数字、五种战术解决方案和快速调查
很多数据科学家没充分考虑的一件事
如何为现实世界设计和实现强化学习
当我讨论仿真时,很多人会询问工具建议。这里有一份我了解的工具列表,选择适合你需求的工具。请享用。
-
AnyLogic (这可能是模拟专业人士的首选工具;免费增值)
-
Simio (免费增值)
-
Yasai (Excel 插件,免费)
-
Oracle Crystal Ball (免费增值)
-
SimPy (Python 包,免费)
-
Hash (创企,当前处于隐秘模式。创始团队相当强大。可能是免费增值)
决策树的历史 — pages.stat.wisc.edu/~loh/treeprogs/guide/LohISI14.pdf
聚类的历史 — link.springer.com/chapter/10.1007/978-3-540-73560-1_15
将仿真与机器学习结合的时机 — www.benjamin-schumann.com/blog/2018/5/7/time-to-marry-simulation-models-and-machine-learning
仿真的分类 — gamingthepast.net/theory-practice/simulation-design-guide/
蒙特卡洛方法及其工作原理 — www.palisade.com/risk/monte_carlo_simulation.asp
简介:Ian Xiao 是 Dessa 的参与负责人,负责在企业中部署机器学习。他领导业务和技术团队部署机器学习解决方案,并为 F100 企业改进市场营销和销售。
原文. 经许可转载。
相关:
-
数据科学很无聊(第一部分)
-
我们创建了一个懒惰的 AI
-
12 小时机器学习挑战:使用 Streamlit 和 DevOps 工具构建并部署应用
1. Google 网络安全证书 - 快速进入网络安全职业轨道。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持您的组织 IT 工作