糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

TrBagg: A Simple Transfer Learning Method and Its Application to Personalization in Collaborative Tagging(ICDM 2009) 読んだ

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.164.5964
まず先に転移学習のサーベイ - kamishima.net(pdf)で転移学習についての大体のイメージを掴んだ上で読んだ.

目的

転移学習でバギング.Abstに

we propose a very simple approach to transfer learning

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.164.5964

と書いてある.

そもそも転移学習とは

上のサーベイを読むのが一番早いけれど自分なりのまとめとして.
大まかな理解としては,ある領域で得た知見を関連する別の領域に活用するための枠組が転移学習と呼ばれている,といった感じ.
最近だと

  1. 整っていないけど,数は多いデータ(クロールして集めてきたデータ)
  2. 整っているけど,数が少ないデータ(人手でアノテーションしたデータ)

といった二つのデータがあるシチュエーションで,いかに1.のデータを2.の学習に活かすか,という点で注目が集まってるっぽい.

方法

判別問題を考える.数は多いけど整ってないデータを,数は少ないけど整っているデータをと呼び,それぞれをSource, Targetと呼ぶ.

Learning Phase

ステップ目の学習において,まずはデータをマージしてとする.次に,マージしたからブートストラップによってを得,それを用いて弱学習器を得る.これを回繰り返し,結果として弱学習器の集合を得る.

Filtering Phase

から良い感じの判別器を含む集合を選び,あとはによる多数決でクラス判別.
じゃあその"良い感じの判別器"はどう選ぶのか,という話だけど3つ提案されている.

  • Majority Voting on the Target set(MVT)
    • まずTargetのデータのみで学習した学習器を作り,とする.その後,の各弱学習器をに適用し,誤差の昇順にソートしてとする.
    • 続いて; とする.
    • あとはに弱学習器を一つずつ追加し,標本誤差が改善されればにする.
  • Majority Voting on the Validation set(MVV)
    • 過学習を起こす可能性があるので.validation dataを抜いておいてMVT時の標本誤差を計算する.しかしvalidation dataはLearning Phaseで除外しなきtゃならんのでtargetが小さい時には無理.
  • Simple Comparison(SC)
    • のみで学習した学習器の各弱学習器を比較して標本誤差が小さいもののみ採用.

利点

四つある.

チューニングと実装が容易

サーベイで言うところの)統合型だとなかなか実装コスト高い(印象).その点TrBaggなら弱学習器に手を加える必要も無く,出力結果をマージするだけで良い.しかも調整が必要なパラメータもブートストラップする時のサイズ数だったり何を弱学習器として使うか,ぐらいなので良い.

"負の転移学習"に対応できる

負の転移学習といって,SourceとTargetが違いすぎたりするとソースの情報を用いることによって精度が下がってしまう事がある.その点TrBaggならFiltering Phaseでソースのみの標本誤差を考慮しているので起こりにくい.

複数ドメインへの転移が容易

Targetが複数ドメインで構成されているとする(元論文ではSBMにおけるパーソナライズしたタグ推薦なのでつまりはユーザ).TrBaggならLearning Phaseのデータはデータをマージするため,最終的な結果でドメイン別に得たかったとしてもまずこの部分は共通して計算することができる.ドメイン別に出力するにはFiltering Phaseで用いるを絞ってしまえばいい.LearningはFilteringと比較すると時間を食うので非常に効率が良い.

並列計算可能

Learningの部分は並列計算可能(これは通常のBaggingでも同様).

実験

deliciousとはてブで実験.弱学習器は多項モデルのナイーブベイズを100個.ブートストラップのサイズは.Z検定で比較.

  • targetのみを使ったbaggingと比較
    • この時,弱学習器にSVM + 線形カーネルも使っているがほぼ結果変わらず(計算はTrBaggの方が早かった)
  • TrAdaBoostと比較

タイトル通り本当にシンプル.