目的
テーブルデータをコンペで扱う際に覚えておきたいポイントや学習中に得られた知見などをまとめる.
また, テーブルデータとテキストデータ, テーブルデータと画像データの違いや共通点, ポイントも記述する.
テーブルデータの知見
EDA(探索的データ分析)
データを観察し, 性能向上のためにデータの関連性を見つけること
- 「Aが増えるたびにBが減っているな...」, 「〇〇という特徴があると、☆☆という特徴も減っているな...」などの考察が必要
- そこからさらに特徴量エンジニアリングを行っていく
特徴量エンジニアリング
読み込んだデータを機械学習アルゴリズムが扱える形(数値)に変換すること
- 欠損値(Nanデータ) を別の値で埋めたり, データを数値に変換したり, 新しい列を作成
- 既存のデータから, 機械学習アルゴリズムが予測する上で有用な新しい特徴量を作成
- 特徴量エンジニアリングについての参考スライド
- そのコンペが使用しているデータの分野や業界などのドメイン知識も非常に大切
- 性能向上のために思わぬ特徴量を得られることもあるため
- 例えば, 衛星画像のコンペなら天文学を学んだり, 服の画像のコンペならファッション業界を調査してみる, など
欠損値(Nanデータ)の扱い方の理解
- 欠損値としてそのまま使う
- 代表的な値で欠損値を補完する
- 中央値 や平均値, 0などで補完
- 他の特徴量から欠損値を予測して補完する
- 欠損値か否かの情報を用いて新しい特徴量を作る
勾配ブースティングとNN(ニューラルネット)
- 上位陣がよく用いている
- 勾配ブースティングは, LightGBMと呼ばれる手法が人気だが, 他にも色々種類はある
- pytorchやtensorflowなどを用いてNNを実装する場合もある
- 特に現在はNNが人気
ハイパーパラメータの調節
- チューニングツールである 「Oputuna」 を用いる場合があるが, 他にも色々なツールがある.
- しかし, 現実的な時間で終わらないという問題があり, スコアの上がり幅は特徴量エンジニアリングに劣る
- 参加者がNotebookやDiscussionで有用性のある調整済みのハイパーパラメータを公開していることが多いため, コンペの終盤で行うのが良い
- 何度もいうが特徴量エンジニアリングのほうが重要
学習データから検証データを作成
- 検証データを作成し, 手元でスコアを確認することで, public LBのスコアよりも信頼に足る存在になる可能性があるため
- 1日にsubmitできる回数に制限があるため
- 検証方法には, 「ホールドアウト法」 と 「交差検証」 がある
ホールドアウト法
学習データから, trainデータ7割, valデータ3割のように分ける方法.
交差検証
複数回にわたって異なる方法でデータセットを分割し, それぞれホールドアウト検証を実行する方法.
- sklearnに存在する KFold というクラスを用いると便利
- 学習用データセットを無駄にしないというメリット. 与えられたデータセットを漏れなく学習させることができる.
- 各分割でのスコアの平均をスコアと見なすことが多い(CVスコア)
- 各分割で学習に使われなかった分割は Out-of-fold と表現される
- データセットの分割によってはホールドアウト法よりも精度が落ちてしまうので, しっかりとデータセットの課題設定の特徴を意識すること
アンサンブル
複数の機械学習モデルを組み合わせることで性能の高い予測値を獲得する手法. 手法は様々存在する.
- 手法の一種として, 「多数決」 の技法がある
- それぞれのモデルのいい部分, 悪い部分を補完しあい, 全体として良い予測結果を得る精度向上の手法

- 基本的にはやればやるほどスコアは伸びる
- 高度なアンサンブルは, 「黒魔術」と呼ばれることもある
テキストデータのコンペに参加!大まかな流れを知る
- まずはEDAをしっかり行い, データ同士の関連性を掴む
- 色々な軸でデータを眺め, 予測性能に寄付しような特徴量を得る
- 必要な列は追加あるいは削除したり, 欠損値はどうするのかなどをしっかり考えながら特徴量エンジニアリングを行う. 超重要!
- 機械学習アルゴリズムの構築, 学習
- 生成した重みは念の為保存しておく(データセットが膨大の 場合は特に). 後々のアンサンブルで活かせる可能性があるため.
- 評価結果からスコア向上を狙う
- ハイパーパラメータの調整
- 時間がかかるのでコンペの終盤. ハイパーパラメータの調整ツールなどを用いると便利.特徴量エンジニアリングほどじゃない.
- 特徴量エンジニアリングの見直し
- ここでかなり変わる
- アンサンブル
- コンペの終盤. 特徴量エンジニアリングほどじゃない.
- 交差検証やホールドアウト法の実行
- 1日にsubmitできる回数は決まっている. むやみやたらにsubmitしない. 評価までして必ず信頼に足るスコアを算出したモデルをsubmitする.
- ハイパーパラメータの調整
画像データの知見
テーブルデータと共通する部分
- 前提として, 機械学習の教師あり学習の枠組みである限り, 学習用データセットの特徴量・目的変数の対応関係を機械学習アルゴリズムで学習して未知のデータセットに対する性能を得るという部分は共通
- 画像データもテーブルデータと同様に, 数値データの集合である
テーブルデータと異なる部分
-
特徴量エンジニアリングの方法
- 伝統的な画像認識
- 「画像のどこに注目し, 何を特徴量として取り出すか」 => 局所特徴量「SIFT」などを用いた上でロジスティック回帰などの機械学習アルゴリズムに投入するやり方
- テーブルデータから特徴量を作っていく過程に似ている
- 近年の画像認識
- 画像から特徴量を抽出する部分をニューラルネットワークに任せる手法が一般的
- 画像のデータセットをそのまま入力として利用し, ニューラルネットワークの高い表現力で有用な特徴量を獲得している
- 画像から特徴量を抽出する部分をニューラルネットワークに任せる手法が一般的
- 伝統的な画像認識
-
特徴量エンジニアリングの方法から, 近年は, 特徴量エンジニアリングへの注力するよりも, ニューラルネットワークの構造設計に注力することが一般的
-
機械学習アルゴリズムに層の深いニューラルネットワーク(Deep Learning)を使うことが多く, 計算量が多いため, GPUを使用することが多い
-
データセットのサイズもテーブルデータとは違って大きいものが多い