最適化

statsmodels は、モデルのパラメーターの推定のために 3 種類のアルゴリズムを使用します。

  1. WLS and OLS のような基本的な線形モデルは、適切な線形代数を使用して直接推定されます。

  2. RLMGLM は、反復的に再重み付けされた最小二乗法を使用します。ただし、以下で説明する scipy オプティマイザのいずれかを選択することもできます。

  3. 他のすべてのモデルでは、 scipyoptimizers を使用します。

実用的な場合、特定のモデルでは scipy オプティマイザーをオプションで選択できます。特定の scipy オプティマイザーがデフォルトである場合もあれば、オプションである場合もあります。モデルとデータに応じて、適切な scipy オプティマイザーを選択すると、極小値の回避、より短い時間でのモデルのフィッティング、または少ないメモリでのモデルのフィッティングが可能になります。

statsmodels は、次のオプティマイザーと、その特定のオプティマイザーに関連付けられたキーワード引数をサポートします:

  • newton - Newton-Raphson反復。scipy から直接ではありませんが、スコアとヘシアンのみが必要なので、オプティマイザとみなします。

    tolfloat

    収束に際して許容されるパラメータの相対誤差。

  • nm - scipy's fmin_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 が使用されます。

モデルクラス

通常、エンドユーザーがこれらの関数やクラスを直接呼び出す必要はありません。ただし、さまざまな最適化手法にはユーザーにとって役立つ可能性のある固有のキーワード引数があるため、このクラスを提供します。

Optimizer()

_fit_newton(f, score, start_params, fargs, ...)

Newton-Raphson アルゴリズムを使用して近似します。

_fit_bfgs(f, score, start_params, fargs, kwargs)

Broyden-Fletcher-Goldfarb-Shannon アルゴリズムを使用して近似します。

_fit_lbfgs(f, score, start_params, fargs, kwargs)

メモリ制限のある Broyden-Fletcher-Goldfarb-Shannon アルゴリズムを使用して近似します。

_fit_nm(f, score, start_params, fargs, kwargs)

ネルダー・ミードアルゴリズムを使用して近似します。

_fit_cg(f, score, start_params, fargs, kwargs)

共役勾配アルゴリズムを使用してフィットします。

_fit_ncg(f, score, start_params, fargs, kwargs)

ニュートン共役勾配アルゴリズムを使用して近似します。

_fit_powell(f, score, start_params, fargs, ...)

パウエルの共役方向アルゴリズムを使用して近似します。

_fit_basinhopping(f, score, start_params, ...)

ベイスンホッピングアルゴリズムを使用して適合します。


最終更新日: 2025年01月28日