Negative/Positive Thinking

2015-05-14

Feature-Weighted Linear Stackingメモ

はじめに

Sill et al., Feature-Weighted Linear Stacking, 2009
http://arxiv.org/abs/0911.0460

最近、コンペ上位者の手法としてよく見かける手法「Stacking」の一つについてメモ。

Stacking

Feature-Weighted Linear Stacking(FWLS)

概要的には、各学習結果をまとめあげる部分を線形和として表す際に、メタ素性をさらに考慮することで、細かい調整を行えるようにした感じ。

  • L個の機械学習モデル g_i
    • 入力xに対して、g_i(x)は予測結果を表す
  • M個のメタ素性関数 f_i
    • 入力xに対して、f_i(x)はメタ素性に関する何らかの実数を表す

Standard linear regression stacking
  • 単純に各学習器を線形和として考え、その重みを学習する
  • ブレンドした予測結果b(x) = Σ_i w_i * g_i(x)
    • このモデルごとの重みw_iによってブレンドされる
    • w_iは学習で求める
  • Leo Breiman, Stacked Regressions, 1996が参照されてるけど、このBreimanさんみた事あると思ったらランダムフォレストの人だった

Feature-weighted linear stacking
  • 上記に加えさらに「メタ素性」を考慮し、各学習器とメタ素性の組み合わせの線形和として考え、その重みを学習する
  • ブレンドした予測結果b(x)=Σ_{i,j} v_{ij} f_j(x) g_i(x)
    • 上記の重みw_iをメタ素性の関数をブレンドしたものとする
    • w_i(x) = Σ_j v_{ij} f_j(x)
    • v_{ij}は学習で求める

FWLS optimization problem
  • 最適化したい問題(v_{ij}の学習)は、
  • min_v Σ_入力x Σ_{i,j} (v_{ij} f_j(x) g_i(x) - 正解y(x))^2
  • ただし、入力xはスタッキングのパラメータを求めるために各学習器の学習で使っていない入力集合を使ったほうがよい
    • K-fold cross validationとか、各学習に使う入力集合には気をつける

モデルの数

メタ素性の例

  • 常に1を返すf_0(x)=1やg_0(x)=1を用意する事で、結果がよくなったりする
  • NetflixPrizeでのモデルブレンディングに使ったメタ素性
    • ユーザーが特定の期間で3つ以上の評価をしたかのbinary
    • 評価された回数の対数
    • 評価した累計日数の対数
    • 映画の平均視聴率のベイズ推定
    • ユーザーの評価数の対数
    • ユーザーの平均視聴率
    • など
  • LSHTC4(Wikipediaの文書のタグ当て)の優勝者のモデルブレンディングに使ったメタ素性
    • 低頻度ラベルかどうか、高頻度ラベルかどうか
    • 分類器結果での異なるインスタンス集合の数
    • 一番投票されるインスタンス集合への投票数
    • 各分類器の結果で一番多い/少ないインスタンスの頻度
    • 各分類器のインスタンス
    • 各分類器で同じ結果の分類器数
    • 各分類器のprecision/recall
    • 各分類器と出力のモード?とのジャッカード類似度
    • など

参考

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/jetbead/20150514/1431612867