Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kaggle本輪読会_3章後半_20191211
Search
syaorn_13
December 11, 2019
2
830
Kaggle本輪読会_3章後半_20191211
「Kaggleで勝つデータ分析の技術」の輪読会資料です。
https://gihyo.jp/book/2019/978-4-297-10843-4
syaorn_13
December 11, 2019
Tweet
Share
More Decks by syaorn_13
See All by syaorn_13
Kaggle M5 Forecasting - Accuracy 42nd place solution
syaorn_13
4
12k
Kaggle DSB2019 58th place solution
syaorn_13
2
470
APTOSコンペ振り返り_207th(銅メダル)
syaorn_13
0
800
Featured
See All Featured
How GitHub (no longer) Works
holman
311
140k
Practical Orchestrator
shlominoach
186
10k
Building Adaptive Systems
keathley
38
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
290
Mobile First: as difficult as doing things right
swwweet
222
8.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Git: the NoSQL Database
bkeepers
PRO
425
64k
KATA
mclloyd
29
13k
Designing for Performance
lara
604
68k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
13
1.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
Transcript
Kaggleで勝つデータ分析の技術 ジョブカレ輪読会 第3回 2019/12/11 藤本 海人
自己紹介 2 名前:藤本 海人 (Fujimoto Kaito) 所属:ブレインパッド (2019/10~) 職種:データサイエンティスト 趣味:Kaggle
(contributor) Twitter_ID:syaorn_13
今日の内容 3 3章(特徴量作成)の後半戦です 8. 他のテーブルと結合 9. 集約して統計量をとる 10. 時系列データの扱い 11.
次元削減・教師なし学習による特徴量 12. その他テクニック 13. 分析コンペにおける特徴量作成の例
前置き 4 気軽に指摘や質問してください • 理解が怪しい箇所がたくさんあります • 全員で知見を共有しあう場にしたいです
3.8 他のテーブルと結合
複数テーブルの扱い 6 出典:kaggleで勝つデータ分析の技術 P163 各テーブルの意味を理解し、結合・集約する必要がある 3.8 他のテーブルの結合
3.9 集約して統計量をとる
単純な統計量をとる 8 出典:kaggleで勝つデータ分析の技術 P167 「カウント」「合計」「平均」などを計算する 3.9 集約して統計量をとる 例)ユーザーごとの平均購入額 1. ユーザーIDでグループ化
2. グループ内での平均を計算
時間的な統計量をとる 9 出典:kaggleで勝つデータ分析の技術 P167 「直近の行動」「頻度」「期間」などに着目する 3.9 集約して統計量をとる 例)各ユーザーの直近の購入カテゴリ 1. ユーザーIDでグループ化
2. グループ内で時系列で昇順に並 べる 3. 一番最後の行の値を取得する
条件を絞る 10 出典:kaggleで勝つデータ分析の技術 P167 特定の行動に着目することで、新たな特徴を捉える 3.9 集約して統計量をとる 例)各ユーザーの「購入」した回数 1. ユーザーIDでグループ化
2. イベントのうち「購入」の個数をカ ウント
集計する単位を変える 11 出典:kaggleで勝つデータ分析の技術 P166 「性別」「年代」などグループに分けて集計する 3.9 集約して統計量をとる 例)平均購入額の相対値(年代) 全体での平均購入額:4000円 20代の平均購入額:1000円
20代Aさんの平均額:2000円 全体との相対値:0.5 年代別の相対値:2.0
注目する軸を変える 12 ユーザー軸での集計から商品軸での集計をする 3.9 集約して統計量をとる 例)商品を独自にグループ化する 「お米」「野菜」 → 生活必需品 「お酒」「お菓子」→ぜいたく品
出典:kaggleで勝つデータ分析の技術 P167
3.10 時系列データの扱い
時系列データの種類 14 出典:kaggleで勝つデータ分析の技術 P292 時系列データと言っても、形式によって扱い方が変わる 3.10 時系列データの扱い 時系列で分かれる →扱いに注意が必要 ユーザーID等で分かれる
→比較的扱いやすい 時系列データの種類
時系列データの大原則 15 予測する時点より過去の情報を使う →リークを防ぐため 3.10 時系列データの扱い 年 売上 2014 10万
2015 13万 2016 2017 30万 ? 目的変数のリーク 目的変数以外のリーク 年 解約有無 買物履歴 2014 0 3件 2015 0 10件 2016 5件 2017 0件 ? 各時点で知ることのできない情報は使わない
ワイドフォーマットとロングフォーマット 16 出典:kaggleで勝つデータ分析の技術 P175 特徴が違うので必要に応じて使い分ける 3.10 時系列データの扱い ロングフォーマット • 一般的な形式
• モデルの学習に使う ワイドフォーマット • 時系列変化が見やすい • モデル学習には使えない
ラグ特徴量 17 出典:kaggleで勝つデータ分析の技術 P180 過去時点の値を特徴量とする手法 「移動平均」を使って一定期間の平均をとることもできる 3.10 時系列データの扱い ラグ特徴量 過去のある時点のデータをそのまま
利用 移動平均 過去の一定期間の平均をとって 特徴量とする e.g. 過去7日間で週の傾向をつかむ ←基準 ←ラグ特徴量 ←移動平均
時点と紐づいた特徴量 18 出典:kaggleで勝つデータ分析の技術 P184 過去の時点における、「累積和」などを計算する 3.10 時系列データの扱い ←基準日 ←累積和をとる Pandasであれば、
Cumsum関数が便利
Testデータにおいて使える過去データを把握しておく →Testデータで使えない特徴量は意味がない Train Test 日付 12/1 12/2 12/3 12/4 12/5
12/6 12/7 売上 100 120 90 100 ? ? ? 特徴量を作成する時の注意点 19 3.10 時系列データの扱い 前日の売上が分からない ? 例) 前日の売上から翌日の売上を予測するモデルを作った場合 ?
3.11 次元削減・教師なし学習
なぜ次元削減をするのか? 21 学習が上手くできないため(次元の呪い) 3.11 次元削減・教師なし学習 ←1次元空間の距離 距離に違いがある 2次元空間の距離→ あまり違いはない 多次元になればなるほど、どの点も「遠くなる」(可能性が高くなる)
→距離情報が失われてしまう →距離を重要視するアルゴリズム(K近傍法など)は特に注意が必要 ↓2次元に拡張 例) 1次元から2次元に拡張した場合 ※あくまで一例
なぜ次元削減をするのか? 22 次元の呪い以外に • 計算時間を減らす • (線形モデルにおいて)多重共線性のリスクを下げる • 過学習のリスクを下げる(ノイズを学習しづらくなる) という理由もある
3.11 次元削減・教師なし学習
PCA(主成分分析) 23 出典:kaggleで勝つデータ分析の技術 P190 最も代表的な次元削減手法 3.11 次元削減・教師なし学習 入力変数の正規分布を仮定している MNISTへの適用例
NMF(非負値行列分解) 24 出典:https://abicky.net/2010/03/25/101719/ 非負データのみに使える次元削減手法 3.11 次元削減・教師なし学習 NMFはPCAより局所的な特徴を抽出できる(?) 顔画像をNMFとPCAで次元削減
t-SNE 25 出典:kaggleで勝つデータ分析の技術 P194 次元削減の新しい手法 計算コストが高く、高次元には不向き 3.11 次元削減・教師なし学習 MNISTへの適用例
UMAP 26 出典:kaggleで勝つデータ分析の技術 P195 最近(2018年)登場した次元削減手法 t-SNEより計算量が少ない 3.11 次元削減・教師なし学習 MNISTへの適用例
オートエンコーダ 27 出典:https://deepage.net/deep_learning/2016/10/09/deeplearning_autoencoder.html ニューラルネットを用いた次元削減手法 元のデータを圧縮して表現する 3.11 次元削減・教師なし学習 オートエンコーダの概要
クラスタリング 28 出典:http://tech.nitoyon.com/ja/blog/2009/04/09/kmeans-visualise/ クラスタリングした結果を特徴量とすることもできる 3.11 次元削減・教師なし学習 重心からの距離と特徴量とすること もできる
3.12 その他のテクニック
細かい内容が多いので、 個別の説明は割愛します
データに深く向き合う 31 出典:普通のデータサイエンティストと世界トップクラスのデータサイエンティストの違い https://newswitch.jp/p/19990 細かいテクニックを覚えるより、データを見て考えることが大事 3.12 その他のテクニック ・仮説 Colaの代替品として、 Fridge-Pack-Colaが購入されて
いるのではないか? 深くデータと向き合わないと 気付かない あるユーザーの購買履歴
マルチモーダル学習 32 出典:https://speakerdeck.com/upura/kaggle-petfinder-2nd-place-solution テーブル・画像・自然言語などのデータを統合して学習させる 自然言語:単語のカウント、文章の長さなど 画像 :画像サイズ、RGB、CNNの出力層付近の値など 3.12 その他のテクニック ・目的変数
ペットの引き取られるまでの速さ e.g. Kaggle PetFinder.my Adoption Prediction
3.12 分析コンペにおける 特徴量作成の例
数が多いので、 1つコンペを取り上げます
Kaggle: Instacart Market Basket Analysis 35 出典:https://www.kaggle.com/c/instacart-market-basket-analysis/overview 3.12 分析コンペにおける特徴量作成の例 •
予測すること 過去に購入した商品のうち、再注文する商品 • 使うデータ 過去の注文履歴
ユーザーベースの特徴量 36 • どのくらい頻繁に再注文を行うか • 注文間の間隔 • 注文する時間帯 • オーガニック、グルテンフリー、アジアのアイテムを過去に注文したか
• 一度の注文の商品数についての特徴 • 初めて購入するアイテムを含む注文はどれだけあるか 3.12 分析コンペにおける特徴量作成の例 ユーザーの属性ごとにを特定する効果
アイテムベースの特徴量 37 • どの程度頻繁に購入されるか • カート内での位置 • どの程度「一度きり」として購入されるか • 同時に購入される商品の数についての統計量
• 注文をまたいだ共起についての統計量 例:前回バナナを買った場合、次にイチゴを買うかどうか) • 連続注文(途切れずに連続で注文されること)についての統計量 • N回の注文中に再注文される確率 • どの曜日に注文されるかの分布 • 最初の注文後に再注文されるかの確率 • 注文間の間隔の統計量 3.12 分析コンペにおける特徴量作成の例 「日常的に購入される商品」と 「お試しで購入されやすい商品」 の違いを捉える?
ユーザ×アイテムベースの特徴量 38 • ユーザがその商品を購入した回数 • ユーザがその商品を最後に購入してからの経過 • 連続注文 • カート内での位置
• 当日にそのユーザがすでにそのアイテムを注文したか • 同時に購入される商品についての統計量 • ある商品の代わりに購入される商品(=注文をまたいだ共起につ いて、購入しなかったことに注目したもの) 3.12 分析コンペにおける特徴量作成の例 リピートする商品ほど、先にカゴ に入れる?
日時の特徴量 39 • 曜日ごとの注文数、注文された商品数 • 時間ごとの注文数、注文された商品数 3.12 分析コンペにおける特徴量作成の例
以上 ありがとうございました