TokyoR40

12,166 views

Published on

Compare R and Julia

Published in: Data & Analytics
0 Comments
16 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
12,166
On SlideShare
0
From Embeds
0
Number of Embeds
1,766
Actions
Shares
0
Downloads
20
Comments
0
Likes
16
Embeds 0
No embeds

No notes for slide

TokyoR40

  1. 1. そんな気はない
  2. 2. Julia??? •  Rをdisる時に最近よく引き合いに出され る言語(一番多いのはPython) •  前回のTokyoRでも素敵なLTがありました – https://speakerdeck.com/sorami/tokyor- number-39-lt-rtojulia •  Juliaの勉強会が7月5日に!!! – JuliaTokyo#1 http://juliatokyo.connpass.com/event/6891/
  3. 3. Juliaの注意点 •  Juliaを検索するときはjulialangで検索するこ と •  新しいのであまり日本語の資料は無い •  日本語以外でも速度比較ばかりでパッケージ 解説は少ないのでグローバル承認のチャンス •  Juliaはv0.2とv0.3で互換性が無い部分があり Exampleが動かない場合があるので注意 •  まあまだv0.3とかだから仕方ないですよね •  今回はv0.3.0のprereleaseを使っています
  4. 4. ごめんなさい •  Juliaについては前半で息切れしました •  後半の機械学習手法の紹介については Juliaは関連情報の紹介のみにとどめてい ます •  Juliaは情報が少なすぎるんや
  5. 5. 16章の流れ 1.  データの読み込み 2.  データの概要把握(集計・可視化) 3.  機械学習で予測モデルを作る
  6. 6. ① データの 読み込み
  7. 7. データの読み込み •  パッケージ組み込みデータ •  CSVファイル •  Excelファイル •  データベース
  8. 8. パッケージ組み込みデータ #  irisデータをロード #  既に読み込まれている場合もある data("iris", package="datasets") Pkg.add("RDatasets")  #パッケージインストール using RDatasets #パッケージ読み込み dataset("datasets", "iris") 古い資料だとdataset関数がdataと表記されているので注意
  9. 9. CSVファイル # read.tableでsep=","を指定してもOK read.csv("hoge.csv") readtable("hoge.csv") data.tableパッケージのfreadが最速なので使える時はこちらを使 うと良いです 下記はdata.tableパッケージ全般の@sfchaosさんの発表資料 http://www.slideshare.net/sfchaos/datatable
  10. 10. Excelファイル library(XLConnect) wb <- loadWorkbook("hoge.xlsx") wb["Sheet1"] #見つからず Excel関係のパッケージについては三重大奥村先生のサイトが有用 http://oku.edu.mie-u.ac.jp/~okumura/stat/exceldata.html
  11. 11. データベース library(RODBC) con <- odbcConnect("source", usr="johndoe",pwd="12345") sqlQuery(con, "SELECT COUNT(*) FROM hoge;") using ODBC ODBC.connect("source", usr="johndoe",pwd="12345") query("SELECT COUNT(*) FROM hoge;")
  12. 12. データベース(dplyr) library(dplyr) # コネクションの作成 mysrc <- src_mysql(host="hoge.com", user="johndoe",password="12345") # hogeテーブルを呼び出す mytbl <- tbl(mysrc, "hoge") # hogeテーブルに対しカウントをかける mytbl %>% summarise(count=n()) dplyrのデータベース周りは下記から http://rpubs.com/dichika/dplyr_db
  13. 13. ② データの 概要をつかむ
  14. 14.  データの概要をつかむ •  基本統計量の確認 •  データの集約 •  可視化 ここではggplot2パッケージの diamondsデータを例にとります
  15. 15. 基本統計量の確認 data("diamonds",package="ggplot2") summary(diamonds) using RDatasets dataset("ggplot2", "diamonds") # windowsだと文字列でエラーが出るので注意 describe(diamonds)
  16. 16. summaryの結果
  17. 17. !!!これがダイヤモンドだ!!!
  18. 18. データの集約 diamondsを以下のように集約したい  cutとcolorの組合せごとにpriceの平均をとる cut color Priceの平均 Fair D 1000 Good E 3000 Premium H 2000 … … …
  19. 19. データの集約(組み込み) by(diamonds$price, diamonds[,c("cut","color")], mean) Using DataFrames by(diamonds, [:Cut,:Color], df -> DataFrame(res=mean(df[:Price])))
  20. 20. データの集約(dplyr) library(dplyr) diamonds %>% group_by(cut,color) %>% summarise(res=mean(price)) 超速集計パッケージdplyrの入門記事は下記から http://rpubs.com/dichika/dplyr_intro 使用例は@gg_hatanoさんのブログが有用 http://gg-hogehoge.hatenablog.com/
  21. 21. データの集約(ピボットテーブル) library(reshape2) # ピボットテーブルの元データを作る diamonds.m <- melt(diamonds, id.var=c("cut","color"), measure.var="price") # ピボットテーブルを作成 dcast(diamonds.m, cut~color, mean) データの集約全般はR言語上級ハンドブック執筆者の @a_bickyさんの資料が超有用 http://www.slideshare.net/abicky/r-10128090
  22. 22. 可視化 •  ヒストグラム •  散布図 •  箱ひげ図
  23. 23. ヒストグラム # 組み込み関数 hist(diamonds$price) # ggplot2を使って描画 library(ggplot2) ggplot(diamonds,aes(x=price)) + geom_histogram() # Gadflyはggplot2ライクに描ける using Gadfly plot(diamonds, x="Price", Geom.histogram)
  24. 24. 散布図 # 組み込み関数 with(diamonds,plot(carat, price)) # ggplot2を使って描画 library(ggplot2) ggplot(diamonds,aes(x=carat, y=price)) + geom_point() using Gadfly plot(diamonds, x="Carat", y="Price", Geom.point)
  25. 25. 箱ひげ図 # 組み込み関数 boxplot(carat~color, diamonds) # ggplot2を使って描画 library(ggplot2) ggplot(diamonds, aes(x=color,y=carat)) + geom_boxplot() using Gadfly plot(diamonds, x="Color", y="Carat", Geom.boxplot)
  26. 26. ③機械学習で 予測モデルを作る
  27. 27. 機械学習で予測モデルを作る 下記4つを使って予測モデルを作ってみます。 機械学習はパラメータチューニングが命で すが今回は初期値を使っています。 1.  SVM 2.  ランダムフォレスト 3.  GBM 4.  ニューラルネットワーク
  28. 28. ここではタイタニック号の乗員データを使います # データを某所からロード load(url('http://biostat.mc.vanderbilt.edu/wiki/pub/ Main/DataSets/titanic3.sav')) # データをモデル作成用と検証用データに分割 set.seed(1) ix <- sample(seq_len(nrow(titanic3)), trunc(nrow(titanic3)/2)) titanic.train <- titanic3[ix,] #モデル作成用 titanic.pred <- titanic3[-ix,] # 検証用
  29. 29. SVM(サポートベクターマシン) library(kernlab) train <- ksvm(survived ~ pclass + sex + age + sibsp, data = titanic.train) predict(train, type="response", newdata=titanic.pred) liblinearを使うものとJuliaで全部書いたものの2種類があ ります。後者については下記が有用です。 http://qiita.com/chezou/items/d090f26dcb31818d6964 SVMのパラメータチューニングについては以下が有用。 http://d.hatena.ne.jp/sleepy_yoshi/20120624/p1
  30. 30. ランダムフォレスト library(randomForest) train <- randomForest ( as.factor(survived) ~ pclass + sex + age + sibsp, data = titanic.train, na.action=na.omit) predict(train, type="prob", newdata=titanic.pred) パッケージはこちら https://github.com/bensadeghi/DecisionTree.jl 決定木も含めた使用例はこちら http://bensadeghi.com/decision-trees-julia/
  31. 31. GBM library(gbm) train <- gbm (survived ~ pclass + sex + age + sibsp, data = titanic.train) predict(train, type="response", newdata=titanic.pred, n.trees=100) Juliaのパッケージは見つけられず GBMはパラメータが多いのでチューニングが面倒 チューニングの初歩として下記動画が有用 http://vimeo.com/71992876
  32. 32. ニューラルネットワーク localH2O = h2o.init() titanic.train.h2o <- as.h2o(localH2O,titanic.train) titanic.pred.h2o <- as.h2o(localH2O,titanic.pred) train <-h2o.deeplearning(x=c(1,4,5,6), y=2, data=titanic.train.h2o) h2o.predict(train, newdata=titanic.pred.h2o) Juliaのパッケージは見つけられず h2oについては山下勝司さんの資料が有用 http://www.slideshare.net/yamakatu/mlct01-lt
  33. 33. 色々試すのは面倒 •  機械学習の各種手法をまとめて評価でき るcaretパッケージが便利 •  詳しくはTokyoR#38の@sfchaosさんの資 料を参照のこと http://www.slideshare.net/sfchaos/ss-33703018 •  JuliaだとMLBase?
  34. 34. 最後に •  Rの集計・可視化は色々なやり方があるの でお好みの方法でどうぞ •  Rにおける最新の前処理動向を知りたい時 はHadley Wickhamの動向をつかんでおけ ば良いと思います •  Juliaに関しては速度比較ばかりで DataFrameとか基本的なパッケージの情 報が異常に少ないので皆さん人柱に

×