Py学习  »  Python

对比来了!Julia 能打败 Python 和  R 成最终赢家吗?

开源中国 • 5 年前 • 655 次点击  

#扫描二维码报名源创会#


原文:Julia vs R vs Python: simple optimization

作者:ZJ,数据科学家,全栈工程师,信用风险模型团队负责人。

编译:开源中国(oschina2013)

如需转载请在文中注明上述信息


在这篇文章中,作者通过一个简单的似然函数优化(Maximum Likelihood Optimization)问题来对比 Julia,R 和 Python。这是一个比较小的优化问题,性能上的差异表现可能不太明显,但解决问题的过程能很好地反应三者各自的优劣势。


作者在撰写本文时,对这三种语言的熟悉程度如下:



Julia 布道者 ChrisRackauckas 曾经说过:


如果你用 Julia 处理一个 10 秒内的问题,它的优势并不能体现出来。 而一旦处理的问题变复杂,需要花费比较长的时间,这时 Julia 的优势就会慢慢体现了。


有人用 Python 和 Julia 做过对比实验。以 10⁵ 为界点进行计算,当数值比 10⁵ 更小时 Python 比 Julia 快的。但数值大于 10⁵ 后,Julia 的速度就比 Python 快很多了。


优化问题


观察序列 Q1,Q2,...,Qn,我们需要找到优化该似然函数的参数 μ 和 σ:



通常我们会尝试优化对数似然:



在统计学上,这是截断的正态分布的最大似然估计(MLE)。


Julia 的测试情况


以下是作者使用 Julia 进行测试的情况。使用 Julia 中的 Optim.jl,可以直接使用特殊符号(symbols)作为变量名称,按照使用习惯,此处作者使用了希腊字母 μσ。Julia 还有一个 JuMP.jl 包用于优化问题。但 JuMP.jl 更适合用于更高级的优化问题,用在此处有点小题大做。


Julia 第一次优化


Julia 在执行第一次优化用了 7 秒,比 R 和 Python 都慢。对此,ChrisRackauckas 指出:


如果你需要解决 100 个 10 秒的优化问题,第一次执行需要花费 17 秒,接下来的优化不需要编译,大约只需要 10 秒。因此,总运行时长为 1007 秒。所以,当用 Julia 处理一个 10⁵ 秒的问题时,这 7 秒基本可以忽略不记;但如果用 Julia 处理 5 秒甚至更小的问题时,这 7 秒的差异就特别明显。


作者在下方硬编码了在 MLE 估计中使用的 Q_t 的值:



输出效果如下,排版看起来很舒服,也支持数学公示显示:



由此看出 Julia 的优势



Julia 的不足



R 的测试情况


R 有一个 truncnorm 用于处理截断正态



结果将输出:



R 的优势



R 的不足



Python 的测试情况


作者利用已有的 Python 学习经验想出如下方案,输入代码:



输出结果:



Python 的优势



Python 的不足



 综上所述,三种语言的综合对比如下:



开源中国征稿开始啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿





推荐阅读

为什么 Python 4.0 不会像 3.0 一样?

这些必备的 VS Code 插件你都用过吗?

Redis 变更模块开源许可证,多个项目不再开源

你了解 Julia 吗?

你期待的 Win 10+Chrome OS 双系统正在研发中

集 Python、C、R 与 Ruby 之长,Julia 1.0 发布


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/jg9hal3Ihq
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23312
 
655 次点击