最適化¶
statsmodels は、モデルのパラメーターの推定のために 3 種類のアルゴリズムを使用します。
WLS and OLS のような基本的な線形モデルは、適切な線形代数を使用して直接推定されます。
RLM と GLM は、反復的に再重み付けされた最小二乗法を使用します。ただし、以下で説明する scipy オプティマイザのいずれかを選択することもできます。
他のすべてのモデルでは、 scipy の optimizers を使用します。
実用的な場合、特定のモデルでは scipy オプティマイザーをオプションで選択できます。特定の scipy オプティマイザーがデフォルトである場合もあれば、オプションである場合もあります。モデルとデータに応じて、適切な scipy オプティマイザーを選択すると、極小値の回避、より短い時間でのモデルのフィッティング、または少ないメモリでのモデルのフィッティングが可能になります。
statsmodels は、次のオプティマイザーと、その特定のオプティマイザーに関連付けられたキーワード引数をサポートします:
newton- Newton-Raphson反復。scipy から直接ではありませんが、スコアとヘシアンのみが必要なので、オプティマイザとみなします。- tolfloat
収束に際して許容されるパラメータの相対誤差。
nm- scipy'sfmin_nm- xtolfloat
収束に際して許容されるパラメータの相対誤差
- ftolfloat
収束に際して許容される loglike(params) の相対誤差
- maxfunint
実行する関数評価の最大数。
bfgs- Broyden–Fletcher–Goldfarb–Shanno の最適化、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との関係についてはNotesを参照してください。- maxfunint
最大反復回数。
- epsilonfloat
勾配を数値的に計算するために、estimate_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 or ndarray
fhess を近似する場合は、この値をステップサイズとして使用します。Likelihoodmodel.hessian が None の場合にのみ関連します。
powell- パウエルメソッド。 Scipyのfmin_powell.- xtolfloat
ラインサーチエラー許容度
- ftolfloat
収束に際して許容される loglike(params) の相対誤差。
- maxfunint
実行する関数評価の最大数。
- start_direcndarray
初期方向の設定。
basinhopping- ベイスンホッピング。これは scipy のbasinhoppingツールの一部です。- niterinteger
ベイスンホッピングの反復回数。
- niter_successinteger
グローバル最小候補がこの反復回数にわたって同じままである場合は、実行を停止します。
- Tfloat
合格または拒否基準の "temperature" パラメータ。 "temperatures" が高いほど、関数値のより大きなジャンプが受け入れられることを意味します。最良の結果を得るには、 T が極小値間の分離 (関数値における) に匹敵する必要があります。
- stepsizefloat
ランダム変位で使用する初期ステップ サイズ。
- intervalinteger
stepsize を更新する頻度の間隔。
- minimizerdict
minimizer`scipy.optimize.minimize()` に渡される追加のキーワード引数。例えば 'method' -最小化メソッド(例えば 'L-BFGS-B' )や 'tol' -終了の許容範囲など。他の引数は fit の明示的な引数からマップされます :- args <- fargs - jac <- score - hess <- hess
minimize- 任意の scipy オプティマイザーの使用を許可します。- min_methodstr, optional
使用する最小化メソッドの名前。メソッド固有の引数は直接渡すことができます。メソッドとその引数のリストについては、 scipy.optimize.minimize のドキュメントを参照してください。メソッドが指定されていない場合は、BFGS が使用されます。
モデルクラス¶
通常、エンドユーザーがこれらの関数やクラスを直接呼び出す必要はありません。ただし、さまざまな最適化手法にはユーザーにとって役立つ可能性のある固有のキーワード引数があるため、このクラスを提供します。
|
Newton-Raphson アルゴリズムを使用して近似します。 |
|
Broyden-Fletcher-Goldfarb-Shannon アルゴリズムを使用して近似します。 |
|
メモリ制限のある Broyden-Fletcher-Goldfarb-Shannon アルゴリズムを使用して近似します。 |
|
ネルダー・ミードアルゴリズムを使用して近似します。 |
|
共役勾配アルゴリズムを使用してフィットします。 |
|
ニュートン共役勾配アルゴリズムを使用して近似します。 |
|
パウエルの共役方向アルゴリズムを使用して近似します。 |
|
ベイスンホッピングアルゴリズムを使用して適合します。 |