35
AdaBoost The Top Ten Algorithms in Data Mining Chapter 7 2011/07/22

AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

Embed Size (px)

Citation preview

Page 1: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

AdaBoostThe Top Ten Algorithms in Data Mining

Chapter 7

2011/07/22

Page 2: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ (参考)Algorithms の提案された年代1.1960年代以前-K-nn(1951?), K-means(1967)

2.1970~80年代-EM-Algorithm(1977), NB(1981?), CART(1984)

3.1990年代-Apriori(1994), SVM(1995?1992?),-AdaBoost(1995), PageRank(1998)

SVMとAdaBoostは機械学習のアルゴリズムとしてよく使われているものの代表例

Page 3: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-学習データに対して極端に正しく作用するように設計してしまうことを過学習(Overfitting)と呼ぶ

x

t

M = 3

0 1

−1

0

1

x

t

M = 9

0 1

−1

0

1

PRML1章より

Page 4: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 前置き-ベイズ的な扱いをするときの過学習を防ぐ手法の代表格がノンパラメトリックベイズと正則化-SVMやBoostingは汎化能力が高い機械学習アルゴリズムとして広く利用される

y = 1y = 0

y = −1

margin

PRML7章よりSVMにおける工夫: マージン最大化

-AdaBoostはBoostingとよばれる枠組みの(たぶん)最も代表的なアルゴリム(Adaptive Boostingの略)

Page 5: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 前置き-Boostingは集団学習(Ensemble Learning)の枠組みの1つ.代表的な集団学習手法にBugging, Boosting, Random Forestがある.-集団学習の行うこと

1.Base(Weak) Learner(弱学習器)を作る2.弱学習器を組合せてより精度の高い学習器を生成

-「組合せ」によって結果として元の弱学習器よりも精度/性能の良い学習器を生成する(Boostする)

Page 6: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ Notation-特徴空間-ラベル集合-例えば2クラス分類であれば

-訓練集合-学習アルゴリズム-訓練集合を受け取り仮説 を出力する-クラス分類器なら は関数

-学習アルゴリズム は仮説全ての空間 から最良と思える仮説 を取ってくる-「最良」を例えば損失関数で測る-0-1損失

Page 7: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 一般的なBoostingの処理(1)-基本的な考え方: 集団学習の行うこと

1.Base(Weak) Learner(弱学習器)を作る2.弱学習器を組合せてより精度の高い学習器を生成-以降は2クラス分類器の学習とする:

-このときランダムなクラス分類器   は,50%の確率で正解する(50%の確率で失敗する)-弱学習器はランダムな学習器   よりも少しはいい性能のが必要.それを とする( は少なくとも51%以上の性能が必要)-このとき を使って,より性能のいいクラス分類器を作る(ステップ2.)

Page 8: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 一般的なBoostingの処理(2)- を生成したときの訓練集合の分布を とする- が誤分類したデータの分布を  とする-  から作った新しい弱学習器を とする→  と を組合せると良い結果になりそう

Page 9: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 一般的なBoostingの処理(2)- を生成したときの訓練集合の分布を とする- が誤分類したデータの分布を  とする-  から作った新しい弱学習器を とする→  と を組合せると良い結果になりそう

A General Boosting Procedure

1. Initialize

2. From t = 1 to T. (T: ブースティングステップ数)

- : Learn a weak learner

- : Calculate error

- : Create new distribution3. : Combine weak learners

Page 10: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 一般的なBoostingの処理(2)- を生成したときの訓練集合の分布を とする- が誤分類したデータの分布を  とする-  から作った新しい弱学習器を とする→  と を組合せると良い結果になりそう

A General Boosting Procedure

1. Initialize

2. From t = 1 to T. (T: ブースティングステップ数)

- : Learn a weak learner

- : Calculate error

- : Create new distribution3. : Combine weak learners

Page 11: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-AdaBoostは仮説列  を出力-仮説列を重み付きで組合せ

AdaBoost AlgorithmInput:

1. : Calculate initial distribution

2. From t = 1 to T.

- , :Learn and Calculate Error

- if then break

- Calculate Weight and next distribution

Outputs:

◆ AdaBoost(1)

Page 12: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-AdaBoostは仮説列  を出力-仮説列を重み付きで組合せ

AdaBoost AlgorithmInput:

1. : Calculate initial distribution

2. From t = 1 to T.

- , :Learn and Calculate Error

- if then break

- Calculate Weight and next distribution

Outputs:

◆ AdaBoost(1)

Page 13: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-AdaBoostは仮説の生成と重みの更新を行う- : クラス分類マージン-AdaBoostの背景 →

◆ AdaBoost(2)

Page 14: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-AdaBoostは仮説の生成と重みの更新を行う- : クラス分類マージン-AdaBoostの背景 →

◆ AdaBoost(2)

-仮説と重みが求められているあるステップtを考える今までの仮説Hに新しい仮説を組合せる: 各データ毎に分解する

2クラス分類(-1/+1)を考えると

Page 15: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-関数  を最小化するように重みを更新する

-()の中=0としてαについてまとめる → 対数

◆ AdaBoost(3)

Page 16: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-関数  を最小化するように重みを更新する

-()の中=0としてαについてまとめる → 対数

◆ AdaBoost(3)

-全データについての誤差の平均を考える

Page 17: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-関数  を最小化するように重みを更新する

-()の中=0としてαについてまとめる → 対数

◆ AdaBoost(3)

-全データについての誤差の平均を考える

-以上よりAdaBoostにおけるαの更新式を得る

Page 18: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

AdaBoost AlgorithmInput:

1. : Calculate initial distribution

2. From t = 1 to T.

- , :Learn and Calculate Error

- if then break

- Calculate Weight and next distribution

Outputs:

残り

◆ (再掲)AdaBoost Algorithm

Page 19: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-仮説の更新に関する考察-簡単化のため重みα=1,誤差に  の2乗まで考える

-このときの完全な仮説 を考える

-仮説に依存しない項を分母に加える

の展開

は関係ない

分母はhに非依存

◆ AdaBoost(4)

Page 20: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-新しく        を考えて,書き直す

- は2値で  と同じ符号になるはず

-y=1の確率が大きいなら+1,逆なら-1-ベイズ分類器 = 0/1損失関数における分類 ベイズ分類器

◆ AdaBoost(5)

Page 21: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

- を考えると,最適化=0/1損失最小化- の上で,重みαで仮説を組合せする

A General Boosting Procedure

1. Initialize

2. From t = 1 to T. (T: ブースティングステップ数)

- : Learn a weak learner

- : Calculate error

- : Create new distribution3. : Combine weak learners

現在の分布  と0/1損失  から分布を再構成する方法が欲しい

◆ (再掲)Boosting Algorithm

Page 22: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

-なぜ指数誤差が0/1損失最小化を上手く行うか?-2クラス分類における指数誤差を計算してみる

-指数誤差の最小化(被積分関数の最小化)する仮説

-出力-ベイズルールになってる = 0/1損失最小化する

◆ AdaBoost(6)

Page 23: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

AdaBoost AlgorithmInput:

1. : Calculate initial distribution

2. From t = 1 to T.

- , :Learn and Calculate Error

- if then break

- Calculate Weight and next distribution

Outputs:

◆ (再掲)AdaBoost Algorithm

Page 24: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ AdaBoostの応用-(本などではよく)顔認識・検出/画像認識に利用されると言われる.実際OpenCVには機械学習ライブラリとしてSVMやNB,決定木などと合わせてAdaBoostが実装されている様子-それ以外もMatlab,Weka, Rなど気軽に機械学習を実験できる処理系には,主要な機械学習系ライブラリの1種としてAdaBoostが実装されている様子

-本の例題も顔認識

Page 25: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆計算論的学習理論-計算論的学習理論(Computational Learning Theory; COLT)とは(要約すると),「学習する」という行為を形式言語や数学的モデルによってモデル化して,学習能力,汎化能力,計算量,学習可能性,などについて議論する領域-1967年のGoldによる極限同定-Valiantが1984年に確率的近似学習(Probability Approximately Correct Learning; PAC Learning)の枠組みを導入した

Page 26: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆確率的近似学習(PAC学習) (1)-PAC学習ではドメイン 上に確率分布  を仮定する- は任意で, は  について何も知らない

-確率分布  に従って,サンプル とそのラベルを取得できる.(サンプリングオラクルEXと呼ぶ)-PAC学習には学習の成功基準を表すパラメータとして信頼度δと近似度εが導入されている(0≦δ,ε≦1)-真の仮説  と学習途中の仮説  について,対称差を       と表す.定義は-真の仮説  と学習途中の仮説  について,確率分布  上の誤差を次で定義する.

Page 27: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆確率的近似学習(PAC学習) (2)-ある仮説 がPAC学習可能であるとは,ドメイン 上に任意に定めた確率分布  について,学習アルゴリズム  が任意のε,δについて以下を満たす仮説 を出力し,アルゴリズムが常に停止すること.

-間違いのパラメータε-学習が正解するパラメータδ

-KearnsとValiantが考えたこと→ 任意のパラメータε,δではなく,ある固定されたパラメータについての学習(弱PAC学習)を導入し,その結果からより良い仮説を構築出来ないだろうか?

Page 28: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆弱仮説から強仮説へBoostingする-弱PAC学習で得られる仮説(弱仮説)から,元々のPAC学習における仮説(強仮説)を構築することが出来るという肯定的な結果が示された → Boostingを用いることで,弱PAC学習とPAC学習が等価であることが示された.-(余談)その他の話題として,学習可能な問題の階層化がある.(PAC学習モデルにおける学習不可能性)-(余談)PAC学習はVC次元(直感的には関数fの能力を示し,複雑さを測る指標となる)と深い関係がある.VC次元のVの人(Vapnik)が提案したのがSVM.

Page 29: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ まとめ-Boostingは集団学習(Ensemble Learning)の枠組みの1つ.AdaBoostはその実現方法として有名なもので,重みをデータに合わせて適応的(Adaptive)に変化させるBoosting手法(Adaptive Boosting)-集団学習の行うこと

1.Base(Weak) Learner(弱学習器)を作る2.弱学習器を組合せてより精度の高い学習器を生成

-「組合せ」によって結果として元の弱学習器よりも精度/性能の良い学習器を生成する(Boostする)

Page 30: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ オマケ - Privacy Preserving Boosting(1)-(2004年→)Privacy-Preserving Boosting, E.Aimeur, G.Brassard, S.Gambs and B.Kegl, Journal of Data Mining and Knowledge Discoverty, Vol.14 (2007)-MABoost (Multiparty Abstention Boost)→“Our novel boosting algorithm with abstention that works in a distributed and secure manner.”-(余談1.)まだ差分プライバシーがない時代なので,主なPPDM手法として匿名化/ノイズ/秘匿計算が出ている-(余談2.)あまり実験的評価はされてない(この段階では)-(余談3.)シミュレーションベースのプライバシー評価(詳しくはGoldreichのFoundations of Cryptography)

Page 31: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ オマケ - Privacy Preserving Boosting(2)-基本的にはAdaBoostの枠組みを次のように拡張-AliceとBobが訓練集合を同じ個数ずつ所持している

-決定木をイメージして,要素(attribute)毎に考える-    ならクラスC1,違えばクラスC2に属する

-各要素毎の分類器を考えておく

処理1. Finding the Optimal for Each Attributes-Alice/Bobは各要素(i)で最も良い(決定木の文脈で)決定境界を生成し,誤差が1/2未満なら    とする

Page 32: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ オマケ - Privacy Preserving Boosting(2)処理2.

-    と    をRandom Rendez-Vousする-各属性毎の弱学習器の数値(1か0か)を使って,お互いに1である属性を探す.これが存在しないとダメ.-数値が1である属性(誤差が1/2未満な属性)の組み合わせ(Permutation)が残っているかどうか調べ,残っていないならBoostを終了する

-誤差が1/2未満の弱学習器は組合せたら使えそうなので,それを探索するステップ-Agreeing on a Common Attributeと呼ぶ(両者に取って使えそうな属性を探す,という点で)

Page 33: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ オマケ - Privacy Preserving Boosting(2)処理3. Merging the Weak Classifiers

-AliceとBobの弱学習器を   とする

-2人で合成する学習器を次のように作る

-お互いの意見が異なるときは,出力することを諦める(0を返す) - abstain(自制する)

処理4. その他-正解率,誤答率,自制した割合を計算して重み/係数を更新する(Adaboostを同じ感じ)

Page 34: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ オマケ - Privacy Preserving Boosting(5)-(2004年→)Privacy-Preserving Boosting, E.Aimeur, G.Brassard, S.Gambs and B.Kegl, Journal of Data Mining and Knowledge Discoverty, Vol.14 (2007)-(余談1.)まだ差分プライバシーがない時代なので,主なPPDM手法として匿名化/ノイズ/秘匿計算が出ている-(余談2.)あまり実験的評価はされてない(この段階では)-(余談3.)シミュレーションベースのプライバシー評価(詳しくはGoldreichのFoundations of Cryptography)→だがよく分からない-パラメータ(ここでは重みと係数)だけを送る手法は通信量が削減できる可能性があるので,面白い

Page 35: AdaBoost - iip.ist.i.kyoto-u.ac.jp · 前置き-機械学習において汎化能力を得ることは大きい目標-「汎化能力」とは学習用のデータ以外の未知のデータに対しても正しくアルゴリズムが作用する能力

◆ 参考文献など-計算論的学習, 榊原,小林,横森, 2001-Data Mining - Practical Machine Learning Tools and Techniques 3rd edition, I.H.Witten, E.Frank, M.A.Hall, 2011(初版は1999?)-Wekaの人.WekaではAdaBoostM1というアルゴリズムが実装されている

-パターン認識(Rで学ぶデータサイエンス5), 金森,竹之内,村田,金, 2009 - 14章に集団学習