ロバスト推定 (robust estimation) |
2017-05-21 - 2018-07-30 (update) |
|
|
*ロバスト推定 とは
観測値に外れ値が含まれている場合,単純な[link:最小二乗法]では正しくパラメータを推定できない場合があります.図1は外れ値の有り無しを変えて,直線のパラメータを推定した例を示します.
[img:kysv]
{{small:図1 青点線:直線の推定結果,左:観測値に外れ値を含まない,右:観測値に外れ値を含む}}
ロバスト推定とは与えられた観測値に外れ値が含まれている可能性を考え,その影響を抑えることを目的とした方法です.代表的な例としてRANSAC(Random Sample Consensus)や最小メジアン法 LMedS(Least Median of Squares),M推定(M-estimation)があります.
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/sp/lsm
シミュレーションで生成した観測値から直線のパラメータを推定します.
また,外れ値を含めた条件下で,RANSACとM推定を使ってパラメータを推定します.
*RANSAC (Random Sample Consensus)
RANSACは,観測値からランダムにいくつかサンプリングした中でパラメータを推定する処理を繰り返し,その中で最良の推定結果を出力する方法です.
RANSACについて詳しく知りたい場合,[1]の文献が参考になります.標準的なRANSACの方法に加え,その改良方式も含めて体系的な方法論が紹介されています.
{{small:[1]R.Raguram, O.Chum, M.Pollefeys, J.Matas, and J.Frahm, "Usac: A universal framework for random sample consensus", IEEE Transactions on Pattern Analysis and Machine Intelligence(PAMI), 2013}}
{{small:[link:http://people.inf.ethz.ch/pomarc/pubs/RaguramPAMI13.pdf] }}
*RANSACのアルゴリズム
ここでは,RANSACの処理の手順を説明します.
1.Random Sample ランダムにN点サンプリングを行う (直線のパラメータを推定する例では2点)
2.サンプリングした点を使ってモデル(例 直線の方程式)のパラメータを推定する
3.Consensus 推定したモデルと他の観測値との一致数を評価する
4.1~3の処理を複数回実施し,その中で評価値が最も高いパラメータを出力する
直線のパラメータを推定する例で,サンプルリングを変えてパラメータを推定した結果と評価値の例を図2に示します.
[img:fqgw]
{{small:図2 サンプリングを変えてパラメータを推定した結果と評価値の例}}
この例では,k番目にサンプリングした例が評価値が最も高くなるため,この時のパラメータを出力します.
また通常はこの後,出力したパラメータに一致する観測値のみを利用してパラメータを再度推定します.
**Random Sampling
サンプリングする点数は,モデルのパラメータを推定する上で最小の点数を設定します.これにより,サンプリングした点の中に外れ値が混入する確率を抑えることができます.直線のパラメータを推定する例では,サンプリングする点数は2点になります.
サンプリングする点の数が少ないので,この段階では高精度なパラメータは期待できません.ただし,概ね正しいパラメータが得られれば,その結果を使って後で観測値に含まれる外れ値の除去や,重みを付けた推定をすることができます.
**Consensus
パラメータの推定結果を使って,そこから所定の範囲内で一致する点の個数をカウントします.この個数を評価値として最も全体の観測値に一致するパラメータを見つけ出します.
**RANSACの問題点
外れ値が多い条件でも動作する強力なアルゴリズムではありますが,ある程度の試行回数が必要な都合から計算コストが掛かります.RANSACの計算コストに注目した改善案は最近でも多数提案されており,[1]の文献でもその一部が紹介されています.
文献[1]の内容は[link:RANSAC (Random Sample Consensus)]で一部を解説しています.良ければ参考にしてみてください.
*最小メジアン法 LMedS (Least Median of Squares)
最小メジアン法は,モデルと観測値との残差の中央値に注目し,それを最小化するパラメータを推定する方法です.外れ値は,相対的に大きな値を取りやすいため,中央値に注目することでその影響を抑制することができます.[2]
具体的には,RANSACの方法と同じように,ランダムにサンプリングした中からパラメータを推定し,その残差の中央値に基づいて評価を行う方法が良く利用されます.
{{small:[2] P.J.Rousseeuw, "Least median of squares regression", Journal of the American Statistical Association, 1984}}
{{small:[link:http://web.ipac.caltech.edu/staff/fmasci/home/astro_refs/LeastMedianOfSquares.pdf] }}
**RANSACと最小メジアン法の違い
RANSACでは,評価の際に閾値が必要になりますが,最小メジアン法では必要ありません.RANSACでは外れ値が多い条件(例えば5割以上外れ値)でも動作する場合がありますが,中央値を取る最小メジアン法では動作が不安定になりやすいようです.また,中央値の計算にはやや計算コストが掛かります.
*M推定 (M-estimation)
各観測値に重みを設定し,その重みに応じてパラメータを推定する方法です.通常,重みを付ける上でパラメータの初期値が必要になります.その初期値を使って,例えば残差の大きい観測値の重みを低く設定する という方法が一般的です.そして,設定した重みに基づいてパラメータを再計算することで,精度を向上させることができます.
図3は,大まかに設定したパラメータによるモデルの直線と残差の例を表します.右下にある外れ値は残差が大きいため,重みを低く設定できそうです.
[img:wyjc]
{{small:図3 モデルと残差の例}}
M推定について詳しく学びたい場合は,次の文献[3]が参考になります.
{{small:[3]J.Fox, S.Weisberg, "Robust Regression", School of Statistics : University of Minnesota, 2013}}
{{small:[link:http://users.stat.umn.edu/~sandy/courses/8053/handouts/robust.pdf] }}
重みに応じたパラメータの推定方法として,重みつき最小二乗法があります.これは正規方程式に対して,次の式のように各観測値の重みを表す行列を加えてパラメータを推定します.詳しい原理については[4]の文献を参考にしてください.
{$$ X = (A^TWA)^{-1} (WA)^TB $$}
{$$ W = \begin{bmatrix} w_0 & & & \\ & w_1 & & \\ & & \ddots & \\ & & &w_{N-1} \end{bmatrix} $$}
{{small:[4]金谷健一, "これなら分かる応用数学―最小二乗法からウェーブレットまで", 共立出版, 2003}}
{{small:[link:https://www.amazon.co.jp/これなら分かる応用数学教室―最小二乗法からウェーブレットまで-金谷-健一/dp/4320017382] }}
>> ご意見・ご質問など お気軽にご連絡ください.info