工程師的資料探索 – R 能幹麼

screen-shot-2016-09-18-at-4-14-53-am

最近亂看亂玩的心得,感覺好像是個連載開始,以資料科學的角度我現在其實什麼都還不會啦~

我需要學習 R 嗎?我已經會寫程式了,何必再多學一個語言。

楔子

大概就是從上面這個問題開始,如果在深究下去,應該是說要解決資料的問題,需要用什麼語言?

為什麼大家都會說要學 R,如果他有解決我原本擅長的語言無法解決的問題,那我才有必要學習一個新語言嘛,不然何必多學一個語言呢?事實是,他不算是一個用來開發軟體的語言,他只是用來處理資料的腳本。

所以不用學囉?因為我已經會其他程式可以處理資料了,處理資料那還不簡單 😤

我自己的回答是,是也不是。我可以用我擅長的語言快速的處理資料,但是因為我不懂資料科學,所以我想要從資料科學家的角度出發,看他們都是怎麼處理資料,怎麼解決資料的問題的,然後 R 就是這樣一個工具,從 R 的設計與用法中,讓我可以以資料科學家的角度出發,看他們裝了什麼套件,跑了什麼函式,得出什麼結果。這是我用我自己的語言看不到的事,如果我要用我擅長的語言去做一樣的事,那也太累了。

歸零

所以我決定從頭開始學習這個語言,從 R for Data Science 這本書開始亂翻,但我的目的不是學習語言,是學習他的視野。並看看人家都用 R 在做些什麼。我覺得我第一個有趣的發現是來自這篇文章 酷比 Scupio 廣告使用心得(2016 年),作者把他部落格的 pv 跟 revenue 等廣告資料丟到 R 的一個套件( PerformanceAnalytics )裡面,不做額外的處理,他就幫忙繪製出一張維度關聯的圖,就可以馬上一眼看出哪個維度對廣告營收造成最大的影響,這件事或許簡單的統計都做的出來,但是要我用 Excel 或寫程式處理,我都要先耗費不少無法省略的勞動時間。

library(PerformanceAnalytics)
ad <- read.csv(data.csv)
chart.Correlation(ad)

316802-line

所以我也把我剛好在處理的資料丟進去看看,讓我很快的看出我關心的哪些維度關聯度比較高,雖然我還不甚了解他的關聯如何計算。以往我都是判斷 程式 Excel 哪個比較快能解決問題,但這個經驗讓我相信,我學會一個新的工具以後會出現第三種東西可以納入評比。

視覺化

從上面的經驗讓我對能用眼睛來分析資料有新的感受,所以開始往這方面探索,R 在這方面就是用 ggplot 來繪製各式各樣的圖表,只不過這是 Excel 或 d3 本來就都做得到的事,但暫且忽略,重點是觀點。所以我開始試著學習繪製一些我本來就會畫的圖在 ggplot 上。這方面可以參考 R cookbook

在這個過程中我發現,其實我很不會用 excel 的圖表功能來繪製複雜一點的圖,要怎麼群組資料,到底什麼時候能用欄位什麼時候能用列,我有點搞不清楚。樞紐分析學好很有用,但是我還是不會透過他那些介面的操作來任意產生出我想要的圖表。但是我覺得我用 d3 可以,反正有問題我都能解決,只是唯一的問題就是,因為我很少寫,我每次都要寫很久。

所以其實 R 在這方面填補了這個兩個之間的缺口,我可以用程式的邏輯去思考怎麼繪製圖表,不需要管 Excel 的介面跟邏輯,也同時可以用 R 豐富的資料處理函式跟套件,來處理我本來用 Excel 處理要很費時的資料,雖然處理資料這方面很多時候可以透過 SQL 前置處理解決,但是在這之前繪製方面我還沒有找到 d3 以外更好的替代品。

我以前會用 gnuplot 來繪製看起來專業一點的圖片,我覺得 ggplot 繪製出來的樣式某種程度的也滿足了這方面的需求。

最後我發現 plotly 這間在處理視覺化資料的公司,有 open source 的專案來擴充 ggplot 的互動性,甚至有 web 版是以 d3 實作,讓繪製出來的圖表可以再 R studio 裡面操作,做到在 d3 裡面原本要刻很久的效果,這時才恍然大悟,用 d3 來做視覺化不是在解決資料科學的問題,而其實都是在開發軟體🙄,所以還要自己實作一堆互動的問題。

screen-shot-2016-09-18-at-4-14-53-am

最近的心得是這樣,也還沒花很多時間,持續探索中…

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *