AI智能总结
以Python作为精算平台 一系列关于使用Python进行高效精算建模的短篇论文 卡罗尔·麦杰耶夫斯基·迈赫迪·埃切勒 使用Python的趋势正在上升。虽然这不是新闻,但在近年来,这种编程语言在各种精算应用中稳步站稳脚跟,其在精算领域所产生的涟漪似乎正在扩大。在本文中,作为一篇文章系列中第一篇关注Python在精算建模中的文章,我们将探讨Python是否能更进一步,获得其应有的地位,成为精算建模平台。 引言 根据大多数衡量标准,Python目前是最常用的通用编程语言1,为各种应用程序提供实施平台,从作为一些最热门网站和高级科学模拟的后端,到成为人工智能(AI)大型语言模型(LLM)的支柱。凭借其广泛的库和软件包生态系统,Python可以轻松地为几乎所有目的使用,并且可能是数据科学、机器学习和AI应用最受欢迎的环境。其可访问性和简单性使其成为大学课程的吸引人的选择,因此我们观察到在精算领域对Python的兴趣和流行度有所增加,这并不令人意外 。 也一直在增加,对模型质量的要求也是如此。通常不再足够(或不合理)仅仅使用Python脚本或笔记本形式的模型。更倾向于一个合适的、适合生产环境的软件应用程序。 因此,我们希望重新审视Python在精算应用中的主题,并通过一系列简短出版物来探讨在使用该语言时可能遇到的一些重要问题、决策和议题。虽然Python的基础知识易于学习,而且在如今常常在大学里教授,但设计和开发复杂、生产级且高效的模型需要显著更多的专业知识,尤其是对于很少同时也是软件工程师的精算师而言。 使用Python在精算建模中绝非新事物。Python已在精算工具箱中使用了数年,主要应用于非寿险领域和作为辅助脚本。网上可以找到大量关于在精算领域使用Python的文章。Milliman也针对该主题发布了简报和白皮书,包括一份一般性介绍2以及一个更专业的应用生活保 险,3分别地。基于我们最近的经历,似乎在保险和风险领域,Python越来越受到关注。新一代精算师都具备Python技能,并且更愿意将其作为一个更广泛的应用领域的平台。Python作为当今人工智能研究和应用的主要语言这一事实,无疑增加了其吸引力和流行度。在Python中考虑的解决方案的复杂性和广度有 在第一篇论文中,我们将探讨关于将Python作为精算应用建模平台的一些真相与神话,并帮助读者回答一个基本问题:Python是否是一个好的精算建模平台选择? 精算建模平台 在决定一个软件平台或编程环境是否为特定目的的良好基础时,应考虑许多因素。对于精算建模,一个合理的起点可能是: □模型性能 □培训、文档和支持 □可靠性 □广泛使用 □通用性和互操作性 1.参考“生态系统和社区”部分中的排名。2.McGinleyD.(23May2021).Python的崛起:强大的稳健计算软件。Milliman简报。检索于2025年3月24日,从https://www.milliman.com/en/insight/The-Rise-of-Python-Powerful-robust-calculation-software. 3.MaciejewskiK.,EchchelhM.,SznajderD.(2023年3月13日).构建高性能住宅生活投影和ALM模型:Python中架构和实现考虑.Milliman白皮书.获取于2025年3月24日,从https://www.milliman.com/en/insight/building-in-house-projection-alm-model-python. 性能是一个明显的点,因为每个人都希望他们的模型尽可能快地运行 (甚至更快)。尽管许多人低估了选择正确的算法、数据结构和代码优化的重要性,这些都是快速运行时间的关键因素,但编程语言或软件平台的选择也对性能有显著影响。 Python性能 考虑将Python作为精算建模平台时,最常被问到的问题和最大的担忧之一就是它是否足够快。对Python的一个常见批评是它很慢,因此可能不适合精算建模。还有一些基准测试在流传5,表明与其他大多数编程语言相比,Python表现不佳。 学习易用性对于精算建模目的来说是一个非常重要的因素。大多数精算师,即使是在建模领域的精算师,也不是软件工程师或计算机程序员。他们通常更倾向于易于理解、有良好文档说明,并且有良好级别的培训和支援,以便在遇到问题时能够获得帮助。 一方面,这是真的。Python没有将执行速度作为优先考虑。它是一种解释型语言,这意味着源代码在调用脚本时被分析并转换为可执行代码,而不是像编译型语言那样提前准备。这显然会增加执行结果的等待时间。 另一个重要方面是可靠性。这可以意味着几件不同的事情。在最狭义的理解中,它提供了一个稳定的计算环境,并能提供可重复的结果。但从更广泛的背景来看,其他一些重要的元素包括遵循现代开发运维 (DevOps)技术的能力4为了模型开发、测试和部署,并确保平台能够长期得到维护和支持。 然而,如果使用得当,采用高性能计算库,Python能够使用户实现非常快的运行时间。这里有几个需要考虑的事情。 以下这一方面可能看似不太重要,但通用编程语言或软件的广泛使用意味着存在大量熟悉它并能被雇佣的人员储备,以防员工流动或团队扩张。这在精算建模的情况下尤其重要,因为资源在大多数市场中通常是稀缺的。将自己锁定在某个特定软件或编程语言上,从长远来看肯定会成为一个问题。 尽管纯Python并非特别快,但存在大量公开的Python库专注于性能。这些库是用C或C++等快速语言编写的,可以直接从Python内部使用,结合了两种语言的最佳特性。在科学和数据科学社区中,使用这些库是一种普遍做法,每天有数百万用户在使用。几个库允许将关键的计算密集型Python代码块预编译成高效的目标机器代码,为用户提供简单Python语法与媲美最快可用语言的性能的结合。 最后但同样重要的是,如果所选的语言或软件平台配备了丰富的库,这些库可用于各种应用和领域,则很有帮助。这通常与系统的开放性 、广泛的活跃用户社区以及与其他系统和流程无缝集成的可能性相关联。 当然,这些点只是众多可能标准的主观选择。每个人和组织在选择建模平台时,可能会有自己的额外偏好和优先级,例如第三方供应商的独立性、与公司或团队中已使用的工具的一致性、成本等。 其次,许多比较不同编程语言的基准测试主要关注纯粹的算法问题,这些问题可能无法代表精算模型的计算复杂性。因此,如果不了解完整背景和精算用例的具体情况,其结果可能会具有误导性。精算模型通常侧重于统计计算、中等规模数据处理或大量重复计算(模拟或个人保单建模),这些计算可以被向量化。如前所述,针对这些目的的每个方面都有高度优化的库,它们最大限度地减少了纯Python带来的负面影响。 4.持续交付指的是软件开发运营;广泛接受的指南;以及自动化、协作、敏捷、可靠和安全的迭代软件改进的标准,能够快速交付更好的产品。详见以下章节。 5.佩雷拉R.等人,(2021年1月4日).基于能源效率的编程语言排名.获取于2025年3月24日,自 https://haslab.github.io/SAFER/scp21.pdf 在实际中,人们不会像在一般基准测试中那样使用Python来处理实际的精算用例。专注于精算应用的基准测试显示出非常不同的结果。6 并且,对于一位深思熟虑的读者,还有一个最后的问题:如果它的性能真的这么差,那么处理极其计算密集型生成式AI的尖端科技公司会选择Python作为首选语言吗? 第三,一些基准测试将编译语言的执行与脚本语言的完整执行进行比较。虽然对于以毫秒级执行的极速基准测试而言,这确实可能造成显著差异,但在运行需要分钟(或在极端情况下甚至需要小时)的精算模型时,Python脚本开始时额外的几秒钟是否会有影响? 生态系统和群落 一个好的精算建模平台所提出的三项特征围绕着Python的流行性、庞大的生态系统和社区。用户社区越大,在培训和方面可用的资源就越多。这对于任何软件都是正确的,但对于活跃的开源项目来说更是如此。根据定义,一个大的社区也意味着广泛的采用、大量的潜在资源精通于此,并且最有可能具有广泛的应用范围。 最后,Python提供了许多库,允许程序员轻松利用并行或分布式计算 。在使用配备了图形处理单元(GPU)的机器时,几个库能够将计算密集型任务转移到GPU,甚至可以编写定制的GPU内核来解决特定问题。这对于能够很好地并行化的问题提供了无与伦比的性能——而所有这些都可直接在Python中完成,无需了解计算统一设备架构(CUDA)C++或OpenGL。 在这里还需要考虑的一点是,当考虑精算模型平台时,精算师很少会直接用C或C++(或如今是Rust)等高性能语言进行编码。此外,任何用这些语言编写的第三方供应商解决方案通常也会带有模板代码,这会导致该平台上的模型性能低于相关语言的原生基准。这一点也可以在我们2023年白皮书中呈现的简单预测模型基准中得到体现7. 所有这些对于Python都是真的。它被不同的组织评为世界上最受欢 迎的编程语言。TIOBE语言指数将Python位列无可争议的第一名。8就像编程语言受欢迎程度(PYPL)指数一样。9一家拥有超过5亿个 项目托管的最大软件代码仓库GitHub发布的2024年Octoverse报告显示,Python的受欢迎程度持续增长,并且首次位居榜首。10一个StackOverflow11调查将Python排在第三位,但前两位被HTML和JavaScript占据,它们是世界WideWeb的骨干,而不是通用编程语言 。StackOverflow,可能是最大的编程问题社区论坛,有2200万个活跃问题和3600万个答案,12拥有超过220万个关于Python的问题(及答案)13第二大组,再次仅排在JavaScript之后。没有其他编程语言在各个来源中的得分如此接近或如此一致。凭借数百万的活跃用户和以贡献为导向的心态,毫不奇怪,主要的Python包仓库(Python包索引——PyPI)包含超过60万个项目,近100万人为其开发做 出贡献。14其中的每个项目都是一个代码包,任何人都可以下载并在他们的模型中使用。 当谈到Python的性能时,不可能过分强调在架构设计和模型开发中,需要一位对代码复杂性和算法及数据结构的效率有深入理解,并至少具备软件开发基础知识的专业人士的重要性。尽管Python可能永远不会是所有可能选项中最快的(如果一个人考虑用C、C++或Rust来构建他们的模型),但由一个编程知识丰富的精算师设计时,它可以变得非常快,通常比当前解决方案快得多。而且,无论它在性能方面可能有所欠缺,它在其他方面都能够弥补,成为一个优秀的精算建模平台 。 6.参考MaciejewskiK,EchchelhM,&SznajderD.,2023中的简单示例。7.参考MaciejewskiK,EchchelhM,&SznajderD.,2023中的基准。8.Jansen,P.(2025年3月).2025年3月TIOBE指数。检索于2025年3月24日,来自https://www.tiobe.com/tiobe-index/9.PYPL指数(2025年3月)。PYPL编程语言流行度指数。于2025年3月24日检索自https ://pypl.github.io/PYPL.html.10.GitHub.(2024年11月22日).Octoverse:AI引领Python成为顶级语言,全球开发者数量激增.检索于2025年3月24日,来源于https://github.blog/news-insights/octoverse/octoverse-2024/#the-most-popular-programming-languages. 11.StackOverflow.(2024年5月).2024开发者调查.2025年3月24日获取,从https://survey