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

简介:

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

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

847d5d0b983f4e300751afcd5871089627116673

Julia 布道者 ChrisRackauckas 曾经说过:

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

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

优化问题

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

932afe9d8fb2a53a69085127721389658935b00b

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

11ee8724e2f5d0e5b545e579ac180349c8a3623c

在统计学上,这是截断的正态分布的最大似然估计(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 的值:

0826cebbaddcdf8400964e8326c9650e104c1abf

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

cafef67a97db20327731d1140ebba8bb7373d410

由此看出 Julia 的优势

dbe1ca43eb0b17658c83e12471526857023c45ac

Julia 的不足

c39d340b9af18ee92af23db63acf321a4aa4ecbd

R 的测试情况

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

bff6fc30784fb87f143bb72deb81984e7a9e2bde

结果将输出:

dd4a1a9a6be18132b27e6b542a883a0afc5157b9

R 的优势

98b83052d8691a13465af69e94dea5d859c56fb3

R 的不足

ff29dab84bf33e6dc502a4de09251bdc2d430a1b

Python 的测试情况

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

fdd967c2c76d5877b2cc4940dbea078346c17348

输出结果:

18c4954e6102886162e1419a9c072c33a9f40072

Python 的优势

d0382fb38c947a3c61228b15bf61337315f26c15

Python 的不足

ca5c6defd5e1c0c51efee2d82136b7d00b50045c

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

88047797958954b0e9641d3cdc459178f57c3f34


原文发布时间为:2018-09-4本文来自云栖社区合作伙伴“ CDA数据分析师”,了解相关信息可以关注“ CDA数据分析师”。
相关文章
|
18天前
|
人工智能 程序员 Shell
程序员必知:对比python学julia(第二章)
程序员必知:对比python学julia(第二章)
15 2
|
存储 算法 编译器
R vs. Python vs. Julia
R vs. Python vs. Julia
200 0
R vs. Python vs. Julia
|
机器学习/深度学习 人工智能 算法
开发人员亲自上场:Julia语言搞机器学习和Python 比,哪个好用?
开发人员亲自上场:Julia语言搞机器学习和Python 比,哪个好用?
316 0
开发人员亲自上场:Julia语言搞机器学习和Python 比,哪个好用?
|
机器学习/深度学习 存储 算法
后Python时代, Julia告诉你速度和灵活性真的都可以有
8 月份,Julia 1.0 发布,在社区内引发了极大的关注。之后不久,机器之心推荐了一篇简单的中文教程。在最新的这篇文章中,作者对 Julia 的众多特性进行了介绍,同时简略介绍了 Julia 在机器学习和深度学习方面的资源储备。
262 0
后Python时代, Julia告诉你速度和灵活性真的都可以有
|
机器学习/深度学习 人工智能 Rust
再见 Python,Hello Julia!
导读:随着Python的停滞不前,一个新的热门竞争对手崛起了。
|
6天前
|
安全 Python
告别低效编程!Python线程与进程并发技术详解,让你的代码飞起来!
【7月更文挑战第9天】Python并发编程提升效率:**理解并发与并行,线程借助`threading`模块处理IO密集型任务,受限于GIL;进程用`multiprocessing`实现并行,绕过GIL限制。示例展示线程和进程创建及同步。选择合适模型,注意线程安全,利用多核,优化性能,实现高效并发编程。
20 3