【入門】Kaggle本でデータ分析の技術を勉強する【第2章】

Python

今日も元気にKaggle本。

今回は『Kaggleで勝つデータ分析の技術』第2章、タスクと評価指標についてです。

Kaggleなどのデータ分析コンペでは、実際のデータを扱うため、機械学習の解説書にはあまり載っていないような手法やテクニックが数多く活用されています。これらを理解し自身で使えるようにしておくことはコンペだけでなく、実務でのモデル構築において非常に役に立ちます。特徴量の作り方,バリデーション,パラメータチューニングなどについて,一般的な書籍ではあまり言及されない暗黙知やポイントについて記述しています。

以下、第2章についての備忘録(メモ、引用)になります。

備忘録

  • テーブルデータ(構造化データ)とはスプレッドシートやpandasのDataFrameなど、行と列を持つ形式のデータを指す。各行がレコード。
    モデルはGBDTを使うのが定石
    (画像・動画・音声・波形などのデータを扱うタスク→深層学習が定石

 

  • 多クラス分類は以下の2つに分類できる。
    • マルチクラス分類:レコードが複数のクラスのうちどれか1つに属する
    • マルチラベル分類:レコードが同時に複数のクラスに属する
      (マルチラベル分類では二値分類をクラスの数だけ繰り返すのが基本的な解法)

  

  • Root Mean Squared Error(RMSE)はMean Absolute Error(MAE)と比べると外れ値の影響を受けやすく外れ値に過剰適合したモデルを作成してしまう恐れがある
    →外れ値を除く処理が必要。外れ値の処理が難しいならMAEで評価する。

 

  • Root Mean Squared Logarithmic Error(RMSLE)は、目的変数が裾の重い分布を持ち、変換しないままだと大きな値の影響が強い場合などに用いる

 

  • Accuracyは不均衡データに対してのモデル性能を評価しづらい

 

  • Matthews Correlation Coefficient(MCC)は不均衡なデータに対してモデルの性能を適切に評価しやすい(ただし閾値に敏感でモデル選択の指標として不安定)

 

  • 二値分類のタスクに対する評価指標は大きく分けて以下の2種類
    • loglossやAUCのように確率値に基づくもの
    • F1-scoreやMCCのような混同行列に基づくもの→これらを最大化するように閾値を設定して二値化する必要(閾値の違いでスコアが大きく動く)

 

  • 閾値の最適化では、例えば閾値を0.01刻みで片っ端から試して評価指標のスコアが最良になるものを採用したり、閾値を引数にしてスコアを返す関数を最適化したりする。

 

  • 閾値の最適化をout-of-foldで行うべきか?→行わなくてもよい

F1-scoreを最大にするようなシンプルな例では、特にout-of-foldとしなくても大きな影響はないでしょう。ただし、閾値のぶれやスコアのぶれを確認できたり、複雑な最適化を行うときに大きく有利なバリデーションスコアとなることを避けられるため、out-of-foldで最適化を行うメリットはあります。

 

  • データが十分でない場合は、GBDTやニューラルネット(loglossを目的関数として学習するモデル)の出力する予測確率が歪む可能性。特に、極端に0や1に近い確率を予測するのは困難。予測確率を調整する方法はP.96参照。

 

  • リークには2つの意味がある
    • 分析コンペの設計の問題:使うことが想定されていない予測に有用な情報が想定外に漏れて使える状況になってしまうこと
    • モデル作成における技術的な問題:バリデーションの枠組みを誤ったためにバリデーションで不当に高いスコアが出てしまうこと

 

評価指標の話で、F1などを評価指標にする場合の閾値最適化の話は特に勉強になりました。

今まで、閾値を片っ端から試して最良のスコアを返す閾値を採用していましたが、これからは最適化アルゴリズムでやろうと思います。

実装

実装というかトレースですが、閾値最適化のサンプルコードを自分の手元でも動かしました。

mimosom/study
Contribute to mimosom/study development by creating an account on GitHub.

今日はここまでです。お疲れ様でした。

次回は「特徴量の作成」。個人的にこの本で最も期待しているパートです。

 

Kaggleなどのデータ分析コンペでは、実際のデータを扱うため、機械学習の解説書にはあまり載っていないような手法やテクニックが数多く活用されています。これらを理解し自身で使えるようにしておくことはコンペだけでなく、実務でのモデル構築において非常に役に立ちます。特徴量の作り方,バリデーション,パラメータチューニングなどについて,一般的な書籍ではあまり言及されない暗黙知やポイントについて記述しています。

コメント