最適化¶
statsmodels は、モデルのパラメータ推定に 3 種類のアルゴリズムを使用します。
WLS および OLS などの基本的な線形モデルは、適切な線形代数を使用して直接推定されます。
RLM および GLM は、反復的に重み付けされた最小二乗法を使用します。ただし、オプションで、以下で説明する scipy オプティマイザーの 1 つを選択することもできます。
実用的な場合、特定のモデルでは scipy オプティマイザーのオプション選択が可能です。特定の scipy オプティマイザーは、デフォルトまたはオプションとなる可能性があります。モデルとデータに応じて、適切な scipy オプティマイザーを選択することで、局所的な最小値の回避、より短い時間でのモデルの適合、またはより少ないメモリでのモデルの適合が可能になります。
statsmodels は、特定のオプティマイザーに関連付けられたキーワード引数とともに、次のオプティマイザーをサポートします。
newton
- ニュートン・ラフソン反復。scipy から直接ではありませんが、スコアとヘシアンのみが必要であるため、オプティマイザーと見なします。- tolfloat
収束のために許容されるパラメータの相対誤差。
nm
- scipy のfmin_nm
- xtolfloat
収束のために許容されるパラメータの相対誤差
- ftolfloat
収束のために許容される loglike(params) の相対誤差
- maxfunint
実行する関数の最大評価数。
bfgs
- ブロイデン–フレッチャー–ゴールドファーブ–シャノン最適化、scipy のfmin_bfgs
。- gtolfloat
勾配のノルムが gtol より小さい場合に停止します。
- normfloat
ノルムの次数 (np.inf は最大、-np.inf は最小)
- epsilon
fprime が近似される場合、ステップ サイズにこの値を使用します。LikelihoodModel.score が None の場合にのみ関連します。
lbfgs
-bfgs
のメモリ効率の高い (限定メモリ) 実装。Scipy のfmin_l_bfgs_b
。- mint
限定メモリ行列を定義するために使用される変数メトリック補正の最大数。(限定メモリ BFGS 法は完全なヘシアンを格納しませんが、その近似にこの多くの項を使用します。)
- pgtolfloat
反復は
max{|proj g_i | i = 1, ..., n} <= pgtol
の場合に停止します。ここで、pg_i は投影勾配の i 番目の成分です。- factrfloat
反復は
(f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps
の場合に停止します。ここで、eps は機械精度であり、コードによって自動的に生成されます。factr の一般的な値は、低精度では 1e12、中精度では 1e7、極めて高精度では 10.0 です。L-BFGS-B への scipy.optimize.minimize インターフェイスによって (factr の代わりに) 公開される ftol との関係については、注記を参照してください。- maxfunint
反復の最大回数。
- epsilonfloat
勾配を数値的に計算するために、approx_grad が True の場合に使用されるステップ サイズ
- approx_gradbool
勾配を数値的に近似するかどうか (その場合、func は関数値のみを返します)。
cg
- 共役勾配最適化。Scipy のfmin_cg
。- gtolfloat
勾配のノルムが gtol より小さい場合に停止します。
- normfloat
ノルムの次数 (np.inf は最大、-np.inf は最小)
- epsilonfloat
fprime が近似される場合、ステップ サイズにこの値を使用します。スカラーまたはベクトルにできます。Likelihoodmodel.score が None の場合にのみ関連します。
ncg
- ニュートン共役勾配。Scipy のfmin_ncg
。- fhess_pcallable f’(x, *args)
f のヘシアンに任意のベクトル p を掛けたものを計算する関数。LikelihoodModel.hessian が None の場合にのみ提供する必要があります。
- avextolfloat
最小化子の平均相対誤差がこの量以下になった場合に停止します。
- epsilonfloat または ndarray
fhess が近似される場合、ステップ サイズにこの値を使用します。Likelihoodmodel.hessian が None の場合にのみ関連します。
powell
- パウエルの方法。Scipy のfmin_powell
。- xtolfloat
ラインサーチ誤差許容範囲
- ftolfloat
収束のために許容される loglike(params) の相対誤差。
- maxfunint
実行する関数の最大評価数。
- start_direcndarray
初期方向セット。
basinhopping
- ベイシンホッピング。これは scipy のbasinhopping
ツールの一部です。- niterinteger
ベイシンホッピングの反復回数。
- niter_successinteger
グローバル最小候補がこの回数反復しても同じままである場合、実行を停止します。
- Tfloat
受け入れまたは拒否基準の「温度」パラメータ。温度が高いほど、関数値の大きなジャンプが受け入れられることを意味します。最良の結果を得るには、T は局所的な最小値間の (関数値の) 分離と比較可能である必要があります。
- stepsizefloat
ランダム変位で使用する初期ステップサイズ。
- intervalinteger
stepsize を更新する頻度の間隔。
- minimizerdict
最小化子 scipy.optimize.minimize() に渡される追加のキーワード引数。たとえば、「method」- 最小化メソッド (例: 「L-BFGS-B」)、または「tol」- 終了の許容範囲。fit の明示的な引数からマッピングされたその他の引数: - args <- fargs - jac <- score - hess <- hess
minimize
- scipy オプティマイザーの使用を許可します。- min_methodstr, optional
使用する最小化メソッドの名前。メソッド固有の引数は、直接渡すことができます。メソッドとその引数のリストについては、scipy.optimize.minimize のドキュメントを参照してください。メソッドが指定されていない場合、BFGS が使用されます。
モデルクラス¶
一般に、エンドユーザーがこれらの関数とクラスを直接呼び出す必要はありません。ただし、さまざまな最適化手法には、ユーザーにとって役立つ可能性のある固有のキーワード引数があるため、クラスを提供します。
|
ニュートン・ラフソンアルゴリズムを使用して適合します。 |
|
ブロイデン-フレッチャー-ゴールドファーブ-シャノンアルゴリズムを使用して適合します。 |
|
限定メモリ ブロイデン-フレッチャー-ゴールドファーブ-シャノンアルゴリズムを使用して適合します。 |
|
ネルダー-ミードアルゴリズムを使用して適合します。 |
|
共役勾配アルゴリズムを使用して適合します。 |
|
ニュートン共役勾配アルゴリズムを使用して適合します。 |
|
パウエルの共役方向アルゴリズムを用いて適合を行います。 |
|
ベイシンホッピングアルゴリズムを用いて適合を行います。 |