2021/11/12(金)に開催したExploratory データサイエンス勉強会#21の株式会社サイズ様のご登壇資料です。
2021/11/12株式会社サイズ 相澤 健-Exploratoryを使ったゆとりあるワークフロー管理-
View Slide
会社紹介2株式会社サイズ• 設 立 :2003年4月• 事 業 所:営業本部 渋谷区道玄坂1-18-1• 研究開発センター 名古屋市中村区名駅3-20-21• 社 員 数:16名 (営業 7名 エンジニア 9名)
会社紹介3株式会社サイズ• 事業内容 :アンケートシステムORCAの開発 ※1システム開発/システムコンサルティング(調査画面作成、ORCA周りの受託開発、調査のシステム運用等調査業務知識は数名保有、データ分析業務は現状2名)• 主取引先 :市場調査会社(ビデオリサーチ社、楽天インサイト社イプソス社、アスマーク社、東京商工リサーチ社等)※1.ORCA(Online Research Control system Architecture)本気でリサーチ(調査)をしたいというお客様の要望に応えるオンラインアンケートシステム
自己紹介名前:相澤 健(あいざわ たけし)2016年にサイズに入社業務内容:データの加工・集計・分析を行っています。扱う対象はアンケートデータ・ログデータ使用ツール:Excel、Excel VBA、Access、SQL、Tableau、R、Exploratory(New)※ゴリゴリの文系なので専門用語の誤用などあるかもしれませんが温もり目線で見守ってください4本日はそんな私がExploratoryと出会う前、出会ってからのお話です
Agenda• プロローグ• どのツールでやるべきか• どのツールでやったのか• ワークフロー管理• まとめ5
プロローグ???「ユーザーが解約する場合、サイト内の行動に特徴はあるのか?」-とあるサービスを展開する企業。解約者の増加に悩んでいる。解約者を減らしたい。解約者のサイト内の行動に何かヒントは無いか-6
プロローグ7ぼく「DWHにデータとマスタが入っているからSQLでデータを取り出して…」ぼく「特徴って何だろう。とりあえずクロス集計を見て、それから統計的手法をどうするか考えるか」ぼく「アウトプットはグラフが必要だね。とりあえずtableauで見てみるか」ぼく「やったことないこともあるから調べながら進めるか」
2H5H10H5H3H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成試行錯誤の繰り返しプロローグ8分析の実施検証データの加工・成型グラフ作成ぼく「ざっくりプロセスと時間配分はこんな感じかな」Total30H?データ抽出データ傾向の確認(外れ値・欠損値)
登場ツール紹介9ツール名 特徴Excelぼくの幼馴染。幅広くいろんなことが出来る。表やグラフでは頼りになる。でも最近の進化についていけずに疎遠に…R3年前に知り合う。統計解析に優れたツール。コードを書けばたいていのことは出来る。ぼくは独学のためggplotや%>%を使ったモダンな書き方は苦手。SQL2年前に知り合う。DWHからデータ抽出のための必須ツール。独学のためwithを多用して長めのコードになりがち。Tableau4年前に知り合う。大規模なデータでもグラフ化が得意。ダッシュボードではフィルタを使った探索的な使い方が出来て便利。シリコンバレーからやってきた謎のツールその正体はまだ不明※発表者個人の見解であり、所属する団体の公式な見解ではありません
Agenda• プロローグ• どのツールでやるべきか• どのツールでやったのか• ワークフロー管理• まとめ10
それはどのツールでやるべきか-テキスト加工編-ぼく「ID毎に個別URLになっちゃうからURLからパラメータ部分を除きたいんだけど…」https://example.com?key=1234←この部分がユーザーID毎に異なるので、条件によって置換したい11SQL「オレに任せろ!REGEXP_REPLACEで正規表現を使って置換だ」R「いや、それならオレだ!gsubで正規表現を使って置換だ」Tableau「オレを忘れてもらっては困るな!REGEXP_REPLACEが実装されてるぞ」Excel「ワイルドカード使って置換…」ぼく「今回は数百万レコードあるからSQLで処理するかな…」
それはどのツールでやるべきか -データ成型編-ぼく「ログデータで縦になっているものをID毎にカラムにドメインが来るように加工したいんだけど」12SQL「方言あるぞ!詳しくは調べてコードを書いてくれ!」R「いや、それならオレだ!tidyrが充実してるぞ!cranで調べてコード書いてくれ!」Tableau「オレを忘れてもらっては困るな!右クリックメニューにあるぞ」Excel「Power Queryエディターでできるよ…」ぼく「簡単にできそうだからtableauでやっちゃおう…」ID URL111 https://example.com/aaa111 https://example.com/bbb111 https://example.com/ccc222 https://example.com/aaa222 https://example.com/cccID https://example.com/aaa https://example.com/bbb https://example.com/ccc111 1 1 1222 1 0 1
それはどのツールでやるべきか -統計分析編-ぼく「ロジスティック回帰をやりたいんだけど」13SQL「連携している別のサービスがあるぞ!」R「いや、それならオレだ!glmだよ!」Tableau「そういうことはRやPythonに連携できるぞ!」Excel「地道に計算していけば出来るよ…」ぼく「統計解析はRが得意だよね…」
それはどのツールでやるべきか→何が起きていたのか• データ量(レコード数)によって使えるツールが限定される• 学習コストを下げるために複数のツールを使い分ける(どれかをきちんと学習すれば使い分ける必要はないのかもしれないけれど)• 使い慣れていないツールだとエラーが頻発(ストレスの原因に)• 複数のツールを行き来するためにCSVファイルが必要(なケースがある)14
試行錯誤の繰り返し分析の実施検証データの加工・成型グラフ作成データ抽出データ傾向の確認(外れ値・欠損値) 2H5H10H5H3H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成15Total30H?それはどのツールでやるべきか→何が起きていたのかSQLTableauRExcel学習コストが含まれている学習コストが含まれているツールの切り替えが必要ツールの切り替えが必要ツールの切り替えが必要CSVファイルが必要
Exploratory導入後⇒その結果何かお困りですか?16
ぼく「ID毎に個別URLになっちゃうからURLからパラメータ部分を除きたいんだけど…」https://example.com?key=1234←この部分がユーザーID毎に異なるので、条件によって置換したい17サマリービュー画面で「テキストデータの加工」から加工したい形式を選ぶだけで出来ますが、何か?
18しかもプレビューで結果を確認しながら置換できますが、何か?※プレビューで置換したい対象を絞りこむことも出来ますぼく「ID毎に個別URLになっちゃうからURLからパラメータ部分を除きたいんだけど…」https://example.com?key=1234←この部分がユーザーID毎に異なるので、条件によって置換したい
ぼく「ログデータで縦になっているものをID毎にカラムにドメインが来るように加工したいんだけど」19ID URL111 https://example.com/aaa111 https://example.com/bbb111 https://example.com/ccc222 https://example.com/aaa222 https://example.com/cccID https://example.com/aaa https://example.com/bbb https://example.com/ccc111 1 1 1222 1 0 1「ロング型からワイド型へ(Gather)」を選ぶことで数クリックで加工出来ますが、何か?
ぼく「ログデータで縦になっているものをID毎にカラムにドメインが来るように加工したいんだけど」20ID URL111 https://example.com/aaa111 https://example.com/bbb111 https://example.com/ccc222 https://example.com/aaa222 https://example.com/cccID https://example.com/aaa https://example.com/bbb https://example.com/ccc111 1 1 1222 1 0 1「ロング型からワイド型へ(Gather)」を選ぶことで数クリックで加工出来ますが、何か?
ぼく「ロジスティック回帰をやりたいんだけど」21アナリティクスビューで目的変数と予測変数、いくつかのオプションを設定すれば出来ますが、何か?
2H5H5H2H3H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成22Total22H?それはどのツールでやるべきか→何が起きていたのか※個人の感想であり、効果・効能を保証するものではありません試行錯誤の繰り返し分析の実施検証データの加工・成型グラフ作成データ抽出データ傾向の確認(外れ値・欠損値)ツールの切り替え無しですべてExploratoryで出来ますが、何か?※データソースを「データベースデータ」にした場合はSQLを記述する必要がありますやりたいことは、学習コストなしでクリックメニューで出来ますが、何か?
Agenda• プロローグ• どのツールでやるべきか• どのツールでやったのか• ワークフロー管理• まとめ23
それはどのツールがやったのか -コード記述編-ぼく「外れ値の処理をしたけど、具体的な条件はどこに書いたっけ?」24R「コードはコメント無しで50行あるぞ」SQL「whereで書いてないかな?」ぼく「あれ?なかなか見つからない…コードが長くなると探すのも大変… 」
それはどのツールがやったのか -処理結果確認のための集計編-ぼく「あれ?なんで欠損値になっているんだろう?どこかで処理が間違っているのかな」25SQL「ちゃんと集計して確認した?」Tableau「ちゃんと集計して確認した? 」R「ちゃんと集計して確認した? 」ぼく「集計して確認したらJOINの条件が足りてなかったか… 」
それはどのツールがやったのか -再処理編-ぼく「やっぱりここの条件を変えてみようかな。変更して再処理するか」26SQL「よっしゃもう一回実行するよ」Tableau「よし、もう一回処理するよ」R「よし、もう一回処理するよ」Excel「入力ファイルと出力ファイルがたくさん出来るぞ」ぼく「そうか、変更処理を上流工程に入れちゃうと後の処理はすべてやり直しだよね…」
それはどのツールがやったのか→何が起きていたのか• (コードを書くことで出来ることは増えるけれど)可読性が低くなり、見直す必要があるときにコードを読んで理解する時間がかかる• ミスが発生していた場合、工程の(処理毎に結果が可視化されないので)検証に時間がかかる• 初めから全体の工程を考えていても、分析のアイデアを試すために処理の追加・入れ替えを行うと検証が増えて時間がかかる(ツールが分かれているとファイルも多くなりがち)27
2H5H10H5H3H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成28Total30H?SQLTableauRExcel複数ツールで再処理が必要それはどのツールがやったのか→何が起きていたのか試行錯誤の繰り返し分析の実施検証データの加工・成型グラフ作成データ抽出データ傾向の確認(外れ値・欠損値) 細かい集計・検証が必要複数ツールで再処理が必要細かい集計・検証が必要
Exploratory導入後⇒その結果何かお困りですか?29
ぼく「外れ値の処理をしたけど、具体的な条件はどこに書いたっけ?」30STEPで処理を可視化出来ますが、何か?
ぼく「あれ?なんで欠損値になっているんだろう?どこかで処理が間違っているのかな」31しかもSTEP毎にサマリービューで集計値を確認できますが、何か?
ぼく「あれ?なんで欠損値になっているんだろう?どこかで処理が間違っているのかな」32集計値を確認できるので、欠損値はもちろん異常値がある場合もすぐに分かる
ぼく「やっぱりここの条件を変えてみようかな。変更して再処理するか」33しかもSTEPに「三」で追加(挿入)・ドラッグ&ドロップでの順序入れ替え・複製も簡単にできますが、何か?
2H1H2H2H1H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成34それはどのツールがやったのか→何が起きていたのかTotal13H?※個人の感想であり、効果・効能を保証するものではありません試行錯誤の繰り返し分析の実施検証データの加工・成型グラフ作成データ抽出データ傾向の確認(外れ値・欠損値)STEP毎にサマリービューで集計結果が可視化されますが、何か?※しかもデータの型(Numeric/date等)によって適切に集計されます処理は付箋の感覚で追加・入れ替えが簡単ですが、何か?※しかも変更が発生すると自動で再処理されます
Agenda• プロローグ• どのツールでやるべきか• どのツールでやったのか• ワークフロー管理• まとめ35
Exploratory導入後• データ抽出・ラングリング(ETL)・分析(・アウトプット)ツールの一本化• 高度な処理もクリックメニューで実現できるので学習コストの低下• 処理条件・工程の一覧化(STEP)• 処理結果の逐次可視化(サマリービュー)• ドラッグ&ドロップでの処理工程の入れ替え※アウトプットはまだ布教が足りずExcelやPPTに頼りがち36
2H5H10H5H3H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成37Exploratory導入後2H1H2H2H1H5Hデータ抽出データ傾向の確認(外れ値・Null)データの加工・成型分析の実施検証グラフ作成Total13H?Total30H?ツールの切り替え無しですべてExploratoryで出来ますが、何か?※データソースを「データベースデータ」にした場合はSQLを記述する必要がありますSTEP毎にサマリービューで集計結果が可視化されますが、何か?※しかもデータの型(Numeric/date等)によって適切に集計されます処理は付箋の感覚で追加・入れ替えが簡単ですが、何か?※しかも変更が発生すると自動で再処理されますやりたいことは、右クリックメニューで出来ますが、何か?※個人の感想であり、効果・効能を保証するものではありません
Exploratory導入後データと向き合える時間が増えた38
Exploratory導入後だけじゃない39
40ブランチで処理の分岐が出来るので、アイデアレベルで試してみたいことは、ブランチで即実行「ブランチ」で処理の分岐が出来るぞ思いつきレベルで試してみたいことはブランチで出来るぞただし、ブランチのブランチは出来ないから、そこだけ注意
41大幅に処理を変更するときはデータフレームを複製できるので、元の状態は保持できるしかもSTEP単位の複製やSTEPの無効化も出来るので、アイデアレベルを試すときには重宝データフレーム・プロジェクトの複製が出来るぞ元の状態を残しつつ、少し変えたものを試してみたい場合は重宝さらにSTEP自体の無効化も出来るので、色々試せるぞ
42※個人の感想であり、効果・効能を保証するものではありませんワークフロー管理 →何が起きていたのか試行錯誤の繰り返し分析の実施検証データの加工・成型グラフ作成データ抽出データ傾向の確認(外れ値・欠損値)もちろん試行で使ったSTEPは違うデータフレームへ複製できるので、本流の分析への反映も簡単だぞ試行は複製して行えるので、気軽に実行出来るぞ
Exploratory導入後処理工程はSTEP試行はブランチや複製で実行ワークフローを管理する意識無しに管理できる43
Agenda• プロローグ• どのツールでやるべきか• どのツールでやったのか• ワークフロー管理• まとめ44
Exploratoryまとめ• ツールの一本化ができるので、すべてのフローを集約できる• 高度な分析でも学習コスト不要(分からないことがあっても、サイト内での事例掲載やセミナー・動画、チャットでの質問等、フォローが充実)• STEP毎にサマリービューで集計結果を確認できるのでミス(処理条件の過不足)に気が付きやすい• STEP自体がワークフロー(管理している意識なし)• ブランチで処理の分岐が出来るので、一つのデータフレームから複数の形式へ加工と保持ができる• 試したいことはデータフレームの複製やSTEPの無効化・有効化で実施45
Exploratoryのメリットデータと向き合あってやりたいこと・試したいことがすぐに出来る46
Exploratoryのメリットやりたいこと・試したいことの結果がすぐに見える47
Exploratoryのメリットデータ分析が楽しくなる!48
Enjoy!49