【レビュー】Kaggleで勝つデータ分析の技術


  • 出版情報
  • ・著者:門脇大輔/著 阪田隆司/著 保坂桂佑/著 平松雄司/著
  • ・出版日:20191009
  • ・ページ数:424P
  • レビュー数
  • ・週間:0記事
  • ・月間:1記事
  • ・年間:13記事
  • ・全期間:37記事

ジャンルTop10選

目次

第1章 分析コンペとは?
1.1 分析コンペって何?
1.1.1 何をするものか
1.1.2 予測結果の提出と順位表(Leaderboard)
1.1.3 チームでの参加
1.1.4 入賞賞金・特典
1.2 分析コンペのプラットフォーム
1.2.1 Kaggle
1.2.2 Rankings(ランキング・称号制度)
1.2.3 Kernel
1.2.4 Discussion
1.2.5 Datasets
1.2.6 API
1.2.7 Newsfeed
1.2.8 開催された分析コンペの種類と具体例
1.2.9 分析コンペのフォーマット
1.3 分析コンペに参加してから終わるまで
1.3.1 分析コンペに参加
1.3.2 規約に同意
1.3.3 データをダウンロード
1.3.4 予測値の作成
1.3.5 予測値の提出
1.3.6 Public Leaderboardをチェック
1.3.7 最終予測値を選ぶ
1.3.8 Private Leaderboardをチェック
1.4 分析コンペに参加する意義
1.4.1 賞金を得る
1.4.2 称号やランキングを得る
1.4.3 実データを用いた分析の経験・技術を得る
1.4.4 データサイエンティストとのつながりを得る
1.4.5 就業機会を得る
1.5 上位を目指すためのポイント
1.5.1 タスクと評価指標
1.5.2 特徴量の作成
1.5.3 モデルの作成
1.5.4 モデルの評価
1.5.5 モデルのチューニング
1.5.6 アンサンブル
1.5.7 分析コンペの流れ
Column  計算リソース
第2章 タスクと評価指標
2.1 分析コンペにおけるタスクの種類
2.1.1 回帰タスク
2.1.2 分類タスク
2.1.3 レコメンデーション
2.1.4 その他のタスク
2.2 分析コンペのデータセット
2.2.1 テーブルデータ
2.2.2 外部データ
2.2.3 時系列データ
2.2.4 画像や自然言語などのデータ
2.3 評価指標
2.3.1 評価指標(evaluation metrics)とは
2.3.2 回帰における評価指標
2.3.3 二値分類における評価指標?正例か負例かを予測値とする場合
2.3.4 二値分類における評価指標?正例である確率を予測値とする場合
2.3.5 多クラス分類における評価指標
2.3.6 レコメンデーションにおける評価指標
2.4 評価指標と目的関数
2.4.1 評価指標と目的関数の違い
2.4.2 カスタム評価指標とカスタム目的関数
2.5 評価指標の最適化
2.5.1 評価指標の最適化のアプローチ
2.5.2 閾値の最適化
2.5.3 閾値の最適化をout-of-foldで行うべきか?
Column out-of-foldとは?
2.5.4 予測確率とその調整
2.6 評価指標の最適化の例
2.6.1 balanced accuracyの最適化
2.6.2 mean-F1における閾値の最適化
2.6.3 quadratic weighted kappaにおける閾値の最適化
2.6.4 カスタム目的関数での評価指標の近似によるMAEの最適化
2.6.5 MCCのPR-AUCによる近似とモデル選択
2.7 リーク(data leakage) 107
2.7.1 予測に有用な情報が想定外に漏れている意味でのリーク
2.7.2 バリデーションの枠組みの誤りという意味でのリーク
第3章 特徴量の作成
3.1 本章の構成
3.2 モデルと特徴量
3.2.1 モデルと特徴量
3.2.2 ベースラインとなる特徴量
3.2.3 決定木の気持ちになって考える
3.3 欠損値の扱い
3.3.1 欠損値のまま取り扱う
3.3.2 欠損値を代表値で埋める
3.3.3 欠損値を他の変数から予測する
3.3.4 欠損値から新たな特徴量を作成する
3.3.5 データ上の欠損の認識
3.4 数値変数の変換
3.4.1 標準化(standardization)
Column データ全体の数値を利用して変換を行うときに、学習データのみを使うか、テストデータも使うか
3.4.2 Min-Maxスケーリング
3.4.3 非線形変換
3.4.4 clipping
3.4.5 binning
3.4.6 順位への変換
3.4.7 RankGauss
3.5 カテゴリ変数の変換
3.5.1 one-hot encoding
3.5.2 label encoding
3.5.3 feature hashing
3.5.4 frequency encoding
3.5.5 target encoding
3.5.6 embedding
3.5.7 順序変数の扱い
3.5.8 カテゴリ変数の値の意味を抽出する
3.6 日付・時刻を表す変数の変換
3.6.1 日付・時刻を表す変数の変換のポイント
3.6.2 日付・時刻を表す変数の変換による特徴量
3.7 変数の組み合わせ
3.8 他のテーブルの結合
3.9 集約して統計量をとる
3.9.1 単純な統計量をとる
3.9.2 時間的な統計量をとる
3.9.3 条件を絞る
3.9.4 集計する単位を変える
3.9.5 ユーザ側でなく、アイテム側に注目する
3.10 時系列データの扱い
3.10.1 時系列データとは?
3.10.2 予測する時点より過去の情報のみを使う
3.10.3 ワイドフォーマットとロングフォーマット
3.10.4 ラグ特徴量
3.10.5 時点と紐付いた特徴量を作る
3.10.6 予測に使えるデータの期間
3.11 次元削減・教師なし学習による特徴量
3.11.1 主成分分析(PCA)
3.11.2 非負値行列因子分解(NMF)
3.11.3 Latent Dirichlet Allocation(LDA)
3.11.4 線形判別分析(LDA)
3.11.5 t-SNE、UMAP
3.11.6 オートエンコーダ
3.11.7 クラスタリング
3.12 その他のテクニック
3.12.1 背景にあるメカニズムから考える
3.12.2 レコード間の関係性に注目する
3.12.3 相対値に注目する
3.12.4 位置情報に注目する
3.12.5 自然言語処理の手法
3.12.6 自然言語処理の手法の応用
3.12.7 トピックモデルの応用によるカテゴリ変数の変換
3.12.8 画像特徴量を扱う手法
3.12.9 decision tree feature transformation
3.12.10 匿名化されたデータの変換前の値を推測する
3.12.11 データの誤りを修正する
3.13 分析コンペにおける特徴量の作成の例
3.13.1 Kaggleの「Recruit Restaurant Visitor Forecasting」
3.13.2 Kaggleの「Santander Product Recommendation」
3.13.3 Kaggleの「Instacart Market Basket Analysis」
3.13.4 KDD Cup 2015
3.13.5 分析コンペにおけるその他のテクニックの例
第4章 モデルの作成
4.1 モデルとは何か?
4.1.1 モデルとは何か?
4.1.2 モデル作成の流れ
4.1.3 モデルに関連する用語とポイント
4.2 分析コンペで使われるモデル
4.3 GBDT(勾配ブースティング木)
4.3.1 GBDTの概要
4.3.2 GBDTの特徴
4.3.3 GBDTの主なライブラリ
4.3.4 GBDTの実装
4.3.5 xgboostの使い方のポイント
4.3.6 lightgbm
4.3.7 catboost
Column xgboostのアルゴリズムの解説
4.4 ニューラルネット
4.4.1 ニューラルネットの概要
4.4.2 ニューラルネットの特徴
4.4.3 ニューラルネットの主なライブラリ
4.4.4 ニューラルネットの実装
4.4.5 kerasの使い方のポイント
4.4.6 参考になるソリューション - 多層パーセプトロン
4.4.7 参考になるソリューション - 最近のニューラルネットの発展
4.5 線形モデル
4.5.1 線形モデルの概要
4.5.2 線形モデルの特徴
4.5.3 線形モデルの主なライブラリ
4.5.4 線形モデルの実装
4.5.5 線形モデルの使い方のポイント
4.6 その他のモデル
4.6.1 k近傍法(k-nearest neighbor algorithm、kNN)
4.6.2 ランダムフォレスト(Random Forest、RF)
4.6.3 Extremely Randomized Trees(ERT)
4.6.4 Regularized Greedy Forest(RGF)
4.6.5 Field-aware Factorization Machines(FFM)
4.7 モデルのその他のポイントとテクニック
4.7.1 欠損値がある場合
4.7.2 特徴量の数が多い場合
4.7.3 目的変数に1対1で対応するテーブルでない場合
4.7.4 pseudo labeling
Column 分析コンペ用のクラスやフォルダの構成
第5章 モデルの評価
5.1 モデルの評価とは?
5.2 バリデーションの手法
5.2.1 hold-out法
5.2.2 クロスバリデーション
5.2.3 stratified k-fold
5.2.4 group k-fold
5.2.5 leave-one-out
5.3 時系列データのバリデーション手法
5.3.1 時系列データのhold-out法
5.3.2 時系列データのクロスバリデーション(時系列に沿って行う方法)
5.3.3 時系列データのクロスバリデーション(単純に時間で分割する方法)
5.3.4 時系列データのバリデーションの注意点
5.3.5 Kaggleの「Recruit Restaurant Visitor Forecasting」
5.3.6 Kaggleの「Santander Product Recommendation」
5.4 バリデーションのポイントとテクニック
5.4.1 バリデーションを行う目的
5.4.2 学習データとテストデータの分割をまねる
5.4.3 学習データとテストデータの分布が違う場合
5.4.4 Leaderboardの情報を利用する
5.4.5 バリデーションデータやPublic Leaderboardへの過剰な適合
5.4.6 クロスバリデーションのfoldごとに特徴量を作り直す
5.4.7 使える学習データを増やす
第6章 モデルのチューニング
6.1 パラメータチューニング
6.1.1 ハイパーパラメータの探索手法
6.1.2 パラメータチューニングで設定すること
6.1.3 パラメータチューニングのポイント
6.1.4 ベイズ最適化でのパラメータ探索
6.1.5 GBDTのパラメータおよびそのチューニング
Column xgboostの具体的なパラメータチューニングの方法
6.1.6 ニューラルネットのパラメータおよびそのチューニング
Column 多層パーセプトロンの具体的なパラメータチューニングの方法
6.1.7 線形モデルのパラメータおよびそのチューニング
6.2 特徴選択および特徴量の重要度
6.2.1 単変量統計を用いる方法
6.2.2 特徴量の重要度を用いる方法
6.2.3 反復して探索する方法
6.3 クラスの分布が偏っている場合
Column ベイズ最適化およびTPEのアルゴリズム
第7章 アンサンブル
7.1 アンサンブルとは?
7.2 シンプルなアンサンブル手法
7.2.1 平均、加重平均
7.2.2 多数決、重みづけ多数決
7.2.3 注意点とその他のテクニック
7.3 スタッキング
7.3.1 スタッキングの概要
7.3.2 特徴量作成の方法としてのスタッキング
7.3.3 スタッキングの実装
7.3.4 スタッキングのポイント
7.3.5 hold-outデータへの予測値を用いたアンサンブル
7.4 どんなモデルをアンサンブルすると良いか?
7.4.1 多様なモデルを使う
7.4.2 ハイパーパラメータを変える
7.4.3 特徴量を変える
7.4.4 問題のとらえ方を変える
7.4.5 スタッキングに含めるモデルの選択
7.5 分析コンペにおけるアンサンブルの例
7.5.1 Kaggleの「Otto Group Product Classification Challenge」
7.5.2 Kaggleの「Home Depot Product Search Relevance」
7.5.3 Kaggleの「Home Credit Default Risk」
付 録
A.1 分析コンペの参考資料
A.2 参考文献
A.3 本書で参照した分析コンペ
索引
著者プロフィール

概要

データサイエンスの認知の高まりとともに、データ分析に関するコンペティションが多数開催されるようになってきました。最も有名なコンペティションプラットフォームであるKaggleにおけるプレイヤー数は10万人を超え、多くのエンジニアが自分の腕を試すためにコンペティションに参加しています。分析コンペでは、実際のデータを扱うため、機械学習の解説書にはあまり載っていないような手法やテクニックが数多く活用されています。これらを理解し自身で使えるようにしておくことはコンペだけでなく、実務でのモデル構築において非常に役に立ちます。
そこでこれらのテクニックや事例を多くの人に知っていただくために、現時点で最新のものを整理して本書にまとめました。特徴量の作り方、バリデーション、パラメータチューニングなどについて、一般的な書籍ではあまり言及されない暗黙知やポイントについて記述しています。分析コンペにこれから参加してみたい方、あるいはもっと上を目指したい方だけでなく、実務で予測モデルの精度を上げたいという方にも参考になる情報が多いでしょう。

レビューの一覧

 ・機械学習って何から勉強すればいいの?という人向け必読の4冊[2022-10-12に投稿]

 ・文系大学生が半年でDSインターンを始めるまでにやったこと[2022-09-19に投稿]

 ・Kaggleで勝つデータ分析技術_3章の欠損値についてまとめてみた[2022-07-15に投稿]

 ・【実録4ヶ月】0→1からJDLA主催G検定合格までの道のり[2022-03-27に投稿]

 ・スタッキングの精度保証について考える[2022-03-26に投稿]

 ・【Pythonではじめる機械学習】の個人的解釈 ①序章[2022-03-21に投稿]

 ・機械学習エンジニアに爆速でなるための教材集[2022-03-06に投稿]

 ・ワナビーからKagglerに〜コンペ所感〜[2021-12-22に投稿]

 ・駆け出し文系エンジニアのデータサイエンス初歩[2021-12-19に投稿]

 ・【Kaggle】とあることから2か月弱でkaggle Expertへ[2021-12-01に投稿]

 ・Kaggleの画像コンペに初心者だけでチーム組んで挑んでみたら銅メダル取れた話[2021-08-11に投稿]

 ・GBDT、ランダムフォレスト、ニューラルネットワーク、ロジスティック回帰を使用してスタッキング in Kaggle[2021-07-12に投稿]

 ・[kaggle / python] 回帰問題(house prices)の超初歩(5)~カテゴリ変数をOne hot Encoding~[2021-07-08に投稿]

 ・[kaggle / python] 回帰問題(house prices)の超初歩(4)~数値変数のカテゴリ変数化~[2021-06-24に投稿]

 ・Kaggle Expertになるまで勉強したことを全て書く[2021-06-21に投稿]

 ・[kaggle / python] 回帰問題(house prices)の超初歩(3)~特徴量の追加と削除~[2021-06-20に投稿]

 ・[kaggle / python] 回帰問題(house prices)の超初歩(2)[2021-06-06に投稿]

 ・「再現率」「適合率」ほか二値分類の評価指標まとめ[2021-02-03に投稿]

 ・機械学習 評価指標[2021-01-11に投稿]

 ・Effective Python 学習備忘録 1日目 【1/100】 [2021-01-02に投稿]

 ・機械学習で使われる評価関数まとめ[2020-06-23に投稿]

 ・プログラミング初心者が機械学習を1ヶ月ガチで勉強してみた〜勉強法まとめ、勉強の記録〜[2020-06-13に投稿]

 ・時系列データ関連の本10冊読んだので書評書く。+4冊更新 2021年11月[2020-04-27に投稿]

 ・Google Cloud APIを使ってお手軽に感情分析入門[2020-03-30に投稿]

 ・10分間で画像認識モデル構築byKeras~機械学習への第一歩~[2020-03-24に投稿]

 ・エンジニアのインターンが技術書を30冊くらい読んでみたので、ゆるくまとめてみた[2020-03-18に投稿]

 ・【2020年版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法[2020-03-13に投稿]

 ・バリデーションについてのメモランダム[2020-03-05に投稿]

 ・回帰と二値分類の評価指標についてのメモランダム[2020-03-01に投稿]

 ・Kaggleって何だ?[2020-02-06に投稿]

 ・kaggle noviceがテーブルコンペの取り組み方をまとめてみた[2019-12-25に投稿]

 ・Kaggle ソシャゲ説[2019-12-16に投稿]

 ・最新アンサンブル学習SklearnStackingの性能調査(LBGM, RGF, ET, RF, LR, KNNモデルをHeamyとSklearnで比較する)[2019-12-08に投稿]

 ・非IT企業に転職した機械学習素人がAIプロジェクトにアサインされてからの奮闘記[2019-12-07に投稿]

 ・TwitterAPI登録を記入時間30分で超簡単にパスする裏技(日本語訳付き)[2019-11-25に投稿]

 ・PythonでTwitterスクレイピング&データフレーム化[2019-11-24に投稿]

 ・【データ分析の必読10冊+差をつける10冊+100冊超】データサイエンス、データ分析、機械学習関連の本[2016-08-23に投稿]


amazonで確認