蒙特卡洛算法及一般应用

简介和历史回顾

蒙特卡洛算法现在对于各行业的分析人员来说,应该都已不再是一个新鲜的名词了。它通常也被称为蒙特卡洛模拟,是一种以概率统计为指导的数值计算方法。说到模拟这个概念,如果举个不怎么恰当的例子来说,如果有一个硬币,出现正反面的几率不是公平的,那么如何能知道正面和反面出现的几率各是多少呢?一个简单的方法便是把这个硬币投掷10万次或100万次,然后跟据出现正反个数比作为概率。对于具体的应用而言,首先便是要设计一个可以把数值问题转化为概率问题。一个经典的例子便是蒲丰投针问题(1777年),既通过在一张画有许多固定间隔a的平行线的纸上,多次投掷长度为l的针(l<a),假定此针与任意一条平行线相交的概率为P,则有公式p=2l/(πa) ,其中π为圆周率。由此,便可通过大量的投针实验,统计相交次数,再通过概率估算来反推出圆周率。

然后由于现实实验模拟,一旦实验复杂,或是对精度有一定要求,那么进行一次试验的成本和需求的试验次数便会大大上升,从而使这种方法的实用性和效用便大大下降。而随着计算机科学的发展,通过电脑完成随机模拟的试验,大大地提高了这种计算方法的实用性。而是其名声大噪,或者说真正被命名为蒙特卡洛的,便是二战时研制原子弹的“曼哈顿计划”中的应用。

实现方法的工具

过去的蒙特卡洛模拟都需要使用编程工具或数学工具(一般也需要编程)编写代码来运行,对于特定的计算公式或方法,需要特定的代码。因此,即便是要实现一个简单的模拟计算,对使用者也有较高的要求,基本也需要数学,统计和计算机的知识技能。而近几年,随着数据分析挖掘需求的日益提升,越来越多的分析工具开始纳入这一重要的算法工具。虽然大多数的分析工具依然需要已语言命令形式输入,但也不乏窗口菜单界面的工具,例如SPSS的Statistics和最新版本的Modeler,提供了便捷的蒙特卡洛算法的实现方法。只需要给定数据的分布,和计算公式,就能直接得到计算结果的分布情况。

商业应用

如今的蒙特卡洛模拟被应用于金融,经济,生物及工程等各个领域。事实上,除去一些非常专业的应用外,还有很多日常的商业应用。举一个简单的例子,某零售商希望进行一次商业营销活动,并已经通过历史营销数据建立了相应预测模型,但不能确定待营销的客户名单中会有多少人响应,需要做多少的商品备货及预算。此时,便可使用蒙特卡洛模拟,根据客户整体数据,进行大量模拟响应测试,然后分析响应人数的分布情况,从而跟据各种结果出现的概率来判断可能需要应对的极端啊情况。

另一应用场景是对于财务分析管理,例如某企业发现了一个项目机会,未来可为企业带来定期的现金流收入,但流入的金额大小是不能完全确定的。此时,为了评估项目是否值得投入,及其投入风险,就可以利用蒙特卡洛技术,跟据同类项目的历史数据,模拟其未来的现金流大小以及市场折现率,帮助评估该项目的净现值,来辅助此类的重大决策。

简而言之,蒙特卡洛模拟方法最主要的应用点在于对风险和极端情况的未雨绸缪,大量的模拟运算并非为了预测最好的情况,而是为了防止最坏的情况发生,在如今越来越强调风险控制的商业理念下,其应用空间必然会越发的广阔。

作者:Shawn Pu, Solution Principle at AsiaAnalytics

 

Chinese, Simplified(简体中文)