隨著大資料的熱潮不斷升溫,幾乎各個領域都有洪水傾瀉般的資訊湧來,面對使用者成千上萬的瀏覽記錄、記錄行為資料,如果就單純的Excel來進行資料處理是遠遠不能滿足的。但如果只用一些操作軟體來分析,而不怎麼如何用邏輯資料來分析的話,那也只是簡單的資料處理。

大資料

替代性很高的工作,而無法深入規劃策略的核心。

當然,基本功是最不可忽略的環節,想要成為資料科學家,對於這幾個程式你應該要有一定的認識:

R

若要列出所有程式語言,你能忘記其他的沒關係,但最不能忘的就是R。從1997年悄悄地出現,最大的優勢就是它免費,為昂貴的統計軟體像是Matlab或SAS的另一種選擇。

但是在過去幾年來,它的身價大翻轉,變成了資料科學界眼中的寶。不只是木訥的統計學家熟知它,包括WallStreet交易員、生物學家,以及矽谷開發者,他們都相當熟悉R。多元化的公司像是Google、Facebook、美國銀行以及NewYorkTimes通通都使用R,它的商業效用持續提高。

R的好處在於它簡單易上手,透過R,你可以從複雜的資料集中篩選你要的資料,從複雜的模型函式中運算元據,建立井然有序的圖表來呈現數字,這些都只需要幾行程式程式碼就可以了,打個比方,它就像是好動版本的Excel。

R最棒的資產就是活躍的動態系統,R社群持續地增加新的軟體包,還有以內建豐富的功能集為特點。目前估計已有超過200萬人使用R,最近的調查顯示,R在資料科學界裡,到目前為止最受歡迎的語言,佔了回覆者的61%(緊追在後的是39%的Python)。

它也吸引了WallStreet的注目。傳統而言,證券分析師在Excel檔從白天看到晚上,但現在R在財務建模的使用率逐漸增加,特別是視覺化工具,美國銀行的副總裁NiallO’Conno說,「R讓我們俗氣的表格變得突出」。

在資料建模上,它正在往逐漸成熟的專業語言邁進,雖然R仍受限於當公司需要製造大規模的產品時,而有的人說他被其他語言篡奪地位了。

“R更有用的是在畫圖,而不是建模。”頂尖資料分析公司Metamarkets的CEO,MichaelDriscoll表示,

“你不會在Google的網頁排名核心或是Facebook的朋友們推薦演算法時看到R的蹤影,工程師會在R裡建立一個原型,然後再到Java或Python裡寫模型語法”。

舉一個使用R很有名的例子,在2010年時,PaulButler用R來建立Facebook的世界地圖,證明了這個語言有多豐富多強大的視覺化資料能力,雖然他現在比以前更少使用R了。

“R已經逐漸過時了,在龐大的資料集底下它跑的慢又笨重”Butler說。

所以接下來他用什麼呢?

Python

如果說R是神經質又令人喜愛的Geek,那Python就是隨和又好相處的女生。

Python結合了R的快速、處理複雜資料採礦的能力以及更務實的語言等各個特質,迅速地成為主流,Python比起R,學起來更加簡單也更直觀,而且它的生態系統近幾年來不可思議地快速成長,在統計分析上比起R功能更強。

Butler說,“過去兩年間,從R到Python地顯著改變,就像是一個巨人不斷地推動向前進”。

在資料處理範疇內,通常在規模與複雜之間要有個取捨,而Python以折衷的姿態出現。IPythonNotebook(記事本軟體)和NumPy被用來暫時存取較低負擔的工作量,然而Python對於中等規模的資料處理是相當好的工具;Python擁有豐富的資料族,提供大量的工具包和統計特徵。

美國銀行用Python來建立新產品和在銀行的基礎建設介面,同時也處理財務資料,“Python是更廣泛又相當有彈性,所以大家會對它趨之若鶩。”O’Donnell如是說。

然而,雖然它的優點能夠彌補R的缺點,它仍然不是最高效能的語言,偶爾才能處理龐大規模、核心的基礎建設。Driscoll是這麼認為的。

Julia

今日大多數的資料科學都是透過R、Python、Java、Matlab及SAS為主,但仍然存在著鴻溝要去彌補,而這個時候,新進者Julia看到了這個痛點。

Julia仍太過於神祕而尚未被業界廣泛的採用,但是當談到它的潛力足以搶奪R和Python的寶座時,資料黑客也難以解釋。原因在於Julia是個高階、不可思議的快速和善於表達的語言,比起R要快的許多,比起Python又有潛力處理更具規模的資料,也很容易上手。

“Julia會變的日漸重要,最終,在R和Python可以做的事情在Julia也可以”。Butler是這麼認為的。

就現在而言,若要說Julia發展會倒退的原因,大概就是它太年輕了。Julia的資料小區還在初始階段,在它要能夠和R或Python競爭前,它還需要更多的工具包和軟體包。

Driscoll說,它就是因為它年輕,才會有可能變成主流又有前景。

Java

Driscoll說,Java和以Java為基礎的架構,是由矽谷裡最大的幾家科技公司的核心所建立的,如果你從Twitter、Linkedin或是Facebook裡觀察,你會發現Java對於所有資料工程基礎架構而言,是非常基礎的語言。

Java沒有和R和Python一樣好的視覺化功能,它也不是統計建模的最佳工具,但是如果你需要建立一個龐大的系統、使用過去的原型,那Java通常會是你最基的選擇。

Hadoop and Hive

為了迎合大量資料處理的需求,以Java為基礎的工具群興起。Hadoop為處理一批批資料處理,發展以Java為基礎的架構關鍵;相較於其他處理工具,Hadoop慢許多,但是無比的準確和可被後端資料庫分析廣泛使用。和Hive搭配的很好,Hive是基於查詢的架構下,運作的相當好。

Scala

又是另一個以Java為基礎的語言,和Java很像,對任何想要進行大規模的機械學習或是建立高階的演算法,Scala會是逐漸興起的工具。它是善於呈現且擁有建立可靠系統的能力。

“Java像是用鋼鐵建造的;Scala則是讓你能夠把它拿進窯烤然後變成鋼的黏土”Driscoll說。

Kafka andStorm

說到當你需要快速的、實時的分析時,你會想到什麼?Kafka將會是你的最佳夥伴。其實它已經出現五年有了,只是因為最近串流處理興起才變的越來越流行。

Kafka是從Linkedin內誕生的,是一個特別快速的查詢訊息系統。Kafka的缺點呢?就是它太快了,因此在實時操作時它會犯錯,有時候會漏掉東西。

魚與熊掌不可兼得,「必須要在準確度跟速度之間做一個選擇」,Driscoll說。所以全部在矽谷的科技大公司都利用兩個管道:用Kafka或Storm處理實時資料,接下來開啟Hadoop處理一批批處理資料系統,這樣聽起來有點麻煩又會有些慢,但好處是,它非常非常精準。

Storm是另一個從Scala寫出來的架構,在矽谷逐漸大幅增加它在串流處理的受歡迎程度,被Twitter併購,這並不意外,因為Twitter對快速事件處理有極大的興趣。

Matlab

Matlab可以說是歷久不衰,即使它標價很高;在非常特定的利基市場它使用的相當廣泛,包括密集的研究機器學習、訊號處理、影像辨識等等。

Octave

Octave和Matlab很像,除了它是免費的之外。然而,在學術訊號處理的圈子,幾乎都會提到它。

GO

GO是另一個逐漸興起的新進者,從Google開發出來的,放寬點說,它是從C語言來的,並且在建立強大的基礎架構上,漸漸地成為Java和Python的競爭者。

這麼多的軟體可以使用,但我認為不見得每個都一定要會才行,知道你的目標和方向是什麼,就選定一個最適合的工具使用吧!可以幫助你提升效率又達到精準的結果。