社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

开源中国 • 6 年前 • 783 次点击  

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


原文: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
 
783 次点击