為什麼R語言是當今最值得學習的數據科學語言
概述
在上周的博客里,我向大家解釋了為什麼應該精通R語言(儘管這些說辭最終可能沒什麼大用)。我那篇文章是寫給那些認為掌握R語言是件勞神費力的人看的(因為最後大家可能都會放棄R語言)。但當我提到R最終確有可能被其他語言取代時,有些人就擔心害怕到好像R馬上就要被取代了似的。那我就說點讓你放心的:R仍然是最受歡迎的數據科學語言。在過去的幾年裡,R已經成為躥升勢頭最猛的編程語言。說句實在話,如果你現在想入門數據科學,我仍然推薦你學習R。所以我想打消你們的疑慮,R在數據科學領域不會被其他語言取代,即使那是Python。
所以,我就是想跟大家說一下為什麼我如此看好R的發展前景,並且我認為R是當今最值得學習的數據科學語言。
R在最好的編程語言里持續走高
有一件事情我必須要你們馬上明確的:R現在是最被看好的、擁有高排名的、發展最快的編程語言之一。但總的說來,R是數據語言。在數據科學裡面,R是獨孤求敗的(僅有那麼一兩個可以比一下的競爭者)。為了證明我說的這些都是事實,讓我們看看在一些實際調查和編程語言排行榜上面R的表現如何。
IEEE: R排名第五
作為世界上最大的技術專業聯盟,IEEE在編程語言上早就制定有排行榜。IEEE在這套排名系統里使用了12個衡量指標,包括谷歌搜索量、谷歌趨勢指數、在推特上的熱度、在Github上的資源存量、黑客新聞報導次數以及其他一些指標。在2016年最終的「最佳編程語言」的榜單上,R攀升到第五名。
IEEE的排名方法很綜合,所以這是一個相當有說服力的結果:R相較於其他語言具有更高的學習價值。
TIOBE:R排名持續走高
另一個排名系統TIOBE也設立了一套類似的編程語言排名指數。我們可以在TIOBE指數上看到R最近的持續上升勢頭。
TIBOE指數等於是構造了一個最受歡迎的編程語言指標。該指數每個月更新一次,打分是來自於一定數量全球範圍內的資深編程工程師、大學課程和第三方軟體供應商。還包括來自像谷歌、必應、雅虎、維基百科、亞馬遜、YouTube以及百度等搜索引擎的打分數據。2016年12月的時候,R在全部編程語言里排行17,它在TIOBE上最好的排名是在2015年的5月份排名第12。
這也表明了當前R語言是學習數據科學絕佳的選擇。或許說R是最好的選擇會有爭議。(老實說,Python在TIOBE上的表現要好於R,但很難區分人們使用Python來網路和軟體開發還是數據科學,所以這並不是公平的比較。)
Redmonk: R排名12
另一個常用的排名系統是Redmonk編程語言排行榜,源於GitHub和Stack Overflow上的熱門討論。2016年11月份的時候,R在這份榜單上位於所有編程語言的第13位。更為重要的是,R在過去幾年展現了持續上升的趨勢:
「在所有最好的20種編程語言里,R展現出了最為持久的上升勢頭。從2012年排名第17以來,R每年都在穩定進步,但好像在13名之後就舉步不前。但此時R已經超過了Perl語言攀升到第12名。Perl依舊有著廣闊的市場,但在數據科學方面R無疑要比Perl更為專業。這跟R倡導者們毫無關係,無論是什麼原因,R成為最受歡迎的編程語言之一確實是值得振奮的事情。」
——Redmonk編程語言排行榜(2016.06)
OReilly:R可能是最為流行的數據編程語言
最後一個是OReilly。OReilly曾在過去數年間都做了關於數據科學的調查,並用調查得到的數據來分析數據科學的發展趨勢,其中就有包括關於最受數據科學家歡迎的數據分析工具的分析結論。
2016年的調查報告顯示,R是最為常見的編程語言(我還把SQL也算在內了,儘管從某種意義上講它不是編程語言)。有超過57%的受訪者使用R語言(相比而言,Python的使用比例是54%)。(有必要提一下的是,70%的人都在用SQL。如果你想在R後面再學習一門工具的話,我推薦SQL。)OReilly也調查了人們常用的數據可視化工具。結果表明ggplot2是最受歡迎的可視化工具。我將在接下來的博客里解釋我為什麼這麼喜愛ggplot2。
R是學習數據科學的極佳工具
除了流行以外,R是優秀的數據科學編程語言的另一個原因在於R是學習數據科學的極佳工具。
R是真正的「數據語言」
這麼說的一部分原因在於語言的本質。R應統計和數據而生。R-Project上R形容為一種「用於統計計算的編程語言」。因為R自打被發明以來就帶有統計和數據的DNA。從這個層面看,R在編程語言裡面是獨一無二的,它為數據而生。這使得你在學習數據科學時具有優勢,因為任意一個統計檢驗或者統計技術你都可以在R基礎配置或者R擴展包里找到。
參考書和其他資源都在使用R作為範例
與R是統計計算語言這個事實相關的是另一個事實是許多最好的參考書和學習資料都採用了R作為編程範例。這對於初學者而言尤為重要,因為你有很多東西要學。為了真正掌握數據科學,你需要學習數據科學下的多個子領域,包括概率論、統計學、數據可視化、數據處理以及機器學習等等。所有的這些技術領域都需要理論基礎和實戰技術,這需要你自己編寫代碼來實現。這意味著兩點:
1. 你選擇的編程語言必須對各個領域(可視化,數據處理,機器學習(統計學習)等)都有強大的掌控能力。
2. 你選擇的編程語言在這些領域內都有著高質量的練習材料。
儘管現在市面上有很多關於數據的學習教材和課程,但最好的都是用R作為編程範例的。
用R學習概率論
舉例來說,有兩本極為出色的概率書都是用R作為編程範例的。第一本是概率論及其R應用。這本書親切可讀且條理清晰。第二本是概率論導論,這本教材被哈佛統計課程廣泛採用。這只是兩個例子。如果你足夠資深的話,你會發現大多數概率理論書都會採用R作為範例。
用R學習頻率學派統計學
同樣的道理可以用在統計學參考書上。R的統計特性與生俱來,多數統計教材都把R作為學習工具。這裡我們介紹一本優秀的頻率學派統計教材的入門書籍:統計學導論與R應用。當然,你也可以在亞馬遜上隨便一搜就可以搜到各類關於統計學的入門書籍,你會發現它們是否會用編程語言作為教學工具,並且相較於其他語言而言,它們更喜歡使用R語言。
用R學習貝葉斯統計學
如果你想要一本學習貝葉斯統計的手冊,R語言在其中的作用就更加明顯了。如果你想學習貝葉斯統計和貝葉斯分析的話,幾乎所有的參考書都用了R作為範例。當然也有例外,只有極少部分的教材是通過C或者Python來講解貝葉斯理論的,但毫無疑問的是最好的貝葉斯參考書都採用了R作為分析工具。
如果你對貝葉斯統計感興趣的話,推薦看下面三本書:
1. 貝葉斯統計導論
2. 統計學反思
3. 貝葉斯數據分析實戰
這些書都用了R作為分析工具,如果你對貝葉斯方法情有獨鐘的話,相信這會是你的菜。
用R學習數據可視化
當你學習數據可視化的時候,可供選擇的編程語言範圍就會大很多,但我仍然R是學習可視化的最好工具。如果你正在學習數據可視化的話,我極力推薦Nathan Yau名為http://flowingdata.com的博客,上面經常會有關於用R做可視化分析的教程更新。(他的書數據點是極好的配套教材,儘管它只闡明一些原理而對編程語法避而不談。)同樣力薦的是Hadley Wickham 大神的一些書。第一,如果你對R語言數據可視化感興趣,你需要入手這本ggplot2。這個關於R數據可視化的擴展包不僅會教你編程語法,也會讓你重新認識數據可視化。
我還推薦R語言數據科學這本書。這本書對數據可視化有一個令人驚嘆的導論,當然也會教你如何用R處理數據。這是一本必備的R參考書。
用R進行機器學習
最後,如果你還想對機器學習有個入門的話,很多參考書也都用了R作為範例。我承認儘管關於機器學習教材使用的編程語言各不相同,但我仍然堅信R是最好的工具。這裡有兩本用R作為講解的優秀的機器學習入門書籍:
1. 統計學習導論
2. 預測建模實戰
這兩本書讀起來親切有加又不失嚴謹。在講解理論基礎的同時也會向你展現實戰技巧。這是兩本我最喜歡向那些志在學習機器學習的初學者推薦的,它們都使用R語言。
R是學習數據科學的最佳工具
我最終的結論是R是學習數據科學最好的工具,很多參考書都用R作為編程語言。所以當還你是一名數據科學菜鳥的話,我認為R無論是在質還是量上都是最好的學習工具。
關於Python的一點說明
除了R之外,你當然還有許多其他選擇,但我這裡只提一下Python。隨著數據科學的快速發展,可能除了R以外Python是一個值得認真考慮的選擇。(其他語言缺乏體系健全的擴展包系統並且不開源。)我不想對Python作過多解釋,但需要聲明是Python是一門出色的語言,我愛Python。儘管說了這些,但對於數據科學的初學者而言,我還是認為R是稍微更好的選擇,原因我在前面都已闡述完畢。再者,很多參考書對於數據科學基本概念(概率論、統計學、貝葉斯、機器學習)的解釋都是基於R的,這並不是說用Python進行數據科學實踐不好,但基於R的參考教材平均質量水平更高。
再就是許多學生用Python做了軟體開發。這就意味著他們用Python來學習了數據結構、循環、控制流、面向對象編程以及網路框架而不是學習統計、數據可視化、數據處理和概率論等。這些計算機技能確實是數據科學家的工具箱必備武器之一,但不是我這裡談到的數據科學核心主題。老實說,我推薦大多數軟體開發的初學者在學習開發之前最好是能學習一下基礎的數據科學內容,包括數據處理、可視化以及數據分析等等。
儘管大多數初學者應該把軟體開發原理的學習放在後面,但多數Python的初學者一開始就跑偏了。造成這種情況的原因有很多,但Python確實在這些領域表現出色。大部分關於Python的參考書都不是真正的數據科學書,而是關於編程和開發的書。所以當準備開始學習數據科學的學生打開一本Python教材的時候,很容易就被帶往軟體/網路開發的方向,而且經年累月走不出來。儘管我對Python愛之深沉,但Python對於初學者而言確實不太友好。所以最好還是從R開始你的數據科學之旅,容易學習且不易跑偏。
再次強調:數據科學就學習R語言
如果你想從數據科學這裡拿走什麼好東西的話,R是最好的選擇。從流行程度上而言,R排名很高並且在持續走高。另外,多數最好的數據科學教材和學習材料都用R作為工具。如果你現在想入門數據科學,我鄭重地向你推薦下面這些:
1. 學習R語言。
2. 具體而言,學習ggplot2,dplyr,tidyr,lubridate以及其他數據處理和可視化擴展包。
3. 學習如何綜合利用各類工具進行數據分析。
4. 一旦你在這些關鍵擴展包的學習上取得進展,就去擴充你的概率統計和機器學習能力。
英文原作來自Sharp Slight Labs博客
作者:魯偉
一個數據科學踐行者的學習日記。數據挖掘與機器學習,R與Python,理論與實踐並行。個人公眾號:數據科學家養成記 (微信ID:louwill12)
推薦閱讀:
※用RStudio導入數據
※15分鐘學會數據地圖分析
※《深入淺出數據分析》實踐案例
※用ggplot2構造期待已久的雷達圖