十種程式語言幫你讀懂大資料的“祕密”

edithfang發表於2014-08-02



隨著大資料的熱潮不斷升溫,幾乎各個領域都有洪水傾瀉般的資訊湧來,面對使用者成千上萬的瀏覽記錄、記錄行為資料,如果就單純的 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 說。

KafkaandStorm

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

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

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

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


Matlab

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

Octave

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

GO

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

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

相關文章