Kaggleで使われた特徴量エンジニアリングとアルゴリズムまとめ

Kaggleにおいて、人によってはソリューションを書いてくれているものがあります。特徴量エンジニアリングやアルゴリズムなど業務での参考になるだろうと思われるので、仕事で関わりそうなデータという観点から4つほどですが事例を集めてみました。このような事例のまとまった本とかあったらいいのですが。

基本的に各事例ごとに
・目的
・どんなデータセット
・どんな特徴量エンジニアリング
・どんなアルゴリズム
・リンク
を記していきます。

Walmart Recruiting – Store Sales Forecasting

  • 目的
    • ウォルマートの部門ごとの売上予測
  • どんなデータセット
    • ウォルマートの売上データ
      ・店舗番号
      ・部門番号
      ・週
      ・週次の売上
      ・祝日の有無

      外部のデータ
      ・気温
      ・物価指数
      ・スーパーボウルの時期
      など

  • どんな特徴量エンジニアリング
    • 予測する売上の過去データを用いたので、特徴量は用いていません。

        ・年間における週の番号
        ・高い成長率の店舗や昨年から大きく成長している店舗に関して祝日効果の重み付け 

      を行った程度のようです。

    • どんなアルゴリズム
      • 統計学と機械学習のハイブリッドな手法のようです。SASとRを使用しているとのことです。

          統計学の手法
          1. Auto-regressive Integrated Moving Average (ARIMA)
          2. Unobserved Components Model (UCM)

          機械学習の手法
          3. Random Forest
          4. Linear Regression
          5. K nearest regression
          6. Principle Component Regression

        以上の6つのモデルから平均値をとって予測し、部門ごとにモデルを作ったようです。

    • リンク
    • Algorithmic Trading Challenge

    • 目的
      • 大規模なトレーディングにおけるマーケットの反応を予測
    • どんなデータセット
        • 株式市場の出来高に関するデータ
           ・ask(買い)の価格データ
           ・bid(売り)の価格データ
           ・建値かどうか
           ・買い手か売り手のどちらが主導したか
           ・取引高
           ・時刻
          など
    • どんな特徴量エンジニアリング
      • ・価格
         ・トレンドを除外した価格の振幅
         ・流動性ショック発生前の最後のn回の価格指数の移動平均
         ・流動性ショック発生前の最後のn回の間の価格増加
        ・流動性
        ・スプレッド
         ・bidとaskの広がり
        ・レート
         ・最後のn回のイベントにしめる注文などの数
    • どんなアルゴリズム
      • ・ランダムフォレストを用いた変数選択
         【工程1】
         ・全ての特徴量を利用して訓練する
         ・テスト集合に対するモデルのパフォーマンスを計算する
         ・特徴量の重要度をランク付けする
         ・複数のサブセットから最も変数重要度の高い特徴量セットを作る
         ・最も平均二乗誤差(RMSE)が低いサブセットに決める
         【工程2】
         ・工程1で決めた特徴量から意味的に似ている特徴量を選ぶ
         ・工程1で選ばれていない特徴量を選択する
         ・RMSEが低くなるなら、意味的に似ている特徴量を除外する
         ・改善しなくなるまで続ける
         【工程3】 
         ・工程1〜2で選ばれて意味的に直交(独立)しているかどうか考慮して、工程1で除外されたものの中から特徴量を選ぶ
         ・RMSEが低くなるなら、工程1の特徴量にその変数を加える
    • リンク
    • Predict Closed Questions on Stack Overflow

    • 目的
      • 質問が閉じられるかどうかを予測
    • どんなデータセット
      • ・質問者の質問のその当時の回答数
        ・タイトル
        ・bodyテキスト
        ・タグ
        ・閉じられたかどうか
    • どんな特徴量エンジニアリング
      • ・タイトル、bodyテキスト、タグをVowpal Wabbit formatに変換
        ・ユーザーの評価や投稿数なども利用
    • どんなアルゴリズム
      • Vowpal WabbitというMicrosoftやYahoo!が出資している機械学習ツールを使い、多クラス分類を行ったようです。カテゴリカルな変数をone-hotに変換する必要がなく、楽に分析できるようです。
    • リンク
    • Outbrain Click Prediction

    • 目的
      • ユーザーにレコメンドするコンテンツのクリック予測
    • どんなデータセット
      • ・ユニークユーザーID
        ・ドキュメントID
        ・デバイス
        ・流入経路
        ・クリック
        ・プロモーションしたコンテンツID
        ・ドキュメントの詳細情報
        ・ドキュメントのトピック情報
    • どんな特徴量エンジニアリング
      • 重要な特徴量
        ・表示されてからの1時間後、1日後、1日以降のコンテンツのページビュー
        ・FFM(Field-aware Factorization Machines)を用いて、おのおの競合している広告のデータを作成
        ・ユーザーごとのクリックした際の流入経路やドキュメントの組み合わせ
         80回よりも少ないイベントのデータは切り捨てている
        ・ユーザーごとのページビューしたドキュメント
        ・広告クリックの1時間以内にクリックしたドキュメント
        ・広告のカテゴリーとドキュメントのカテゴリーの相互作用項
        ・現在時刻とドキュメントが表示された時刻との差分の対数
        ・ユーザーが同じカテゴリーや同じトピックの広告ドキュメントを見たかどうか
        ・過去にその広告を見たかどうか、それをクリックしたかどうか(広告主、流入経路、カテゴリー、トピックも同様に)
        ・将来的にその広告や広告ドキュメントを見たかどうか、将来的に見てなくても同じキャンペーンの広告を見ているかどうか
    • どんなアルゴリズム
      • 用いたモデル
        ・LibFFM
        ・Vowpal Wabbit FTRL(ロジスティック回帰でのL1・L2正則化)
        ・Liblinear
        ・XGBoost
        ・Keras
        ・Logistic regression
        ・SVC
    • リンク
    • 感想

      調べてみて、複数の時系列モデルの予測結果の平均値で予測する手法、特徴量の選択をstepAICのようにランダムフォレストで行う手法、Vowpal Wabbit(今回の2つのソリューションで扱われていた)などを新たに知れました。Kaggleには他にもKernelという手法をシェアする場があるので、その情報も今後キャッチアップしていきたいと思います。

      参考情報

      機械学習コンペティションの進展と今後の展開

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です