最適化関数
Rでの利用をまずは想定
optim()
最初の引数で par (最適化パラメータ), fn(最適化関数),
最適化の対象の関数 fn。 parで設定したパラメータが、最初の引数に入る。
fn : A function to be minimized (or maximized), with first argument the vector of parameters over which minimization is to take place. It should return a scalar result.
controlで、最適化での制約みたいなものを付けられる?
By default optim performs minimization, but it will maximize if control$fnscale is negative
defaultで最小化、 fnscaleがマイナスで最大化
返り値 listで返ってくる リストの属性から必要なものを取る
par: これが、最適化時のパラメータ。
convergenceは0になるかcheckが必要? An integer code. 0 indicates successful completion
hessian 引数でTRUEにするとoutputされる。最終地点(parでの?)の ヘッセ行列? 0が多いと,, convergenceが0ならいいのか?
利用用途
glmには直接、geometric distributionがないので、最尤法でパラメータを出してる
シンプルな例 optim()の引数、返り値など
これも使い方。parが最適化対象パラメータになるので、それ以外は名前付きで渡せば良い。
ベクトルで
実際にやってみた。
code:R
## Rosenbrock function
fr <- function(x, a, b) {
(a - x1)^2 + b*(x2 - x1^2)^2
}
optim(c(0,0), fr, a=2, b=5)
(x, y) = (2, 2^2)で最小化してほしい。
code:output
$par
$value
$counts
function gradient
85 NA
$convergence
想定通り、2,4で 0に収束してる。
ベイズ的最適化の入門と応用 機械学習による機械学習の実験計画
ハイパーパラメータの推定