データフィッティングとは
非線形モデルをデータに適合させることは通常、最小化問題としてモデル化されます。ここで目的関数は、パラメータに依存するモデルのデータへの適合度の尺度として機能します。一般的なモデルでは、データポイントに対して総和を取ります:
ここで、
損失関数
関数
nAGの一般化非線形データフィッティングソルバー(nAGライブラリのe04gn)を使用すると、
単一外れ値の例
頑健性の側面を調査するため、まず
これを以下のモデルでフィッティングします:
まず
L2ノルム損失関数
L1ノルム損失関数
これは外れ値に対してより頑健です。つまり、データの大部分がある解
比較
図1の結果は、

損失関数のトレードオフ
非常に頑健な損失関数を選択することには危険があります。反復的な最適化プロセスにおいて、外れ値に対して頑健な損失関数は通常、現在のモデルに近いデータを好みます。これは、アルゴリズムが目的関数の局所最小値を見つける場合、モデルがデータのある部分集合に対してはよく適合するが、残りのデータに対しては非常に悪く適合する局所最小値に陥る可能性があることを意味します。
これを説明するために、

等高線プロット
以下の等高線プロットでは、黒丸はデータ生成に使用されたパラメータを表し、シアン色の丸はソルバーの開始点を表し、シアン色のくさびはソルバーによって見つかった最適化された解を表します。

(a)の
アークタンジェント損失のような非常に頑健な損失関数を使用する場合、ソルバーの挙動は大きく異なります。アークタンジェント損失は以下のようになります:
アークタンジェントの等高線プロット(b)には8つの局所最小値があり、そのうち7つは大域的最小値よりもかなり悪い解であり、我々はそのうちの1つに収束しています。この場合、初期推定値によって、データの小さな部分だけを非常によく適合するモデルになりました。
結論
損失関数の選択は、モデルの外れ値に対する感度に影響を与え、探索空間により多くの局所最小値を生み出し、開始点に対する感度を高める可能性があります。e04gnソルバーを使用すると、データフィッティング問題をセットアップする際に異なる損失関数を簡単に試すことができ、正しい最適解を求めるために時間を費やすことができます。
関連ページ:コード例を交えたデータフィッティングにおける損失関数と堅牢性の説明
ソースコード付きのより多くの例は以下をご参照ください:https://www.nag-j.co.jp/naglib/cl/python/jupyter-examples/
なお、この記事のオリジナル版英語ポスターは こちらからご参照いただけます。