假设我们都给出了训练数据集{y?, x?},对i = 1, ..., n,其中y?既可以是-1或1并且x?例如可以是二维或三维点.
通常,当输入点可线性分离时,SVM模型可以如下定义
min 1/2*||w||²
w,b
Run Code Online (Sandbox Code Playgroud)
受限制(for i = 1, ..., n)
y?*(w*x? - b) >= 1
Run Code Online (Sandbox Code Playgroud)
这通常被称为硬边界 SVM模型,因此是一个约束最小化问题,其中未知数是w和b.我们也可以1/2在函数中省略最小化,因为它只是一个常数.
现在,关于Matlab 状态的文档quadprog
x = quadprog(H, f, A, b)最小化1/2*x'*H*x + f'*x受限制A*x ? b.A是双打矩阵,是双打b的向量.
我们可以使用quadprog函数实现硬边缘SVM模型,以获得权重向量w,如下所示
H 成为一个单位矩阵.f' 变成零点矩阵. …我正在编写一个 python 应用程序,该应用程序将 UDP 消息连续发送到具有其他主机和固定 IP 的预定义网络。我编写了 python 应用程序并对其进行了docker化。该应用程序在 docker 中运行良好,没有问题。
不幸的是,我无法将 UDP 消息从我的 docker 发送到主机,因此它们将被发送到网络中的其他主机。接收消息也是如此。现在我不知道如何设置我的 docker,所以它从网络中具有固定 IP 地址的主机接收 UDP 消息。
我尝试使用 docker 网络设置我的 docker 网络,--net host并将所有 UDP 消息从我的 docker 容器通过 localhost 发送到我的主机。这也很好用。我错过了可以将消息发送到“外部世界”的链接。我试图对我的问题进行描述。
我的问题:我必须如何为我的 docker/host 设置网络通信,以便它可以通过 UDP 从网络中的其他主机接收消息?谢谢
我是 R 和投资组合优化的新手。我正在尝试优化包含 7 种资产的投资组合,使得资产号 3 和 4 的最小权重均为 0.35,并且所有 7 种资产的总和等于 1。以下是我尝试过的代码:
library(quadprog)
dmat <- cov(dr) #dr stores the daily return of the 7 assets and is a timeSeries object
dvec <- colMeans(dr)
c1 <- c(0,0,1,0,0,0,0)
c2 <- c(0,0,0,1,0,0,0)
amat <- t(rbind(matrix(1, ncol = ncol(dmat)), c1, c2)) #used transpose because earlier when I didn't use the transpose I got an error saying amat and dvec are not compatible
bvec <- matrix(c(1,0.35, 0.35), nrow =3)
meq <- 1
sol <- …Run Code Online (Sandbox Code Playgroud) 我想知道实现Quadprog解决二次编程的正确方法是什么。
我有以下问题(从互联网上窃听),并且还在查看以下http://cbio.ensmp.fr/~thocking/mines-course/2011-04-01-svm/svm-qp.pdf
解决此问题的正确方法是什么?如果我遇到上述问题,本教程对解决问题会有用吗? http://www.r-bloggers.com/solving-quadratic-progams-with-rs-quadprog-package/
我最近拂去了一个脚本,它从quadprog包调用solve.QP(我目前有1.5-5版本).现在它生成错误"对象'.QP_qpgen2'未找到".我不明白为什么.
这个对象不是由我创建的,而是由quadprog中的solve.QP函数创建的.在Github Quadprog.R上有代码(第117行):
res1 <- .Fortran(.QP_qpgen2,
as.double(Dmat), dvec=as.double(dvec),
as.integer(n), as.integer(n),
sol=as.double(sol), lagr=as.double(lagr),
crval=as.double(crval),
as.double(Amat), as.double(bvec), as.integer(n),
as.integer(q), as.integer(meq),
iact=as.integer(iact), nact=as.integer(nact),
iter=as.integer(iter), work=as.double(work),
ierr=as.integer(factorized))
Run Code Online (Sandbox Code Playgroud)
可以从solve.QP 文档中获取的代码生成错误:
##
## Assume we want to minimize: -(0 5 0) %*% b + 1/2 b^T b
## under the constraints: A^T b >= b0
## with b0 = (-8,2,0)^T
## and (-4 2 0)
## A = (-3 1 -2)
## ( 0 0 1)
## we can use solve.QP as follows:
## …Run Code Online (Sandbox Code Playgroud) 我试图找到多个预测的权重,以给出尽可能接近已知目标的结果(例如均方误差)。
以下是一个简化示例,显示了四个数据点的三种不同类型的预测:
target = [1.0, 1.02, 1.01, 1.04] # all approx 1.0
forecasts = [
[0.9, 0.91, 0.92, 0.91], # all approx 0.9
[1.1, 1.11, 1.13, 1.11], # all approx 1.1
[1.21, 1.23, 1.21, 1.23] # all approx 1.2
]
Run Code Online (Sandbox Code Playgroud)
其中,一个预测值始终约为 0.9,一个预测值始终约为 1.1,一个预测值始终约为 1.2。
我想要一种自动找到[0.5, 0.5, 0.0]三个预测的权重的方法,因为对前两个预测进行平均并忽略第三个预测非常接近目标。理想情况下,权重应限制为非负数且总和为 1。
我想我需要使用某种形式的线性规划或二次规划来做到这一点。我已经安装了 Python fourprog 库,但我不确定如何将此问题转换为此类求解器所需的形式。有人能指出我正确的方向吗?
我真的很喜欢 R 但有时它真的让我头疼...
我有以下简单的二次最小化问题,可以在 Excel 中立即制定和解决(点击图片放大):
和
问题本身非常简单:我想(w1^2+w2^2)/2通过找到 的最佳组合来最小化w1,w2并b在所有约束下Y*(w1*X1+w2*X2+b) >= 1
我知道有quadprog解决这类问题的软件包,但我发现它太不直观了,以至于我无法正确指定问题:-( 我不想这么说,但 Excel 似乎更适合指定这样的优化问题:-(((
我的问题
如何正确地表述上述问题,以便它可以用 R 解决(无论是哪个包),并且程序会得到w1,w2和的正确值b(如上图所示)。请不要只发布链接,而是请提供有效的实际代码。如果您可以评论您的代码,那将是很棒的,这样您就可以清楚地知道您为什么要做您所做的事情。谢谢!
必要的数据在这里:
data <- matrix(c(2.947814,6.626878, 1,
2.530388,7.785050, 1,
3.566991,5.651046, 1,
3.156983,5.467077, 1,
2.582346,4.457777,-1,
2.155826,6.222343,-1,
3.273418,3.520687,-1),ncol=3,byrow=T)
colnames(data) <- c("X1","X2","y")
Run Code Online (Sandbox Code Playgroud)
附录
有些人对我提供代码(而不是简单的链接)的要求感到生气。我为此道歉并给出了我的理由,即到目前为止我在 SO 的答案中没有找到任何好的方法。更深层次的原因是这个问题是不寻常的,b因为它只在约束中而不是在目标函数中。所以我仍然认为这个问题非常适合 SO。
quadprog ×7
r ×4
optimization ×2
python ×2
constraints ×1
docker ×1
matlab ×1
portfolio ×1
svm ×1