狠狠撸

狠狠撸Share a Scribd company logo
全部Excelだけで実現しようとして後悔するデータ分析
じょんすみす
2お前誰よ?
じょんすみす
クラスメソッド
データアナリティクス事業本部インテグレーション部
ML推進チーム リーダー
普段のお仕事
? 機械学習, SageMakerおじさん
? Hadoop, EMRおじさん
? Alteryx ACEの人
? クソExcelにモンク言うおじさん
3ある日の出来事...
4お題目
? なぜExcelは万能で人々に愛されるのか?
? データ分析のためのExcel活用
? Alteryx ~Excelのその先へ~
5お題目
? なぜExcelは万能で人々に愛されるのか?
? データ分析のためのExcel活用
? Alteryx ~Excelのその先へ~
6なぜExcelは万能で人々に愛されているのか?
世界で最も多く使われているソフトウェアの1つ、それがExcelと言っても
過言ではないでしょう。
? 誰でも簡単に「とりあえず使ってみる」が可能
? 自由すぎるセルと圧倒的多機能により割と何でも実現
? 自由に使えすぎるので他の人のExcelは何してるかわからん
? 「正しいExcelの使い方」なんて概念すらも...
? 誰でもフリーダムに使えるのでエンジニアにとって忌み嫌われる存在
? 自動化や効率化の妨げ的存在として扱われる
? もっと適切なツールがあるでしょ...と言われる
7実践!嫌われる贰虫肠别濒の使い方
8ちょっと待て
その使い方は本当に悪なのか?
9データ分析の流れで考える必要な要素
データの取得 分析 レポーティング
テーブルデータ
以下の内容を明確化
? 取得元
? フォーマット
? 含まれる情報
定期的な取得?更新の検討
分析内容に合わせた加工
分析処理の実施
専門知識が必要
意思決定で活用可能な形式
帳票やダッシュボード作成
この部分でレイアウトや
印刷形式を整える
10お題目
? なぜExcelは万能で人々に愛されるのか?
? データ分析のためのExcel活用
? Alteryx ~Excelのその先へ~
11データ分析の話
Gartnerによる分類
12データを整備しよう
何処にあるのかわからないデータは存在しないのと同じ
また、データとして利用可能な形式になっていない場合も同様
13今あるデータをカタログ化する
データの情報をリスト化し、HYPERLINK関数を使って紐づける。
14今あるデータをカタログ化する
データの情報をリスト化し、HYPERLINK関数を使って紐づける。
HYPERLINK(“https://dev.classmethod.jp/”, “Developers.IO”)
HYPERLINK(“Z:analysisdata”, “データフォルダ”)
HYPERLINK(“[iris.xlsx]iris!A1”, “颈谤颈蝉データセット”)
15カタログを使ってデータ取得
Power Queryを使ってデータの取得を行う。
ODBCを使ってSQLでDBからのデータ取得 GUI上で各種データ整形?加工処理
16カタログを使ってデータ取得
データモデルを作成してPower Pivotで扱う。
データモデルに対するリレーション リレーションはPivot 罢补产濒别でそのまま利用可能
17分析をはじめていこう
さあ、準備は整った!いよいよここからデータ分析が始まるゾ!!
18データを用意したらまず最初にやること
それは、基本統計量の確認。
データ > データ分析を選択(ない場合はアドオンで追加)
19データを用意したらまず最初にやること
それは、基本統計量の確認。
データ > データ分析を選択(ない場合はアドオンで追加) > 基本統計量
20データを用意したらまず最初にやること
ヒストグラムは1列1列心を込めて丁寧に作成
対象の列を選択し、グラフの種類にあるヒストグラム(棒グラフではないよ!)で作成
21データを用意したらまず最初にやること
ヒストグラムは1列1列心を込めて丁寧に作成
そんなことはやってられないので、VBAで全列のヒストグラム作成
Sub test()
Dim col As Variant
For Each col In Range("boston").ListObject.HeaderRowRange
Range("boston").ListObject.ListColumns(col.Value).Range.Select
ActiveSheet.Shapes.AddChart2(366, xlHistogram).Select
ActiveChart.ChartTitle.Select
Selection.Caption = col
Next col
End Sub
※ このままだと全部同じ位置に出力されるので適当に調整する
22カーネル密度推定もしてみよう
カーネル関数にぶっこんである値周辺の確率値を求める
? ? =
1
??
?=1
?
?
? ? ??
?
? ? =
1
2?
??? ?
?2
2
x についての確率密度 ガウシアンカーネルを使用
n : データ件数
xi : 観測された各データ
h : パラメータ
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
カーネル密度関数
23カーネル密度推定もしてみよう
カーネル関数にぶっこんである値周辺の確率値を求める
取りうるxの範囲をデータから決める
? 最大値 : MAX(boston[medv])
? 最小値 : MIN(boston[medv])
? データ件数 : COUNT(boston[medv])
? ついでにパラメータhもセルに入れておく
編集 > フィル > 連続データの作成 でmin/maxを参照にxの値を生成する
? 今回は0~60までを0.1刻みで生成
24カーネル密度推定もしてみよう
カーネル関数にぶっこんである値周辺の確率値を求める
カーネル関数の中身を計算
1 / SQRT(2 * PI()) * EXP(-POWER((D$2 - Sheet2!$N2) / $B$6, 2) / 2)
1
2? ?
?2
2
xiの数だけこの値を計算する
最初に生成したxの値となる列方向も同様
※ オートフィルするだけ
25カーネル密度推定もしてみよう
カーネル関数にぶっこんである値周辺の確率値を求める
確率密度を計算する
SUM(D3:D508) / ($B$5 * $B$6)
おまけ : 配列数式を使えば一発で計算することも可能
?=1
?
?
? ? ??
?
1
??
26カーネル密度推定もしてみよう
カーネル関数にぶっこんである値周辺の確率値を求める
この値で折れ線グラフを作ることでカーネル密度関数の完成!
いい感じになるようにhを調整しよう
h = 1 h = 1.5 h = 2
27異常値を見つけてみる
箱ひげ図で確認する
ヤベェ値
28異常値を見つけてみる
z値を計算する
? ? = (? ? ?) ?
? 平均を計算
? Q2セル : AVERAGE(boston[medv])
? 標準偏差を計算
? Q3セル : STDEV.S(boston[medv])
? 各値のz値を計算する
? ([@medv] - $Q$2) / $Q$3
? まとめて計算しちゃうことも可能
? ([@medv] - AVERAGE([medv])) / STDEV.S([medv])
テーブルの列名で範囲を指定
この列に追加
29異常値を見つけてみる
異常値となるものに対して条件付き書式を割り当てて確認する
z値の絶対値が2以上のものを異常値として設定。
この結果を元にフィルタの対象にするなど、どのように対処するかを決める。
30相関係数を求めてみる
どのデータとどのデータに関連がありそうなのか俯瞰する
? =
1
? ?=1
?
(?? ? ?)(?? ? ?)
1
? ?=1
?
(?? ? ?)2 1
? ?=1
?
(?? ? ?)2
? 相関係数は2つの列データにの関連性を数値で表す
? 値が1に近いほど正の相関(片方が高くなればもう片方も高くなる)がある
? 値が-1に近いほど負の相関(片方が高くなればもう片方は低くなる)がある
? 値が0に近ければ相関なし
? 列の組み合わせ分だけ相関係数が計算できるので行列で表せる
相関係数の求め方
31相関係数を求めてみる
どのデータとどのデータに関連がありそうなのか俯瞰する
データ > データ分析 > 相関 で利用可能
32相関係数を求めてみる
別解 : 頑張って計算する
各データのz値を計算 行列积を计算してデータ件数-1で割る
33散布図を見てみる
相関係数と同じように2つのデータの関連を見るためのもの
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 5 10 15 20 25 30
nox
indus
散布図
34回帰分析をしよう
我々は未知の数値を予測する
データ分析ツールにある回帰分析
35回帰分析をしよう
我々は未知の数値を予測する
データ分析ツールにある回帰分析
36回帰分析をしよう
我々は未知の数値を予測する
データ分析ツールにある回帰分析
0
2
4
6
8
10
12
切片 crim zn indus chas nox rm age dis rad tax ptratio black lstat
変数重要度
y = 0.7406x + 5.844
R? = 0.7406
-10
0
10
20
30
40
50
0 10 20 30 40 50 60
予測値
medv
37ロジスティック回帰もしよう
我々は分類もする
Excelの機能にロジスティック回帰は無いので実装する
切片の項を追加
wをランダムな値で初期化
38ロジスティック回帰もしよう
我々は分類もする
Excelの機能にロジスティック回帰は無いので実装する
各wで損失関数を微分した結果を計算
??
?? ?
= ? ? ? ?
?
??
? ? =
1
1 + exp ? ? ?
? = ?
?=1
?
?? ??? ?? + 1 ? ? ?? 1 ? ? ??
39ロジスティック回帰もしよう
我々は分類もする
Excelの機能にロジスティック回帰は無いので実装する
αの値を使って各wの値を更新
?? = ?? + ?
??
???
この値で再び先ほどの計算
40ロジスティック回帰もしよう
我々は分類もする
Excelの機能にロジスティック回帰は無いので実装する
ひたすら繰り返す
1行目だけできればあとは
オートフィル
41ロジスティック回帰もしよう
我々は分類もする
実装できたロジスティック回帰で推論する
? {=1 / (1 + EXP(-MMULT(iris[@[Sepal.Length]:[w_0]], TRANSPOSE(Sheet1!$D$300:$H$300))))}
? =IF([@predict] > 0.5, 1, 0)
42ロジスティック回帰もしよう
我々は分類もする
実装できたロジスティック回帰で推論する
そして無事それっぽい結果に
43時系列予測をしよう
Excelなら時系列データだって扱えちゃうんです!
今度はExcelの機能を使えるよ!
時系列の売上データ データタブにある「予測シート」
44時系列予測をしよう
Excelなら時系列データだって扱えちゃうんです!
今度はExcelの機能を使えるよ!
45時系列予測をしよう
Excelなら時系列データだって扱えちゃうんです!
今度はExcelの機能を使えるよ!
46ダッシュボートを作ろう
色々データが出そろったのでまとめようと思うんだ...
47ダッシュボートを作ろう
色々データが出そろったのでまとめようと思うんだ...
48ダッシュボートを作ろう
色々データが出そろったのでまとめようと思うんだ...
49ダッシュボートを作ろう
色々データが出そろったのでまとめようと思うんだ...
50ダッシュボートを作ろう
色々データが出そろったのでまとめようと思うんだ...
DAX式を使ったメジャーを作成することで独自の集計値を実装可能
51ダッシュボートを作ろう
色々データが出そろったのでまとめようと思うんだ...
52Excel編まとめ(?)
Excelを活用したデータ分析においてこの点に注意しておこう。
? データソースと活用?出力は明確に分ける
? データモデルをベースにすることで変更があった時に更新が可能
? Power Queryで行ったデータ編集?加工はプロセスが確認可能
? セルの範囲ではなくテーブルの列名で指定することで更新時にも対応可能
53Excel編まとめ(?)
そんなことはない!!
54お題目
? なぜExcelは万能で人々に愛されるのか?
? データ分析のためのExcel活用
? Alteryx ~Excelのその先へ~
55最近何かと話題のワード「脱Excel」
【レポート】新認定資格登場!Alteryxをもっと学ぶTips満載のキーノート: GET AMPLIFIED – Alteryx Inspire 2019
56なぜ今「脱Excel」なのか?
Excelってなんでもできるじゃん!
? 「なんでもできる」と「なんでもやるべき」は異なる
? できはするけどあまり効率的とは言えないこともある
? より深く、より専門的なことを簡単にとなるとその機能が用意されてるといい
? Excelでの処理内容はあとからプロセスを確認するのが困難
? 何をどういう手順でやってるのかドキュメントが必要?
? ルールで縛ったとして、それを確実に強制することは難しい
? 専用のシステムを「作ってもらう」ではなく「自分たちでやる」もそのままに!
? 「ガッツリこれだけ!」を実現したわけじゃない
? どうしてもサイクルが長くなる
57セルフサービス型データ分析ツール
58セルフサービス型データ分析ツール
59セルフサービス型データ分析ツール
Drag & Dropで一覧から各種機能を持った
ツールを配置してワークフローを作成
60セルフサービス型データ分析ツール
必要な処理を行うためのツールを並べてつなげば
何度でも同じ処理を実行可能
→ 処理の再現性が担保されるともに、フローそのものが処理を説明
61セルフサービス型データ分析ツール
? テキストファイルや各種DBはもちろん、
他にも様々なデータソースに対応
? Excelを入力としてDBに出力するなど
ETL処理にも対応
? In-DBを使うことで重い処理をDB側で
実行させることも可能
62どんなことができるのか見ていこう!
基本統計量やヒストグラムが
一発で確認できる!!
63どんなことができるのか見ていこう!
相関係数のヒートマップや
散布図によるデータ確認
64どんなことができるのか見ていこう!
ツールの組み合わせこそがAlteryxを使ったワークフロー作成の神髄
65どんなことができるのか見ていこう!
ツールの組み合わせこそがAlteryxを使ったワークフロー作成の神髄
平均と標準偏差を求める
66どんなことができるのか見ていこう!
ツールの組み合わせこそがAlteryxを使ったワークフロー作成の神髄
元データの各行にその情報を付与
67どんなことができるのか見ていこう!
ツールの組み合わせこそがAlteryxを使ったワークフロー作成の神髄
? = (? ? ?) ? を計算
68どんなことができるのか見ていこう!
工夫次第ではさらにいい感じな処理も可能
1. unpivot(縦持ちに変換)
2. 元の列名の値ごとに平均と標準偏差を計算
3. 列名をキーにして元データと結合(VLOOKUP)
4. 各行のz値を計算
5. pivot(横持ち)してすべての列のz値を得る
69どんなことができるのか見ていこう!
あらゆるソースに散らばったデータを結合するJoinツール
70どんなことができるのか見ていこう!
分析だってもちろんお手の物!!
71どんなことができるのか見ていこう!
分析だってもちろんお手の物!!
回帰分析もツールで一発
72どんなことができるのか見ていこう!
分析だってもちろんお手の物!!
予測値の取得もツールで
73どんなことができるのか見ていこう!
分析だってもちろんお手の物!!
グラフの作成ももちろん可能
74どんなことができるか見ていこう!
これらすべてをワンストップで実現可能!!
? 全てのフローが明確になる
? データソースを変えるだけですべての情報をいつでも更新可能
? データ分析に関するあらゆる操作がツールの配置という共通の操作で実现可能
75どんなことができるか見ていこう!
でも、やればやるほど似たような複雑な処理が増えてくんじゃない?
ワークフローの一部をマクロ化することで
共通処理を1つのツールとして扱うことが可能になる
76どんなことができるか見ていこう!
でも、やればやるほど似たような複雑な処理が増えてくんじゃない?
Alteryx Serverを導入することによって
ワークフローやマクロ、処理結果のダッシュボードなとが共有可能
77どんなことができるか見ていこう!
そうはいってもできないこともあるんじゃない?
ツールの組み合わせだけでできない場合RやPythonのスクリプトを組み込むことも可能
78Alteryxってすげぇ!!
Alteryxってすげぇ!!
79まとめ的な何か
データ分析とExcelとAlteryxの楽しいお話
? データを蓄える基盤と分析環境と見せ方は分けて考えよう
? 適切に分割して疎結合にすることで再利用が容易になる
? データはきちんとカタログで管理すると良さげ
? Excelはやろうと思えば何でもできてしまうがやるべきかはまた別な話
? ボタン1つで簡単に実現できる機能から頑張って実現するものまで様々
? 複雑なことは作ってる最中でも何してるのかわからんくなることもしばし...
? Alteryxってすげぇ!!
? データ分析に関連する様々な処理をワンストップで実現
? 処理内容の明確化や共有も可能
80参考資料
? Excelパワーピボット
? 最速で収益につなげる完全自動のデータ分析
? Excelで学ぶデータ分析本格入門
? プロコンサルタントの最強エクセル術
? 2017 Planning Guide for Data and Analytics
? HYPERLINK関数でハイパーリンクを作成する
? 主成分分析をExcelで理解する
81

More Related Content

全部贰虫肠别濒でやろうとして后悔するデータ分析

Editor's Notes

  • #8: みんな大嫌いなやつ Excel方眼紙?神エクセル 楽しいセルの結合 図をふんだんに使ったお絵描き 嫌われるExcelの使い方は本当に悪なのか? そもそもなぜ彼らが嫌われるのか考えてみよう。 Excelは元々”表計算ソフト”である 「こんな使い方は嫌われる」の主な原因は 効率的な使い方の妨げになっている データとして再利用できない形式になってる 検索性が著しく悪い 嫌われる使い方が蔓延る原因はいったいどこにあるのか 印刷が前提など、どのようにレイアウトするかのみを気にする よくわかってないけどググって出てきたやり方をコピペ
  • #10: インターネットの歴史に残るブラウザ戦争HTML/CSSの分離 あの頃のホームページ作成で起こっていた出来事 maqueeタグやblinkタグなど見た目装飾用のタグ乱立 tableのネストや結合を利用したレイアウト?1x1pxの透明画像で幅調整 今では主流の考え方 HTMLはデータとして活用を用意するために構造を定義するもの デザインを整えて見た目をいい感じにするのはCSSの役目 MVCモデルの考え方 今でも使われてる概念なのかなぁ 誰もViewに全部書こうとはしないでしょ? バックエンドは無視できません Excelの利用でもきちんとそれぞれが分離し状態であれば データは再利用可能なまま印刷や帳票用のレイアウトが可能になる
  • #12: 何はともあれまずはデータが無いことには何も始まらない データを適切に集約しよう データフォーマットはちゃんとね とはいえ、やみくもに集めればいいってわけじゃなく、分析するには「どんなデータが必要か」も検討が必要 今ないデータを集めるにはお金も時間もかかるし、ためておくのもタダじゃない だから、今あるデータの範囲から進めていくのがいいんだけど、何があるかわからんと使えないので、データカタログが必要になる。 Descriptive(記述的)では、「今何が起こってるのか」をデータから読み解く 従来のデータ集計?可視化?統計を使う。 Diagnostic(診断的)では、「なぜそれが起こってるのか」を調べる過程 要因分析とか 統計的因果推論とかはわかんない Predictive(予測)では、「これから何が起こるのか」を予測する 統計モデルや機械学習などが登場するよ Prescriptive(処方的)では、「何をすべきか」を決定する 今まで意思決定は人間が行っていた部分まで含めてデータでやってしまおうってんだからすごい。 未来ずらーって言われてる。 この発表では、Excelで Data Descriptive Diagnostic Predictive をやってみよう!
  • #13: 利用可能な形式になってないデータ = クソExcel 左 : 様々なデータソース(ブラックボックス化されてるものは闇) 中央 : データ分析基盤 右上 : データカタログ 右下 : 分析環境(Excel) 様々なソースにまたがるデータを基盤に集約する この過程でデータの整理や整形(ETL処理)なども必要になる データを蓄える基盤として データレイク DWH データマート などがあげられる。 テーブル構造になってることが保証されていると嬉しいので、それらがあるのが望ましいが かならずしも最初から大掛かりなものを用意する必要はなく、最初は共有フォルダにCSVやExcelファイルを入れとくでもいい 集約したデータをデータカタログ化して どのようなソースから取得したデータか どのような方法で取得したデータか どのような人を対象として取得したデータか どのタイミングで取得したデータか どのような内容(列一覧とその意味や単位など)か 保存されてるデータの期間は などの情報を格納しておく この情報が分析者から参照可能な状態になっている必要がある 分析者はカタログ情報を参照して、必要なデータを見つける 実際のデータを取得して、分析作業に取り掛かる。 データガバナンスの話はしない
  • #14: データ一覧情報を作成する DBのテーブル情報や列一覧情報はPower QueryでSQL書けば取得可能 ファイルで管理されているものは共有フォルダなどを使って一か所にまとめる それぞれのファイルにリンクを張るとともに列名情報はPower Queryで取得 今回はやってないけど、ファイル一覧を取得する部分や各テーブル情報を取得する部分はVBA使って自動化も可能 hyperlink関数を使うことで 任意のExcelファイルの特定のシートなどに移動 Web上のデータにリンクを張る などする 何が嬉しいか このようにまとめておけば元データはこの情報を参照してPower Queryで取得可能になる (次の分析の話に続く)
  • #15: 任意の場所にリンク可能な性質を利用して web上のデータから他のExcelファイルまで様々なデータソースへのリンクを貼れる 参照先がExcelであればさらにそこからHYPERLINK関数で階層化することも可能 Power Queryではhttp経由でcsvやjsonを取得できるのはもちろんのこと、 HTMLのテーブルを指定して取得することも可能です。 そういったwebからデータを取得するような際にはそのページへのリンクを貼っておくといいでしょう。
  • #16: データ取得元がRDBであればテーブル一覧から利用するものを選択できるほか、 SQLを記述してデータ取得することも可能 ODBCを使ったRDBからのデータ取得のほか Excel CSV Web など様々なデータソースから同一の操作感で取得可能 読み込んだデータはテーブルやデータモデルとして保持する。 PowerQueryで読み込んだデータは 元データそのものを編集するわけではないので事故がない 元データに変更があった場合もデータの更新を行うことで対応可能 データモデルであればシートには読み込まないので1,048,576行、16,384列の壁を超えることも可能 という特徴を持つ
  • #17: データモデルに読み込むことでリレーションの定義も行える。 これはPivot Tableで利用可能。 なお、リレーションを定義するほか、あらかじめJOINしておくことも可能。 人類がVLOOKUPに苦戦したりXLOOKUPに歓喜してる間にExcelはRDBになっていた。
  • #27: 适切な丑を求めるための手法もあるがここで割爱
  • #28: 四分位数 * 四分位範囲の1.5倍まで
  • #30: |2|以上を異常値としてるのは正規分布の分散に由来する 分布が異なる場合は別途検討が必要。 任意の分布に対して分散由来の外れ値を設定したい場合は「チェビシェフの不等式」で調べてみよう!
  • #32: 上側は同じ値になるので下参画だけ出力される 出力は数字だけなので、条件付き書式で色を設定してる
  • #34: 相関係数は線形の関係しか表せない 散布図を見ることで、非線形の関係が読み取れることもある 散布図も相関係数と同様に行列にできるけど、同じノリでVBAでやってね
  • #36: 笔値は条件付き书式で太字にしてる
  • #46: 予测値、出たよ!!
  • #47: テーブルやセルの範囲からピボットテーブルやピボットグラフを作成する。 通常、ピボットグラフは単体で作成することはできず、必ずピボットテーブルと連動する。 これだとダッシュボード化するに際していろんな指標を見たいときにいちいち画面上には表示しないピボットテーブルも作らないとなので残念
  • #48: データモデルからであればそれぞれを独立して作ることが可能
  • #49: スライサを通じてレポートを接続
  • #50: テーブルもピボットテーブルもスライサを設定可能だが、それらを連動させることはできない。 散布図やヒストグラムはピボットテーブルからは作成できないのでこれらをダッシュボードに含める場合は注意が必要。 また各種分析機能はモノによってはデータの更新時に再度実行しないとダメなものもあるのでそれらにも注意
  • #52: こんな感じでダッシュボードが作れる
  • #57: ドキュメントは2重管理になりがちで、変更があった际に両方ちゃんと修正されることを保証するのは难しい
  • #78: データサイエンティストやエンジニアが作成したプログラムをマクロ化してツールとして組み込むことで Alteryx上では誰でも簡単にその機能を利用できるようになる