怎么看Python中安裝了哪些庫(mac怎么看python的安裝路徑)
原文鏈接:http://tecdat.cn/?p=22853
原文出處:拓端數(shù)據部落公眾號
本文將介紹R中可用于投資組合優(yōu)化的不同求解器。
通用求解器
通用求解器可以處理任意的非線性優(yōu)化問題,但代價可能是收斂速度慢。
默認包
包stats(默認安裝的基本R包)提供了幾個通用的優(yōu)化程序。
optimize()。用于區(qū)間內的一維無約束函數(shù)優(yōu)化(對于一維求根,使用uniroot())。
展開全文
optim()通用優(yōu)化,有六種不同的優(yōu)化方法。
Nelder-Mead:相對穩(wěn)健的方法(默認),不需要導數(shù)。
CG:適用于高維無約束問題的低內存優(yōu)化
BFGS:簡單的無約束的準牛頓方法
L-BFGS-B:用于邊界約束問題的優(yōu)化
SANN: 模擬退火法
Brent: 用于一維問題(實際上是調用optimize())。
這個例子做了一個最小二乘法擬合:最小化
下一個例子說明了梯度的使用,著名的Rosenbrock香蕉函數(shù):
,梯度
,無約束最小化問題
optim(c(-1.2, 1), f, gr, method = "BFGS")
下面的例子使用了界約束。
最小化
約束:
這個例子使用模擬退火法(用于全局優(yōu)化)。
constrOptim()。使用自適應約束算法,在線性不等式約束下最小化一個函數(shù)(調用optim())。
nlm(): 這個函數(shù)使用牛頓式算法進行目標函數(shù)的最小化。
nlminb(): 進行無界約束優(yōu)化。.
optim
基礎函數(shù)optim()作為許多其他求解器的包,可以方便地使用和比較。
全局優(yōu)化
全局優(yōu)化與局部優(yōu)化的理念完全不同(全局優(yōu)化求解器通常被稱為隨機求解器,試圖避免局部最優(yōu)點)。
特定類別問題的求解器
如果要解決的問題屬于某一類問題,如LS、LP、MILP、QP、SOCP或SDP,那么使用該類問題的專用求解器會更好。
最小二乘法 (LS)
線性最小二乘法(LS)問題是將最小化,可能有界或線性約束。
線性規(guī)劃(LP)
函數(shù)solveLP(),可以方便地解決以下形式的LP:
最小化:
約束:
混合整數(shù)線性規(guī)劃 (MILP)
lpSolve(比linprog快得多,因為它是用C語言編碼的)可以解決線性混合整數(shù)問題(可能帶有一些整數(shù)約束的LP)。
solution
二次規(guī)劃 (QP)
可以方便地解決以下形式的QP
解決具有絕對值約束和目標函數(shù)中的絕對值的二次規(guī)劃。
二階錐規(guī)劃 (SOCP)
有幾個包:
ECOSolveR提供了一個與嵌入式COnic Solver(ECOS)的接口,這是一個著名的、高效的、穩(wěn)健的C語言庫,用于解決凸問題。
CLSOCP提供了一個用于解決SOCP問題的一步平滑牛頓方法的實現(xiàn)。
優(yōu)化基礎
我們已經看到了兩個包,它們是許多其他求解器的包。
用于凸問題、MIP和非凸問題
ROI包為處理R中的優(yōu)化問題提供了一個框架。它使用面向對象的方法來定義和解決R中的各種優(yōu)化任務,這些任務可以來自不同的問題類別(例如,線性、二次、非線性規(guī)劃問題)。
LP – 考慮 LP:
最大化:
約束:
MILP – 考慮先前的LP,并通過添加約束條件x2,x3∈Z使其成為一個MILP.
BLP – 考慮二元線性規(guī)劃 (BLP):
最小化:
約束:
SOCP – 考慮SOCP:
最大化:
約束:
并注意到SOC約束 可以寫成或 ,在代碼中實現(xiàn)為:。
SDP--考慮SDP:
最小化:
約束:
并注意SDP約束可以寫成(大小為3是因為在我們的問題中,矩陣為2×2,但vech()提取了3個獨立變量,因為矩陣是對稱的)。
NLP – 考慮非線性規(guī)劃(NLP)
最大化
約束
凸優(yōu)化
R為凸優(yōu)化提供了一種面向對象的建模語言。它允許用戶用自然的數(shù)學語法來制定凸優(yōu)化問題,而不是大多數(shù)求解器所要求的限制性標準形式。通過使用具有已知數(shù)學特性的函數(shù)庫,結合常數(shù)、變量和參數(shù)來指定目標和約束條件集。現(xiàn)在讓我們看看幾個例子。
最小二乘法 – 讓我們從一個簡單的LS例子開始:最小化
當然,我們可以使用R的基礎線性模型擬合函數(shù)lm()。
用CVXR來做
我們現(xiàn)在可以很容易地添加一個限制條件來解決非負的LS。
穩(wěn)健的Huber回歸 - 讓我們考慮穩(wěn)健回歸的簡單例子:
最小化
其中
彈性網正則化 - 我們現(xiàn)在要解決的問題是:最小化
稀疏逆協(xié)方差矩陣--考慮矩陣值的凸問題:最大化,條件是
協(xié)方差--考慮矩陣值的凸問題:在的條件下,最大化。
投資組合優(yōu)化--考慮馬科維茨投資組合設計:最大化,
結論
R語言中可用的求解器的數(shù)量很多。建議采取以下步驟。
如果是凸優(yōu)化問題,那么開始進行初步測試。
如果速度不夠快,使用ROI。
如果仍然需要更快的速度,那么如果問題屬于定義好的類別之一,則使用該類別專用的求解器(例如,對于LP,推薦使用lpSolve,對于QP則使用quadprog)。
然而,如果問題不屬于任何類別,那么就必須使用非線性優(yōu)化的一般求解器。在這個意義上,如果一個局部的解決方案就夠了,那么可以用許多求解器的包。如果需要全局求解器,那么軟件包gloptim是一個不錯的選擇,它是許多全局求解器的包。
最受歡迎的見解
1.用R語言模擬混合制排隊隨機服務排隊系統(tǒng)
2.R語言中使用排隊論預測等待時間
3.R語言中實現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型
4.R語言中的馬爾科夫機制轉換(Markov regime switching)模型
5.matlab貝葉斯隱馬爾可夫hmm模型
6.用R語言模擬混合制排隊隨機服務排隊系統(tǒng)
7.Python基于粒子群優(yōu)化的投資組合優(yōu)化
8.R語言馬爾可夫轉換模型研究交通傷亡人數(shù)事故預測
9.用機器學習識別不斷變化的股市狀況——隱馬爾可夫模型的應用
掃描二維碼推送至手機訪問。
版權聲明:本文由飛速云SEO網絡優(yōu)化推廣發(fā)布,如需轉載請注明出處。