R和Python的交谊舞
曾几何时,数据分析入门的一大讨论就是R和Python的选择。
当统计学家连上了互联网的那刻起,这种选择一直就存在,只是主演们在换。
上一代的主角,一方是R和S。大家选择R是因为它是免费的解决方案,又能用,还有一批人维护更新,而且下载即可。概括起来,就是“开源大法好”。另一方是Matlab和Python。可能会有很多的异议,不过这里也只是举个见识范围内的例子,愿意无条件接受任何的反驳。近年,Python的排名越来越高。
站在2019年,R和Python主演的选择大戏有结局了吗?
一条蟒蛇跟一个字母的故事,编剧被寄了刀片,剧情搁浅。没有结局的原因很简单,因为两个都是开源的,所以“诸事不决,选开源”的策略失效了。那该如何有理有据地抨击一款正被广泛使用的工具呢?
请务必从用户需求下手。
那就聊一聊机器学习模块,算法,模型,策略,评估,可视化……那些跟人工智能有关的需求。
Scikit-learn的初心是…
这里应该回忆一遍Scikit-learn(sklearn)是如何成长为Python的机器学习库的,哪怕是最快速的带过:2007年开始,距离2018年已经过去11年。(其他的废话准备另写一篇《Scikit-learn迎来0.21之前》。)
Python在数据科学领域的快速发展,归功于那些频繁提交commit的家伙们。
但夜以日继,不辞辛苦的,还有很多人,劲敌永远存在。翻开sklearn的文档,会发现除了主页常设的分类、回归、聚类、降维、模型选择、数据处理这六大主题之外,还有一个有关这个项目本身的Roadmap。
如果没有人关心这个项目的里程碑,会怎么样?
过去的11年里,机器学习的世界变化很多,但影响最微妙,可能也是“最致命”的,是开源贡献者的身份产生了变化。跟十年前那会儿很不同。
Statement of purpose: Scikit-learn in 2018
- A more subtle change over the last decade is that, due to changing interests in ML, PhD students in machine learning are more likely to contribute to PyTorch, Dask, etc. than to Scikit-learn, so our contributor pool is very different to a decade ago.
在这最新一份的《Scikit-learn项目目标自述2018》里,还可以看到sklearn不变的初心:数据处理和机器学习的经典工具集合。
如今,机器学习博士生们“更乐意去为PyTorch、Dask等添砖加瓦”。sklearn也更开放,会提供更多的接口便利,也不排斥互通。
写在文档里的可能是实现不了的诺言,或者谎言。关于这一点疑虑,sklearn的开发者这样宣言:资源有限,所以列清单不等于许下承诺,而是指引我们前行的航标,也是我们急需帮助的不足之处。
争吵不是真相,真理落在实处
为什么不是Scikit了呢?又为什么是PyTorch、Dask呢?时代变迁,新的角色不断涌现,又会有一大波选择的大剧等待上演。选择不尽,争吵不休。
算法层出不穷,包或者模块的名字也在变化,甚至框架也可以有很多种选择,这个世界正在对数据科学领域开放大量的人力资源和发展机会。
scikit-learn在2007年问世时,NumPy、SciPy和matplotlib是不是在颤抖?有机会真该去看看它们那些年的项目文档,可能有精彩的故事。
选择开源,就注定不能一劳永逸。而拒绝开源,只会被潮水淹没。Scikit-learn的2018自述,讲述了开源的波折和信念,言辞恳切,不失风度。
文/良宵听雨。授权“游戏夜读”发表。