1. 程式人生 > 其它 >【機器學習】機器學習程式語言之爭狼煙再起,Python稱霸?

【機器學習】機器學習程式語言之爭狼煙再起,Python稱霸?

隨著科技的發展,擁有高容量、高速度和多樣性的大資料已經成為當今時代的主題詞。資料科學領域中所採用的機器學習程式語言大相徑庭。究竟哪種語言最適合機器學習成為爭論不休的話題。近日,密西根州立大學的博士生Sebastian Raschka再次發起了機器學習程式語言之爭,分析了自己選擇Python的原因。

目前,機器學習牽涉的程式語言十分多樣,包括了MATLAB、Julia、R、Perl、Python、Ruby等等。首先,Raschka定義了語言好壞的原則:一門好的語言應該使得編寫、除錯和執行程式碼的總時間最短。然後,他花大篇幅講述了一個簡單的道理——沒有一門語言是對所有情況、所有人都十分適合的。

Roberto Waltman:“在這種唯一正確的方式下,面向物件的Spaghetti code就是Lasagna code。”

針對具體的應用場景以及參與專案的人員,開發團隊或個人要對任務需求進行評估,再結合人員對於各個語言的熟悉程度和語言生態環境的情況等等,作出選擇。接下來,Raschka開始正式點評各個語言相對與Python在機器學習時的優缺點。

表現平平的MATLAB

作為機器學習、模式識別等方面經常使用的工具,MATLAB被放在了第一個分析。Raschka認為,MATLAB在實現機器學習演算法時要比Python或者NumPy更加自然。很多高校也在電腦科學相關的課程中教授MATLAB語言。然而,MATLAB也存在很多的缺點:價格昂貴、非開源、效能表現平平、語法不符合程式設計師的習慣等。例如,MATLAB中矩陣乘積運算操作為X.dot(Y)

,而Python為X@W,更加簡潔、明瞭。

各種語言相對於C的測試效能——C的效能為1.0,越小越好

從上圖可以看出,MATLAB的效能比Python、Go、Java等語言要差很多。Raschka也提到,上圖中Python的效能也表現不好。但是,現在效能強勁的GPU為Python提供了強大的後盾。在2010年的時候,Python中的Theano庫在CPU上執行時,其速度是NumPy的1.8倍。而Theano在GPU上執行時,其速度就是NumPy的11倍。因此,在目前更高效能的GPU的幫助下,Python效能已經有了更大的改進。

貌似很強大的Julia

作為一門新型的語言,Julia在設計之處就充分借鑑了C/Ruby/Python等語言的經驗,試圖重新融合眾家之長,為科學計算提供一個有力的工具。Raschka充分認可了該語言。然而,對於其未來Julia是否會流行,Raschka持保留態度。

Bjarne Stroustrup:世界上只有兩種語言——大家一直在抱怨的和無人問津的。

Raschka認為一個語言是否有用又很大程度上取決於其是否流行。只有被廣大程式設計人員所熟知的程式語言,相關的庫才會更多,遇到問題時也能夠方便的找到答案,且易於團隊合作和程式碼分享。語言本身也會隨著社群的關注不斷得以改善。在流行度上,Julia並沒有什麼優勢。

R語言本身無錯

接下來,Raschka又提到了R語言。其實,Raschka之前使用過R語言,而且還專門撰寫了一部有關R語言中Heat map的書。而且,他自己也不認為R語言存在任何令人不滿意的地方。據Spectrum IEEE統計,在2015年排名前十的程式語言中,R語言是提升最快的。近期,微軟對R語言表現出極大的興趣。並且很快,微軟的Azure便開始支援R語言了。

Alan J. Perlis:當某人說“我想要一門程式語言。它要能夠根據我的目標自動生成程式碼”。讓他拿根棒棒糖,一邊玩去吧!

Raschka總結R和Python之間的不同在於,R是統計學家開發的(數學)語言,而Python是計算領域科學家開發,可以應用到統計學的程式語言。這就是說,二者都可以很好的應用於資料科學或者機器學習,但Python的語法更容易被程式設計師所接受。

Perl的沒落

Raschka簡單分析了Perl語言。作為一門古老的語言,Perl已經不可避免的走向了沒落。Raschka表示,Perl曾經是他學習的第一門語言。但是,Perl目前主要用於簡單的指令碼編寫,已經很少應用在機器學習的演算法編寫方面。

老而彌堅的Python

最後,Raschka誇讚了自己所喜愛的Python語言。儘管Python已經走過了20多年的風雨歷程,Raschka認為它仍然可以繼續流行下去。而且,Raschka還不遺餘力的列出了自己最喜歡的Python工具——NumPy、Theano、scikit-learn、matplotlib等。

至於Ruby、Java、Scala、Lua等,Raschka沒有親身體驗,暫未點評。

對於Raschka的言論,很多人表示贊同,也有不少人反對。有人表示,自己從R切換到Python,主要原因也是Python更方便與團隊之外的人進行合作和溝通。也有人表示,作為一個新入門的程式設計師,利用R進行資料科學的程式設計可以利用很多現成的庫,十分得心應手。更有與Python打過8年交道的資深程式設計師表示,Julia十分具有吸引力,願意花時間去嘗試該語言。親愛的讀者朋友,你眼中最好的機器學習程式語言又是哪個呢?