顯示具有 資料科學工具 標籤的文章。 顯示所有文章
顯示具有 資料科學工具 標籤的文章。 顯示所有文章

2016年7月17日 星期日

「2016 台灣資料科學愛好者年會」精彩資料總整理(持續更新中)




這幾天(2016/7/14 ~ 2016/7/17)資料科學界在台灣最重要的活動,莫過於2016 台灣資料科學愛好者年會,這已經是每年在台灣資料科學界最大的活動之一,今年的票也是不到一小時就幾乎賣光,對這個活動的歷史有興趣的朋友們可以參考「2015年」、「2014年」,今年的主題相較去年,更有趣,更多元、更多產業上的案例。

除此之外,筆者也發現贊助的公司也變得相當的多,今年贊助公司包含國泰人壽、東森信息科技股份有限公司、玉山金控、funP 雲沛創新集團、HTC、台灣 IBM、新加坡商鈦坦科技 TITANSOFT、潮網科技、Vpon 威朋、宇匯知識、勤業眾信、遊戲橘子、GMobi通用移動、Google、艾肯娛樂、宣捷生物科技、MIGO 功典、Mozilla TW、天氣風險、琅茶,從中我們可以發現不只資訊公司,也包含其他產業的公司,像是生物研究、天氣、會計,甚至是金融業都來加入,整體上台灣資料科學發展的凝聚力,在今年又更上一層樓。


今年筆者一樣秉持著自己也是資料科學愛好的一份子,將今年的資料科學活動內容整理如下,供自己與有興趣的朋友們參考:


  1. 2016台灣資料科學年會開場投影片
  2. Riot Games Head of Data Science
  3. 用數據解決都會城市的停車問題
  4. 隨機對照實驗在公共領域的應用
  5. 數據分析在運輸管理之應用
  6. 大數據下的情緒分析
  7. 一個賭徒的告白 2:交易策略建構與分析,為何你該賭小一點?
  8. 從薪酬制度讀 CEO 的行為心理學 
  9. 自己的空氣品質自己量 : 談參與式環境感測的機會與挑戰
  10. 如何備料:資料的抓取、清理以及串接
  11. 黃從仁/心理與行為資料中的因與果
  12. 資料科學與防疫應用的結合 : 以登革熱防治為例
  13. 資料分析前的奏曲 : 談資料收集的挑戰
  14. How to approach data science problems from start to end
  15. 未來城市的任意門 (Mobility on Demand for Future Cities)
  16. 人類行為訊號處理 : 跨學科 (醫療、教育、心理) 應用實例分享、心得、展望
  17. 從手機解讀行為與心理
  18. Crowd Computing for Big and Deep AI
  19. 智慧型工程管考系統 : 資料分析經驗談
  20. 音樂資料檢索
  21. 當語音處理遇上深度學習
  22. 公私協力的公共服務 - 以資料面詮釋
  23. 從電腦視覺看人工智慧 : 下一件大事
  24. 我在智慧交通資料解析的失敗歷程
  25. It's Not What You Say: It's How You Say It!
  26. 貓都學得會的手機維修資料分析
  27. The Growth of a Data Scientist
  28. Practical Issues in Machine Learning
  29. 沒有大數據怎麼辦 ? 會計師事務所的小數據科學
  30. Feature Engineering in Machine Learning
  31. 漫談 R 的學習挑戰與 R 語言翻轉教室
  32. 娛樂產業中的資料科學家 : 談資料科學於線上遊戲與職業運動之應用
  33. 空間數據分析推動精準新農業
  34. 世代之爭爭什麼 ? 談談如何從調查資料挖掘出豐厚的意義
  35. 資料視覺化的 20 個小訣竅
相關新聞:
其他相關資訊:

2016年5月22日 星期日

一天上手SparkR

Spark是近幾年在數據分析領域非常火紅的技術,繼上一次「透過Python與Spark做氣象大數據分析」的文章,筆者這次希望分享的是原生Spark 在 R上面的改變,從Spark 1.4版開始對R有較完整的支持,而今年推出的Spark 1.6版上面,可以看到Spark 已經特別為R做了一個專屬的核心,這個核心也只有R才有,其目標就是希望把過去R累積的運算套件無痛移植到Spark上。

圖1:SparkR架構(來源)

從「SparkR: Scaling R Programs with Spark」這篇期刊文章上可以觀察到,圖1中的R的Spark Context透過R-JVM跟Java Spark Context做溝通,將工作分散到每個有R的Worker上面,透過Spark Executor進行運算,其實有Hadoop MR的味道。

但重點是效率變得更好,程式碼變得更好寫,從效率來看,圖2中SparkR的DataFrame效率跟Scala、Python其實也差不多了,而且做Cache會更快。

圖2:DataFrame的效率比較(來源)

另外一個重點是寫R的程式碼邏輯不需變換,因此寫R的資料科學家可以更輕鬆的轉移過去的R程式碼,另外2015年從SparkR 1.4開始已提供66種函式,到Spark1.5提供197個函式,到今年的SparkR 1.6.x版本已提供225種函式,這種增長速度是非常驚人的,因為SparkR 1.4 是去年2015年6月發表,距離筆者寫這篇文章的時間才剛剛準備要滿一年,因此SparkR的發展非常的快速。

接下來我們就來用Windows平台先快快的體驗一下SparkR的威力吧,首先到Spark官網上去下載Spark,透過下圖的點選,下載spark-1.6.1-bin-hadoop2.6.tgz版本。


下載完成後直接解壓縮到您想要放的位置,像筆者是放在C槽區,並把名字變更為Spark。接下來打開RStudioRMicrosoft R Open都可以,這篇筆者以RStudio做示範。

首先我們進行環境的設定

Sys.setenv(SPARK_HOME = "C:\\spark") #其中C:\\Spark是您的Spark路徑與目錄名稱 library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) library(SparkR) 
接下來我們就可以開始使用SparkR,我們先使用下面兩行指令做起手式。

sc = sparkR.init();sqlContext = sparkRSQL.init(sc)
其中sc的第一行可以設定Spark的初始狀態,如:要給Spark的記憶體,詳細可參考SparkR的SparkR.init文件。第二行就是前面筆者提到的SparkContext,主要是從JavaSparkContext做初始化的動作。

接下來我們來玩玩經典的iris例子,首先先把iris的欄位名稱做修改,因為Spark裡面很多「.」的函式,避免出錯,我們先把欄位名稱以「_」取代。

newiris = iris;names(newiris) = c("Sepal_Length","Sepal_Width","Petal_Length","Petal_Width","Species")
接下來我們產生Spark超強的DataFrame,這對R使用者不陌生,只是這次是使用Spark去產生DataFrame。

df = createDataFrame(sqlContext, newiris)
接下來我們可以使用head或showDF函式觀察資料。

head(df, 5) showDF(df, 5)
接下來我們可以透過printSchema去觀察一下資料的架構。

printSchema(df)
接著我們可以透過head與select去挑選某個欄位的資料,如挑選Sepal_Length。

head(select(df, df$Sepal_Length)) head(select(df, df$Sepal_Length),10) #挑選10筆
假設筆者想挑選Sepal_Length大於5.4的資料,可以使用head與filter這兩個函式,這兩個函式用起來有沒有覺得很像R的dplyr呢? 相信R使用者很快就能夠上手SparkR。

head(filter(df, df$Sepal_Length > 5.4))
如果dplyr您夠了解,那接下來如果我們想計算Sepal_Length的做簡單的Aggregation,就可以使用下面的指令。

sepal_counts = summarize(groupBy(df, df$Sepal_Length), count = n(df$Sepal_Length))
當然如果要做廣義線性模型(GLM),SparkR的做法跟原生的R做法是完全一模一樣。

model = glm(Sepal_Length ~., data = df, family = "gaussian");summary(model)
如果還想知道其他的功能,請直接拜訪SparkR的文件

從本篇文章中我們可以快速掌握SparkR的使用,同時也了解到目前SparkR不僅支援資料選擇(Selection)、資料過濾(Filtering)、資料聚合(Aggregation),更已經開始支援Spark MLlib可以進行分散式的機器學習。因此我們可以期待未來R的資料科學家在分散式運算上可以透過SparkR更暢通無阻。

當然實務上真的全部資料都要使用SparkR嗎? 不一定,R在記憶體運算(In-memory computing)的部分也有很強的處理能力,因此有時候單機的記憶體夠多,像是MRO + Math Kernel Library,或是寫法稍微改一下(如矩陣寫法),基本上也無須要動用SparkR,雖然如此,在分散式的環境下SparkR還是有它能發展的舞台,所以讓我們繼續期待下去。

2015年11月13日 星期五

R語言從「初學」到「進階」到「跨界」的32本書籍推薦


R語言一直是數據分析界的熱門語言,也因此R語言相關的書籍也相當的多。筆者在學R的過程也看過許多R語言的書籍,筆者也收集相當多的R書籍,但大多參差不齊,有些寫得很好,有些則寫的較為艱澀,最近看到網路上大家在討論由淺入深的學習參考書籍,因此筆者也想做個小整理,包括初級、中級、高級,以及相關領域,內容如下:

[初級]

適合完全不懂R看的書,前三本都是值得參考。
[中級]

適合對R有初步認識的讀者,前三本都是值得參考。
[高級]

想挑戰R的技術的讀者,三本都非常推薦。
  • Advanced R
    • 這本書提了很多R進階的撰寫技巧,作者目前是RStudio首席資料科學家。
  • Statistical Computing in C++ and R
    • 畢竟R還是高階語言,許多效率的改善還是要去參考C++跟R整合的部分。
  • R Packages
    • 這本書是介紹如何撰寫R Packages的技巧,以及R套件與R核心整合的內容,適合非常熟悉R並且想開發R套件的讀者,與Advanced R是同一個作者。
[資料視覺化]
[網站應用]
[統計學]
[計量經濟學、金融]


[資料探勘]
[機器學習]

[資料科學]
[空間資料]
[市場研究]


其他領域結合R的書也歡迎推薦。

2015年7月29日 星期三

50個資料科學工具速查表(R、Python、Hadoop、Spark、Machine learning)

以下為國外整理的資料科學工具速查表,包含常見的工具R、Python、Hadoop、Spark,以及機器學習(Machine Learning)理論。


  1. R
  2. Python
  3. SQL
  4. Hadoop
  5. Spark
  6. Machine learning