簡體   English   中英

Matlab 的 fminunc 函數的 R 等價物是多少?

[英]What is the R equivalent of Matlab's fminunc function?

為了計算最佳 theta,例如在邏輯回歸中,我必須創建一個 costFunction(要最小化的函數),然后將其傳遞給 fminunc 以獲得最佳 theta。 此外,如果可以計算 costFunction 的梯度,我將“GradObj”選項設置為“on”使用

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

並對 costFunction 進行編碼,使其作為第二個輸出參數返回 X 的梯度值 g。然后我給出

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

其中 X 是數據矩陣, y 是響應。 如何在 R 中實現上述內容?

看看optim函數。 它可以使用method = 'L-BFGS-B'進行無約束最小化,您也可以指定一個分析函數來計算梯度

編輯。 正如 Ben 正確指出的那樣, fminunc無約束優化,這也可以使用optim函數選擇Nelder-MeadBFGS 此外,我還從fminunc的文檔中注意到它使用trust域方法進行大規模優化。 我相信有一個 R 包trust可以做同樣的事情。 我建議看一下 R 的optimization任務視圖

在R中,可以使用R中的函數nlminb做約束優化!

nlminb(start, objective, gradient = NULL, hessian = NULL, ..., scale = 1, control = list(), lower = -Inf, upper = Inf)

開始是一個向量,包括所有參數的初始值。 目標是成本函數或您想要最小化的任何其他函數。

你試過ucminf包的ucminf功能了嗎? 如果您的問題是不受約束的問題(並且在許多情況下,您可以輕松地將受約束的問題轉換為不受約束的問題),則ucminf與 Matlab 的fmincon非常相似。 兩者在使用信任區域類型監控的意義上是相似的。 fmincon (依賴於內點算法)不同, ucminf基於擬牛頓類型的算法。 但是, usminf為您提供了與fmincon相同類型的控件。 根據我的經驗, ucminf非常擅長復制fmincon的輸出, ucminf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM