「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#1資料
TRANSCRIPT
本日の予定表
自己紹介×16=10分程度
(1人15-30秒程度で、名前[HN]、所属ま
たはどうしてこの輪読会に興味を持った
か、今後やりたいこと、アピールなど)
第1章・2章=20~30分程度
第3章=めざせ75分
(時間あまると嬉しい)
2
1~2章はテキスト参照
1~2章は文字通り輪読しちゃう編
(追加コメント・議論は歓迎です)
(とはいえ時間制約上、ぶった切ったら
ごめんなさい)
3章は、理解が早い方はぜひ周囲を
サポートいただけると助かります!
3
某広告配信業の会社さんでは…
データサイエンティスト
アルゴリズム実装
広告配信ロジック
システム設計 etc..
データアナリスト
意思決定・経営判断
広告ビジネス企画
KPI管理 etc..
7
こんなに専門部署抱えられる会社はレア中のレアですが…
垣根はあるけど相互に参加
問題発見のための3つの切り口
大きさ
を見る
• 現状とあるべき姿とのギャップ要素を洗い出す
• その複数の要因について影響度の大きい順に並べる
分解して
見る
• 起きている現象を、その構成要素に分解
• MECEに分解するよう心がける
比較して
見る
• 分解した要素どうしを比較する
• 時系列/類似商品・サービス/ユーザ属性…で比較
10
データ分析
データサイエンティスト
アルゴリズム実装
広告配信ロジック
システム設計 etc..
自動化・最適化
推定精度向上・計算量低減
機械学習・アルゴ構築
データアナリスト
意思決定・経営判断
広告ビジネス企画
KPI管理 etc..
意思決定支援
コミュニケーションコスト低減
クロス集計・指標予測
11
Rのダウンロード
「r download」で検索
(12/22時点での最新版は 3.2.3 です。)
または
http://j.mp/downloadr を参照
すでにインストールしていた方は3.2.3へ
の更新をオススメします
12
本書で用いるデータ
「DL76333.zip」が以下にあります
http://www.sbcr.jp/support/11915.html
zipファイルを解凍したファイルは、
作業ディレクトリに入れるとラクですよ
15
作業ディレクトリって?
データが入ったテキストファイル等から、データや
プログラムを読みこんだり、画像を書き出したりし
ます。これらのファイルのある場所を「作業ディレ
クトリ」といいます。
データは作業ディレクトリに入っていると便利!
作業ディレクトリを変えたいときは、
「File > Change dir…(ディレクトリの変更)」
またはコマンド: setwd(“C:/指定先”)
16
実際にデータを取り入れよう!
解凍したフォルダの「R」にある
”section3-dau.csv”を取り込む
Excelで開くとこんな感じの139,112人分の
データが入っています
Rで開くには、コマンドを使ってみましょう
17
CSVファイルを読み込むとき
x <- ***
xという入れ物に数値や文字列、ベクトルや
関数、データなどを入れます
x <- read.csv(“***.csv”)
矢印の先にある入れ物にcsvファイルのデー
タを取り込みます
head(***)
***データの先頭数行を表示します
19
欠損値NA
今回、Excelで開くと「0」という値が、Rで
は「NA」と入っています
「NULL」も存在するが、厳密には別のもの
AA$BB[is.na(AA$BB)] <- 0
データAAにおける項目BB列のデータのうち、
「NA」となっている要素すべてに0を代入
21
欠損値NA(2)
na.~みたいな関数もあります
22
head(na.omit(dau.install.payment))
log_date app_name user_id install_date payment
7 2013-06-01 game-01 19 2013-04-15 162
81 2013-06-01 game-01 351 2013-04-18 1333
84 2013-06-01 game-01 364 2013-04-18 571
186 2013-06-01 game-01 1359 2013-04-23 81
271 2013-06-01 game-01 3547 2013-04-27 571
797 2013-06-01 game-01 9757 2013-05-20 1333
substr{}:文字列の抜き出し
AA$CC <- substr{AA$BB, 開始字数, 終了字
数}
データAAにおける項目BB列の開始字数~
終了字数までの文字列を抜き出し、デー
タAAの項目CC列に代入
23
パッケージを使うとパワーアップ!
Rにはパッケージと呼ばれる、有志が作った
拡張機能のようなものがあります。
処理を一気にやってくれるものや、高度な統
計分析を自動で行ってくれるもの、また、シ
ミュレーションツールなど豊富に存在します。
install.packages(***)→library(***)で使用可能
24
ddplyパッケージ
データ前処理には必須のパッケージ!?
くわしくは…http://rstudio-pubs-static.s3.amazonaws.com/1112_a4db493e67ed427b9e01a57312159105.html
または 「plyrパッケージの使い方メモ」でググろう
ddply{AAA,. {B, C}, summarize, YYY
=sum(XXX))
AAAデータの項目B, Cをグループ化してYYY
を加算集計して項目XXXを作成
25
ddplyパッケージ(2)
mau.payment.summary <-
ddply(mau.payment, .(log_month, user.type), summarize,
total.payment = sum(payment) )
たしかに集計結果:total.payment項目が出来ています
26
> head(mau.payment.summary)
log_month user.type total.payment
1 2013-06 existing 177886
2 2013-06 install 49837
3 2013-07 existing 177886
4 2013-07 install 29199
ddplyパッケージ(3)
ddply(AAA, .(BBB), nrow)
AAAのデータをBBB毎に分割
分割された各データの行数を計算(nrow)
分割した結果を結合してarray型として返
却
27
ifelse
ifelse(条件式, 式1, 式2)
「条件式」を満たすなら「式1」、それ以
外なら「式2」
比較演算子”==“はふつうの等号と思おう
28
mau.payment$user.type <-
ifelse(mau.payment$install_month
== mau.payment$log_month,
"install", "existing")
3章で用いるその他のパッケージ
ggplot2
• きれいなグラフが非常に効率的に作れる
• ご参考:http://id.fnshr.info/2011/10/22/ggplot2/
scales
• 今回はグラフの軸に3桁区切りを導入する
ために使用されています
29
棒グラフを描く
ggplot(mau.payment.summary,
aes(x = log_month, y = total.payment, fill =
user.type))
+ geom_bar(stat="identity")
+ scale_y_continuous(label = comma)
くわしくは…
http://stat.biopapyrus.net/ggplot/geom-bar.html
30
x軸・y軸指標の指定
user.type毎に集計
ヒストグラムを描く
ggplot(mau.payment[mau.payment$payment
> 0 & mau.payment$user.type == “install”, ],
aes(x = payment, fill = log_month)) +
geom_histogram(position = "dodge",
binwidth = 2000)
くわしくは…
http://stat.biopapyrus.net/ggplot/geom-histogram.html
31
ユーザ属性を”install”に絞っています