Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tokyor60 r data_science_part1

2,913 views

Published on

Tokyo.R#60 初心者セッション

Published in: Data & Analytics

Tokyor60 r data_science_part1

  1. 1. 第Ⅰ部 Rとデータマイニング基礎 Rによる データサイエンス 里 洋平(@yokkuns) Tokyo.R 初心者セッション
  2. 2. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  3. 3. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  4. 4. 里 洋平(@yokkuns) DATUM STUDIO 株式会社 取締役CAO ■略歴 ・ヤフー株式会社 ・株式会社ディー・エヌ・エー ・株式会社ドリコム ・DATUM STUDIO株式会社 ■活動 ・Tokyo.R 主催者 ・著書9冊 Tokyo.
  5. 5. バックグラウンド
  6. 6. 著書
  7. 7. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  8. 8. 本日のテーマ Rによるデータサイエンス 第Ⅰ部 【第I部 Rとデータマイニングの基礎】 第1章 データマイニングとR 言語 第2章 データの入出力と編集 第3章 データの演算と固有値,基本統計量 第4章 データの視覚化 【第II部 Rによるデータ解析・データマイニング】 第1章 主成分分析 第2章 因子分析 ・・・
  9. 9. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  10. 10. データマイニングとは 膨大なデータ から宝(情報・知識)を掘り出す技術 引用:https://boxil.jp/data_mining/a215
  11. 11. データマイニングの事例 • 商品陳列の最適化 • 顧客の履歴データから購入する商品の組み合わせに 関するパタンを抽出し、陳列を見直し売上を上げた • 不正利用の検知 • クレジットカードの使用履歴から不正利用に関する情報 を見つけ出し、未然に防止 • 解約の阻止 • 電話の使用履歴から契約者の行動パタンを特定し、 契約者の逃れを阻止 • ・・・
  12. 12. データマイニングに使われる プログラミング言語 引用:http://bnreddybi.blogspot.jp/2016/07/comparison-between-sas-r-and-spss.html?m=1
  13. 13. R言語とは • オープンソースかつフリーの統計分析ソフトウェア • Windows/Mac OS X/Linux 各種OSで動作する • 可能なかぎり最新版を利用する事を推奨
  14. 14. RStudioとは • Rで分析を行いやすくするためのソフトウェア • R単体ではスクリプトを記述しなければならない 操作もマウス操作で簡単に出来る
  15. 15. RStudioの画面構成
  16. 16. RStudioの画面構成 コンソール
  17. 17. RStudioの画面構成 エディタ コンソール
  18. 18. RStudioの画面構成 エディタ タブ 1 コンソール
  19. 19. RStudioの画面構成 エディタ タブ 1 コンソール タブ 2
  20. 20. RStudioのプロジェクト機能 • 分析を管理するための機能 • 1つのプロジェクトや分析レポートのような単位で プロジェクトを作成し、利用する ○○分析プロジェクト ○○分析プロジェクト.Rproj 売上データ.csv 顧客データ.csv 分析スクリプト.R ××分析プロジェクト ××分析プロジェクト.Rproj 分析スクリプト.R レポート.Rmd プロジェクト
  21. 21. プロジェクトの作成 1 3 2 4 5
  22. 22. R言語の基本 1行1式が原則 # 平均50、標準偏差10の正規乱数を40個生成 x <- rnorm(40, mean = 50, sd = 10) # ヒストグラムを描画する hist(x)
  23. 23. R言語の基本 1行1式が原則 # 平均50、標準偏差10の正規乱数を40個生成 x <- rnorm(40, mean = 50, sd = 10) # ヒストグラムを描画する hist(x) 式 式
  24. 24. R言語の基本 1行1式が原則 # 平均50、標準偏差10の正規乱数を40個生成 x <- rnorm(40, mean = 50, sd = 10) # ヒストグラムを描画する hist(x) コメント コメント 式 式
  25. 25. 関数呼び出し 関数(引数) rnorm(n = 40, mean = 50, sd = 10) 乱数の個数 平均 標準偏差 正規乱数を 生成する関数
  26. 26. パッケージ 様々な関数がまとめられたもの
  27. 27. パッケージの インストールと読み込み install.packages関数/library関数 # ggplot2 パッケージをインストール install.packages("ggplot2") # ggplot2 パッケージを読み込む library("ggplot2")
  28. 28. 変数 変数 <- 関数呼び出しや演算といった式 # 正規乱数を生成し、 x という名前で定義 x <- rnorm(40, mean = 50, sd = 10) # x には正規乱数が格納されているので、それをプロット hist(x)
  29. 29. データ型 • 実数 (numeric) • 1, 3.14, ... • 整数 (integer) • 1, -2, ... • 複素数 (complex) • 1 + i, 2 - 3i, -1 + 0i... • 文字列 (character) • "abc", 'あいうえお' • 因子(factor)
  30. 30. データ構造 • ベクトル • 行列 • リスト • データフレーム
  31. 31. ベクトル • データをある順序でならべたもの • 数値ベクトル • 論理ベクトル • 文字ベクトル • 同じデータ型で作られる • 作成方法 • c関数
  32. 32. 行列 • 長さが同じである複数ベクトルを1つにまとめた n行m列のデータセット • 同じデータ型で作られる • 作成方法 • matrix関数 • cbind関数 • rbind関数
  33. 33. リスト • 順序付けられたオブジェクトの集まり • 個々の成分は、同じ型である必要はない • 作成方法 • list関数
  34. 34. データフレーム • Rでデータ分析をする時に最も良く使うデータ構造 • 長さが同じである複数ベクトルを1つにまとめた n行m列のデータセット • 実態は、data.frameクラスを持ったリスト • 異なるデータ型で作成可能 • 作成方法 • data.frame関数 • read.table関数
  35. 35. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  36. 36. 直接入力 ベクトル > # 果物の売上の割合(単位は%) > sales<- c(15,20,25,10,30) > # ラベル > fruits <- c("Cherry","Apple","Grape","Banana","Other") > # ベクトルにラベルをつける > names(sales) <- fruits > sales Cherry Apple Grape Banana Other 15 20 25 10 30
  37. 37. 直接入力 行列 > sales2 <- matrix( + data = c(15, 20, 25, 10, 30, + 10, 25, 20, 25, 20), + nrow = 2, ncol = 5, byrow = T + ) > > colnames(sales2) <- fruits > rownames(sales2) <- c("A", "B") > > sales2 Cherry Apple Grape Banana Other A 15 20 25 10 30 B 10 25 20 25 20
  38. 38. 直接入力 データフレーム > sales3 <- data.frame( + shop = c("A", "B"), + Cherry = c(15, 10), + Apple = c(20, 25), + Grape = c(25, 20), + Banana = c(10, 25), + Other = c(30, 20) + ) > > sales3 shop Cherry Apple Grape Banana Other 1 A 15 20 25 10 30 2 B 10 25 20 25 20
  39. 39. ファイル入出力 read.csv関数/write.csv関数 > # csvファイルから読み込み > sales3 <- read.csv("sales3.csv") > sales3 shop Cherry Apple Grape Banana Other 1 A 15 20 25 10 30 2 B 10 25 20 25 20 > # csvファイルで出力 > write.csv(sales3, "sales3_2.csv", row.names = F)
  40. 40. 【補足】 DBからの読み込み DBI::dbGetQuery関数 # SQLite用のライブラリーを読み込む(DBI も同時に読み込まれる) library("RSQLite") # SQLite用のドライバーを作成し、データベース my.db と接続 driver <- dbDriver("SQLite") conn <- dbConnect(driver, "my.db") # SQLを発行してデータを取得 df <- dbGetQuery(conn, "SELECT * FROM iris")
  41. 41. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  42. 42. 算術演算子 演算子 意味 例 結果 + 加算 1 + 2 3 - 減算 5 - 1 4 * 乗算 3 * 5 15 / 除算 10 / 3 3.333333 %% 余り 10 %% 3 1 %/% 整数除算 10 %/% 3 3 ^ べき乗 2^3 8
  43. 43. 演算子 意味 例 結果 == 等しい 1 == 1 TRUE != 等しくない 1 != 1 FALSE > 左辺が右辺より大きい 2 > 1 TRUE < 左辺が右辺より小さい 2 < 1 FALSE >= 左辺が右辺より大きい か等しい 2 >= 1 TRUE <= 左辺が右辺より小さい か等しい 2 <= 1 FALSE 比較演算子
  44. 44. 演算子 意味 例 結果 ! 否定(NOT) !(F) TRUE & 積(AND) c(T, T) & c(T, F) TRUE FALSE && 積(AND) T && T TRUE | 和(OR) c(T, T) | c(T, F) TRUE TRUE || 和(OR) T || F TRUE xor 排他的理論和 xor(T, T) FALSE 論理演算子
  45. 45. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  46. 46. 基本統計量 関数 合計 sum 算術平均 mean 最大値 max 最小値 min 範囲(最大値-最小値) range 基本統計量 関数 中央値 median 分散 var 標準偏差 sd 分位数 quantile 統計要約 summary 基本統計量の関数
  47. 47. 行/列毎の基本統計量 apply(X, MARGIN, FUN, ...) 引数名 意味 X データ MARGIN 行単位の算出は1、列単位の算出は2を指定する。 FUN 適用させる関数。統計量の関数や計算式を与える。 > # 列毎の合計 > apply(iris[,1:4],2,sum) Sepal.Length Sepal.Width Petal.Length Petal.Width 876.5 458.6 563.7 179.9
  48. 48. 【補足】 グループ毎の基本統計量 > library(dplyr) > > iris %>% + group_by(Species) %>% + summarise( + Sepal.Length.mean = mean(Sepal.Length) + ) %>% + ungroup() Source: local data frame [3 x 2] Species Sepal.Length.mean (fctr) (dbl) 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588
  49. 49. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  50. 50. {ggplot2}パッケージとは 統一された記法でグラフ描画が出来るパッケージ
  51. 51. グラフ作成のイメージ
  52. 52. レイヤー構造 レイヤーを重ねた結果が最終的に描画される グラフ描画対象 散布図を描画 描画テーマ変更
  53. 53. 基本的な文法 g <- ggplot(データフレーム, aes(x = x軸列名, y = y軸列名)) + geom_xxx(aes(...)) + geom_yyy(aes(...)) + xlab("x軸ラベル") + ylab("y軸ラベル") + ggtitle("グラフタイトル") + theme_xxx() print(g) 散布図や箱ひげ図など、 描画したい図に応じた関数 描画スタイルやフォントの変更 (明示的に)描画実行を行う
  54. 54. サンプルデータ作成① 商品1売上げデータ、商品1,2売上げデータ sales.data1 <- data.frame( item = "item1", month = c("04", "05", "06", "07", "08", "09"), sales = c(800, 1000, 1800, 1500, 1400, 2000) ) sales.data2 <- data.frame( item = "item2", month = c("04", "05", "06", "07", "08", "09"), sales = c(700, 900, 1500, 1700, 1800, 2400) ) sales.data12 <- rbind(sales.data1, sales.data2)
  55. 55. サンプルデータ作成② 店舗1〜3の商品3,4売上げデータ set.seed(10) sales.data34 <- data.frame( shop = sample(c("1", "2", "3"), 100, replace = T), item3 = rnorm(100, 100, 30) ) sales.data34$item4 <- round( 0.9 * sales.data34$item3 + 80 * as.numeric(sales.data34$shop) + rnorm(100, 30, 15) )
  56. 56. 棒グラフ ggplot(sales.data1, aes(x = month, y = sales)) + geom_bar(stat = "identity")
  57. 57. 積み上げ棒グラフ ggplot(sales.data12, aes(x = month, y = sales)) + geom_bar(stat = "identity", aes(fill = item))
  58. 58. 折れ線グラフ ggplot(sales.data1, aes(x = month, y = sales)) + geom_line(aes(group = 1))
  59. 59. グループ別折れ線グラフ ggplot(sales.data12, aes(x = month, y = sales)) + geom_line(aes(group = item, col = item))
  60. 60. 散布図 ggplot(sales.data34, aes(x = item3, y = item4)) + geom_point()
  61. 61. グループ別散布図 ggplot(sales.data34, aes(x = item3, y = item4)) + geom_point(aes(col = shop))
  62. 62. ヒストグラム ggplot(sales.data34, aes(x = item3)) + geom_histogram()
  63. 63. 参考 https://www.slideshare.net/yokkuns/tokyor42-ggplot2
  64. 64. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに
  65. 65. 懇親会について • 本日終了後に懇親会を開催します。 • 社会人1000円 • 学生 無料 • 参加希望の方は、受付までご連絡下さい!
  66. 66. 次回Tokyo.Rについて • 次回Tokyo.Rは、5/20 or 5/27 で考えてます • 発表者募集中です!
  67. 67. 会場について • Tokyo.Rを開催する会場を探しています! • 毎月3 or 4週目の土曜に開催しますので、 提供出来そうな方は、ぜひお願いします!
  68. 68. AGENDA • 講師紹介 • 本日のテーマ • データマイニングとR言語 • データの入出力 • データの演算 • 基本統計量 • データの可視化 • さいごに

×