Upload
Download free for 30 days
Login
Submit search
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
1 like
435 views
S
Shintaro Nomura
タイトルに掲げた書籍( http://amzn.to/21THedJ )の輪読会資料です
Data & Analytics
Related topics:
Data Mining Insights
Read more
1 of 53
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
More Related Content
PPTX
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#7資料
Shintaro Nomura
PDF
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる 統計解析・データマイニング R言語入門
Koichi Hamada
PDF
Rユーザのためのspark入門
Shintaro Fukushima
PDF
20120405 setsunaセミナー
Takahiro Iwase
PDF
RedisのBitCountとHyperLogLogを使用した超高速Unique User数集計
tmatsuura
PDF
NIPS 2012 読む会
正志 坪坂
PDF
データベース09 - データベース設計
Kenta Oku
PDF
データ入力が終わってから分析前にすること
Masaru Tokuoka
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#7資料
Shintaro Nomura
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる 統計解析・データマイニング R言語入門
Koichi Hamada
Rユーザのためのspark入門
Shintaro Fukushima
20120405 setsunaセミナー
Takahiro Iwase
RedisのBitCountとHyperLogLogを使用した超高速Unique User数集計
tmatsuura
NIPS 2012 読む会
正志 坪坂
データベース09 - データベース設計
Kenta Oku
データ入力が終わってから分析前にすること
Masaru Tokuoka
What's hot
(20)
PDF
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
Yasuyuki Sugai
PDF
データベース11 - データベースとプログラム
Kenta Oku
PDF
Big Data Bootstrap (ICML読み会)
正志 坪坂
PPTX
さくっとはじめるテキストマイニング(R言語) スタートアップ編
Yutaka Shimada
PDF
DeltaCubeにおけるユニークユーザー集計高速化(理論編)
BrainPad Inc.
PDF
ルールベースから機械学習への道 公開用
nishio
PDF
SQLアンチパターン(インデックスショットガン)
Tomoaki Uchida
PDF
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
PDF
20140708 オンラインゲームソリューション
Takahiro Inoue
PDF
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Yasuyuki Sugai
PPTX
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
Daiyu Hatakeyama
PDF
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Shintaro Fukushima
PDF
オンラインゲームソリューション@トレジャーデータ
Takahiro Inoue
PDF
Infer.NETを使ってLDAを実装してみた
正志 坪坂
PDF
使ってみませんか?pg hint_plan
Masao Fujii
PPTX
エンジニアのための機械学習の基礎
Daiyu Hatakeyama
PPTX
データサイエンティスト必見!M-1グランプリ
Satoshi Kitajima
PDF
MySQL のユーザー定義変数と RDB のココロ
tsudaa
PPTX
Jubatus使ってみた 作ってみたJubatus
JubatusOfficial
PPTX
R超入門機械学習をはじめよう
幹雄 小川
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
Yasuyuki Sugai
データベース11 - データベースとプログラム
Kenta Oku
Big Data Bootstrap (ICML読み会)
正志 坪坂
さくっとはじめるテキストマイニング(R言語) スタートアップ編
Yutaka Shimada
DeltaCubeにおけるユニークユーザー集計高速化(理論編)
BrainPad Inc.
ルールベースから機械学習への道 公開用
nishio
SQLアンチパターン(インデックスショットガン)
Tomoaki Uchida
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
20140708 オンラインゲームソリューション
Takahiro Inoue
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Yasuyuki Sugai
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
Daiyu Hatakeyama
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Shintaro Fukushima
オンラインゲームソリューション@トレジャーデータ
Takahiro Inoue
Infer.NETを使ってLDAを実装してみた
正志 坪坂
使ってみませんか?pg hint_plan
Masao Fujii
エンジニアのための機械学習の基礎
Daiyu Hatakeyama
データサイエンティスト必見!M-1グランプリ
Satoshi Kitajima
MySQL のユーザー定義変数と RDB のココロ
tsudaa
Jubatus使ってみた 作ってみたJubatus
JubatusOfficial
R超入門機械学習をはじめよう
幹雄 小川
Ad
Similar to 「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
(20)
PPTX
TensorFlowをもう少し詳しく入門
tak9029
PDF
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
PDF
DTrace for biginners part(2)
Shoji Haraguchi
PDF
Tokyor23 doradora09
Nobuaki Oshiro
PDF
初心者講習会資料(Osaka.r#6)
Masahiro Hayashi
PDF
開発中 3Dプリント API for Flash の 紹介 【as3sculpteo】
Sadao Tokuyama
PDF
Oracle Cloud Developers Meetup@東京
tuchimur
PDF
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
PDF
Inside of Asakusa DSL
Suguru ARAKAWA
PDF
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
de:code 2017
PDF
Flutterを体験してみませんか
cch-robo
PDF
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
PDF
Djangoフレームワークの紹介
Shinya Okano
PDF
R言語勉強会#4.pdf
Takuya Kubo
PDF
20190119 aws-study-pg-extension
Toshi Harada
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
PDF
RのffでGLMしてみたけど...
Kazuya Wada
PDF
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
Insight Technology, Inc.
PDF
R言語勉強会#5.pdf
Takuya Kubo
PDF
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
TensorFlowをもう少し詳しく入門
tak9029
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
DTrace for biginners part(2)
Shoji Haraguchi
Tokyor23 doradora09
Nobuaki Oshiro
初心者講習会資料(Osaka.r#6)
Masahiro Hayashi
開発中 3Dプリント API for Flash の 紹介 【as3sculpteo】
Sadao Tokuyama
Oracle Cloud Developers Meetup@東京
tuchimur
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
Inside of Asakusa DSL
Suguru ARAKAWA
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
de:code 2017
Flutterを体験してみませんか
cch-robo
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
Djangoフレームワークの紹介
Shinya Okano
R言語勉強会#4.pdf
Takuya Kubo
20190119 aws-study-pg-extension
Toshi Harada
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
RのffでGLMしてみたけど...
Kazuya Wada
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
Insight Technology, Inc.
R言語勉強会#5.pdf
Takuya Kubo
第2回品川Redmine勉強会(日本語全文検索)
Masanori Machii
Ad
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会#5資料
1.
「ビジネス活用事例で学ぶ データサイエンス入門」輪読会 #5 53 PAGES Shintaro
Nomura R で 学 ぶ 2016.03.25 @ Akiba Code
2.
Rのダウンロード 「r download」で検索 (3/25時点での最新版は 3.2.3
です。) または http://j.mp/downloadr を参照 すでにインストールしていた方は3.2.3へ の更新をオススメします 2
3.
本書で用いるデータ 「DL76333.zip」が以下にあります http://www.sbcr.jp/support/11915.html zipファイルを解凍したファイルは、 作業ディレクトリに入れるとラクですよ 3
4.
作業ディレクトリって? データが入ったテキストファイル等から、データや プログラムを読みこんだり、画像を書き出したりし ます。これらのファイルのある場所を「作業ディレ クトリ」といいます。 データは作業ディレクトリに入っていると便利!
作業ディレクトリを変えたいときは、 「File > Change dir…(ディレクトリの変更)」 またはコマンド: setwd(“C:/指定先”) 4
5.
データ分析の模範フロー(復習) 現状と あるべ き姿 問題 発見 データ 収集と 加工 データ 分析 アク ション 5 ギャップから 問題の構造を把握
6.
現状とあるべき姿(1) 現状と あるべ き姿 問題 発見 データ 収集と 加工 データ 分析 アク ション 6 ギャップから 問題の構造を把握
7.
現状とあるべき姿(2) 現状 携帯電話(FP)のユーザ減 少量と比較して、スマホ (SP)ユーザの増加量が少 ないように感じる もしかしたら、ID移行に 失敗しているのでは…? あるべき姿
携帯電話(FP)のユーザ減 少を、スマホ(SP)ユーザ の増加量で補う状態 FP→SPへのユーザの移行 に成功している 7 今回の「仮説」
8.
分析結果によるアクション決定 現状と あるべ き姿 問題 発見 データ 収集と 加工 データ 分析 アク ション 8 ギャップから 問題の構造を把握
9.
把握した問題と、分析による対応 ID移行失敗の影響=大 他の開発案件を中止し、 ID移行システムの改修や UIの改善に注力 ID移行失敗の影響=小 ID移行システムの改修よ りも、スマホ(SP)向けプ ロモーション施策を見直 す(広告予算増など) 9
10.
では、分析ロジックは? 現状と あるべ き姿 問題 発見 データ 収集と 加工 データ 分析 アク ション 10 ギャップから 問題の構造を把握
11.
今回の分析ロジック ID移行失敗の影響=大 ID移行の失敗による「離 脱」ユーザが、自然離脱に 比べて非常に多くなる 離脱ユーザと移行失敗ユー ザとの間の1月アクセス状 況に差異がなくなる ID移行失敗の影響=小
ID移行の失敗による「離 脱」ユーザが、自然離脱 に比べて少ない 両者のアクセス数の差異 がはっきり出る! 11
12.
今回の分析ロジック(2) ID移行失敗の影響=大 ID移行失敗の影響=小 12
13.
そんなの無理筋じゃない? ID移行失敗の影響=大 ID移行失敗の影響=小 13 ・「アクセス数が多い離脱」が 増えたら「モデルを作れない」…? ・モデルが作れたら「ID移行失敗 による離脱が大きい可能性…?
14.
ちょっと言ってる意味分からないです そもそもその「モデル」の構築手法を誤って いたら、結論だって誤りますよね 仕方ないので以下では、引き続きテキストを使 用して、 データ加工の手法
「ロジスティック回帰」とは何か について進めていきます 14
15.
CSVファイルを読み込む(復習) dau <- *** xという入れ物に数値や文字列、ベクトルや 関数、データなどを入れます dau
<- read.csv(“***.csv”) dauにcsvファイルのデータを取り込みます head(***) ***データの先頭数行を表示します 15
16.
移行した人かどうかデータの整理 unique(AA[ , c(“XX”,
“YY”, “ZZ”)) ベクトルc( )の内容にダブりがある場合、そ れらの重複を排除して1行にまとめる mau <- unique (dau[, c(“region_month”, “device”, “user_id”)]) ※31日分のユーザデータの重複を排除し、整 理された「mau」というデータに加工する 16
17.
データの整理(2) fp.mau <- unique
(dau[dau$device=="FP", c("region_month", "device", "user_id")]) ・dauの「device」列が ”FP”のデータだけ 集める (“SP”も同様に行う) 17
18.
1月と2月にデータを分ける fp.mau1 <- fp.mau[fp.mau$region_month ==
“2013-01”, ] ・前ページ踏まえればなんとなく分かる気 がする このデータをFP・SP、1月・2月で計4 種類作成します 18
19.
1月と2月に分ける(2) fp.mau1 <- fp.mau[fp.mau$region_month ==
“2013-01”, ] fp.mau2 <- fp.mau[fp.mau$region_month == "2013-02", ] sp.mau1 <- sp.mau[sp.mau$region_month == "2013-01", ] sp.mau2 <- sp.mau[sp.mau$region_month == "2013-02", ] 19
20.
1月FP利用→2月にアクセスがあるか mauの「is_access」列に「1」を挿入する 新「mau」に加工 20
21.
1月FP→翌月アクセスあるか(2) fp.mau1 <- merge(fp.mau1, mau[mau$region_month
== “2013-02”, c(“user_id”, “is_access”)], by = “user_id”, all.x = T) ◎新「mau」のregion_monthが2013-02であ るデータと、旧fp.mau1(ガラケー・1月ア クセス)とをuser_idに紐付けてマージする 21
22.
1月FP→翌月アクセスあるか(3) is_access=1の user_id→2月アクセスあり is_accessが欠損値(N/A)→2月アクセスなし 22
23.
1月FP→翌月アクセスあるか(4) fp.mau1$is_access[is.na(fp.mau1$is_access) ] <- 0 ◎欠損値だと不都合があるので、新 「fp.mau1」のis_accessが空白(na)である データに「0」を代入する 23
24.
1月携帯利用→2月携帯利用かどうか fp.mau2$is_fp <- 1 fp.mau1
<- merge(fp.mau1, fp.mau2[, c("user_id", "is_fp")], by = "user_id", all.x = T) ◎旧「fp.mau2(携帯・2月アクセスあり)」 データに「is_fp」列を加え、そこに1を代入 ◎新「fp.mau1」と新「fp.mau2」を先程と同 様にマージさせる ◎その後、欠損値に「0」を代入(上では省略) 24
25.
1月携帯利用→2月SP利用かどうか sp.mau2$is_sp <- 1 fp.mau1
<- merge(fp.mau1, sp.mau2[, c(“user_id”, “is_sp”)], by = "user_id", all.x = T) ◎「sp.mau2(スマホ・2月アクセスあり)」 データに「is_sp」列を加え、そこに1を代入 ◎新「fp.mau1」と新「sp.mau2」を先程と同 様にマージさせる ◎その後、欠損値に「0」を代入(上では省略) 25
26.
「1月携帯利用」データの加工状況 is_fp (携帯・2月アクセスあり) is_sp(スマホ・2月アクセスあり) 26
27.
1月携帯利用→翌月ナシorSP利用 fp.mau1 <- fp.mau1[fp.mau1$is_access ==
0 | fp.mau1$is_sp == 1, ] ◎2月アクセス=「なし」 ◎“|”は「または(OR)」 ◎スマホ・2月アクセス=「あり」 のみのデータに「fp.mau1」を再加工 27
28.
月次データの前処理が完了 1月携帯電話利用で2月は利用なし、ある いはスマートフォン利用があったユーザ 28
29.
次に、日次アクセスデータを整える fp.dau1 <- dau[dau$device
== "FP" & dau$region_month == "2013-01", ] fp.dau1$is_access <- 1 ◎”dau”の中で「1月携帯アクセスあり」 データを取り出し、その「is_access」に “1”フラグを立てる 29
30.
日次アクセスデータを整える(2) 「fp.dau1」:”region_day”にアクセス日 データがYYYY-MM-DD形式で入っている 分析には使いづらいのでさらに加工 30
31.
dcast関数:復習(p.81) dcast(AAA, XX ~
YY + ZZ, value.var=”CCC”, length) ◎AAAデータから縦軸をXX、横軸をYY×ZZ のクロス集計を算出 ◎集計値は“CCC”の値 ※reshape2の読み込みが必須です 31
32.
dcast関数(説明は省略) dcast(data, formula,
fun.aggregate=NULL, ..., margins=NULL, subset=NULL, fill=NULL, drop=TRUE, value.var=guess_value(data)) ◎data:melt() されたような形でカテゴリ変数を含む data.frame ◎formula:x_var ~ y_var ~ z_var ~ ... のような形で出力形式を指定 ◎fun.aggregate=NULL:mean や sum など、整形後に同じマスに来る複数の 値に適用する関数。デフォルトでは length が働いて要素数が得られる。 ◎...:aggregate関数への引数を渡せる ◎margins=NULL:列全体の平均や行全体の和などを追加するかどうか ◎subset=NULL:適用範囲を限定する e.g., subset=.(variable=="length") ◎fill=NULL ◎drop=TRUE ◎value.var=guess_value(data) http://meme.biology.tohoku.ac.jp/students/iwasaki/rstats/reshape2.html 32
33.
日次アクセスデータを整える(3) library(reshape2) fp.dau1.cast <- dcast(fp.dau1,
user_id ~ region_day, value.var = "is_access", function(x) as.character(length(x))) ◎今回、function(x)以降は省略できそうです 33
34.
日次アクセスデータを整える(4) 「fp.dau1.cast」の整理が完了しました 34
35.
日次アクセスデータを整える(5) names(fp.dau1.cast)[-1] <- paste0("X",
1:31, "day") ◎”fp.dau1.cast”の1列目を除くラベル(項 目名)を、「X1day」から「X31day」に変 更します ◎「paste0」は文字列を結合する関数です 35
36.
日次データの前処理が完了 日次データ最終版 36
37.
最後に日次データと月次データの結合 fp.dau1.cast <- merge(fp.dau1.cast, fp.mau1[,
c(“user_id”, “is_sp”)], by = "user_id") ◎”fp.dau1.cast”データと”fp.mau1”内の 「is_sp(2月スマホアクセスあり)」データ とを、user_idに紐付けて結合します 37
38.
分析のための収集データ加工が完了 「 fp.dau1.cast」最終版(最右列に注目) 38
39.
table関数による要素の個数集計 table(fp.dau1.cast$is_sp) ◎”fp.dau1.cast”の「is_sp」には「0」が190 名分、「1」が62名分のデータが入ってい ることが確認できます 39 0 1 190 62
40.
ここまで完了したことになります 現状と あるべ き姿 問題 発見 データ 収集と 加工 データ 分析 アク ション 40 ギャップから 問題の構造を把握
41.
ようやく前処理から分析へ 現状と あるべ き姿 問題 発見 データ 収集と 加工 データ 分析 アク ション 41 ギャップから 問題の構造を把握
42.
今回用いる分析 ロジスティック回帰分析(画像出典) 42
43.
こないだの回帰分析と何が違うの? ロジスティック回帰分析 𝑦 = 1 1+𝑒−(
𝑎 𝑖 𝑥 𝑖+𝑏)に回帰 質的データに用いる yのとる値はxがなんで あっても0~1 任意のxに対するyが0か 1かの予測に利用できる 重回帰分析 𝑦 = 𝑎𝑖 𝑥𝑖 + 𝑏 に回帰 量的データに用いる 左記のような0~1の間に yが入らないことも多々あ るため、基本的に質的 データの予測には用いな い 43
44.
ロジスティック回帰分析 ロジスティック回帰分析 𝑦 = 1 1+𝑒−(
𝑎 𝑖 𝑥 𝑖+𝑏)に回帰 質的データに用いる yのとる値はxがなんで あっても0~1 任意のxに対するyが0か 1かの予測に利用できる 重回帰分析 𝑦 = 𝑎𝑖 𝑥𝑖 + 𝑏 に回帰 量的データに用いる 左記のような0~1の間に yが入らないことも多々あ るため、基本的に質的 データの予測には用いな い 44
45.
ロジスティック回帰分析(2) 任意のxに対するyが0か1かの予測に利用 できる 移行:y = 1
/ 離脱:y = 0 今回作成したモデルにより、1月携帯ア クセスのある各IDが、スマートフォンに 移行しているであろう確率を推定する y > 0.5 なら移行IDと判定! 45
46.
ロジスティック回帰分析(3) 理論面を学習するには、「尤度(ゆう ど)」などの概念を理解する必要があり ます。 テキストはRの計算を利用できれば良いと いう程度のスタンスなので、スライドで も深入りはしません。 46
47.
分析用データをロジ回帰させる fit.logit <- step(glm(is_sp
~ ., data = fp.dau1.cast[, -1], family = binomial)) 重回帰分析の考え方を思い出しながら、 以下の回帰を行う 47 説明変数(x) 被説明変数(y) X1day~X31day is_sp 「ロジスティック回帰を行う」
48.
step()について 前ページの内容で、ロジスティック回帰自体 は glm(
… , family = binominal ) で出来ている step()を用いることで、 AIC(赤池情報量規 準)の値を利用して、説明変数が多すぎる問 題を緩和(変数選択)させながらロジス ティック回帰分析を行える テキストでもAICは名前くらいしか教えてい ないので、ここでも説明しません 48 ※AICの理解にも尤度の理解が必須です
49.
モデルの作成 summary(fit.logit) 分析結果のサマリーを表示 step()は以下のモデルを選びました
glm(formula = is_sp ~ X1day + X4day + X5day + X7day + X10day + X13day + X22day + X29day + X31day, family = binomial, data = fp.dau1.cast[, - 1]) 説明変数にはX1day~X31dayすべてを用いるので はなく、上記緑色部分を選択しました 49 ※各回帰係数の推定量はサマリを参照
50.
作成したモデルによる予測 fp.dau1.cast$prob <- round(fitted(fit.logit),
2) “fp.dau1.cast”に「prob」項目を作成し、 fit.logitの予測値(fitted)を返します fp.dau1.cast$pred <- ifelse(fp.dau1.cast$prob > 0.5, 1, 0) “fp.dau1.cast”の「prob」項目が0.5を超える IDの「pred」項目には1を返します(スマホ 移行(予測)と判定) 50
51.
予測結果の表示 head(fp.dau1.cast) prob > 0.5
に「1」、それ以外に「0」が 振られているのを確認できます 51
52.
モデル予測の正解率 table(fp.dau1.cast[, c(“is_sp”,
“pred”)]) モデル予測の正解率(青いとこ) =(180+42) / (180+10+20+42) = 0.8809524 より正確には(将来)予測ではなく、実測データのみからの 回帰なので、正解率が高いのは当たり前 52 実測\予測 移行 離脱 移行 180 10 離脱 20 42
53.
さいごに テキストでは前ページでの高い正解率により、 「信頼のできるモデル構築ができた」 →なので「移行失敗の影響は小さい」 というロジックでの仮説検証を行っていますが、 序盤でも述べましたように、この分析ルーティ ン自体は見なかったことにした方が良いのでは と思います 53
Download