Што такое R эквівалент функцыі fminunc ад Matlab?

Для таго, каб вылічыць аптымальную тэта, напрыклад, ў лагістычнай рэгрэсіі, я павінен стварыць costFunction (функцыя будзе мінімізавана), які затым перадаецца fminunc для атрымання аптымальнага тэта. Акрамя таго, калі градыент costFunction можа быць вылічаная, я ўсталяваў опцыю «GradObj» да «на», выкарыстоўваючы

options = optimset('GradObj','on');

і кадуюць costFunction так, што ён вяртае, у якасці другога выхаднога аргументу, значэнне градыенту г X. Тады я даю

[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

дзе Х ўяўляе сабой матрыцу дадзеных і адказ. Як я магу рэалізаваць вышэй у R?

11

2 адказы

Паглядзіце на Optim <�код /> функцыі. Гэта можна зрабіць з дапамогай безумоўнай мінімізацыі метад = «L-BFGS-B» і вы можаце паказаць аналітычную функцыю для вылічэнні градыенту, а таксама

EDIT. Як Бэн паказаў правільна, fminunc робіць нязмушаны аптымізацыя, якая таксама можа быць дасягнута з дапамогай Optim функцыя выбару Nelder-Мід або BFGS . Акрамя таго, я таксама заўважыў, з дакументацыі fminunc , што робіць буйнамаштабную аптымізацыю з выкарыстаннем метадаў траставых вобласці. Існуе R пакет трэст , што я лічу, робіць тое ж самае. Я рэкамендаваў бы зірнуць на Аптымізацыя выгляд задача з R ,

9
дададзена
Я заблытаўся, я думаў, што ОП прасіў без абмежаванняў аптымізацыі і вы апісваеце <�я> абмежаваныя Аптымізацыя ...? (Не так ужо важна, што шмат, Optim гэта правільны адказ у любым выпадку.)
дададзена аўтар Ben Bolker, крыніца
Вы маеце рацыю! я не ведаю, па нейкай прычыне я выказаў здагадку, што ён прасіў безумоўнай аптымізацыі. я дадаў праўку паказваючы тое ж самае.
дададзена аўтар Ramnath, крыніца

У R, вы можаце выкарыстоўваць функцыю nlminb у R, каб зрабіць ўмоўнай аптымізацыі!

<�Код> nlminb (пачатак, мэта, градыент = NULL, то мешкавіны = NULL, ..., маштаб = 1, кантроль = ліст (), найнізка = -Inf, верхні = Inf)

Старт вектар ўключае ўсе пачатковыя значэнні параметраў. Мэтай з'яўляецца функцыя кошту або любыя іншыя функцыі, якія вы хочаце, каб звесці да мінімуму.

1
дададзена