标签: convex-optimization

为线性SVM /逻辑回归目标函数添加仿射项

我目前正在解决一个问题,我必须解决L2正则逻辑回归或L2-reg线性SVM问题,其中我有一个附加的仿射项.

所以我的问题就是:

min_ w {C*sum_i max(1-w*x_i*y_i,0) + 0.5*||w||^2_2 + w * v }
Run Code Online (Sandbox Code Playgroud)

其中v是常数向量.

当然这是一个凸起的问题,可以用通常的方法解决,但我必须解决这种类型的许多大问题,所以我非常想使用像liblinear这样的标准库.

我的问题是,有没有办法转换数据x,标签y或加权因子C(可能为每个实例转换为不同的C_i),这样这个问题将等同于标准的铰链损耗SVM或逻辑回归问题?

classification machine-learning mathematical-optimization convex-optimization svm

5
推荐指数
1
解决办法
308
查看次数

使用python中的scikit包在SVM中获得负的alpha值

我在python中使用scikit包实现SVM.我在解释plot_separating_hyperplane.py中的"alpha i"值时遇到了困难

import numpy as np
import pylab as pl
from sklearn import svm

# we create 40 separable points
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
Y = [0] * 20 + [1] * 20

# fit the model
clf = svm.SVC(kernel='linear')
clf.fit(X, Y)
print clf.support_vectors_
#support_vectors_ prints the support vectors
print clf.dual_coef_
#dual_coef_ gives us the "alpha i, y i" value for all support vectors
Run Code Online (Sandbox Code Playgroud)

样本输出

Dual_coef_ = [[ 0.04825885 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning convex-optimization svm scikit-learn

5
推荐指数
1
解决办法
1654
查看次数

最小化L1-Regularized系统,收敛于非最小位置?

这是我的第一篇文章stackoverflow,所以如果这不是正确的区域我道歉.我正致力于最小化L1规范化系统.

这周末是我第一次进入优化,我有一个基本的线性系统Y = X*B,X是一个n×p矩阵,B是模型系数的p-by-1矢量,Y是n-by -1输出向量.

我试图找到模型系数,我已经实现了梯度下降和坐标下降算法,以最小化L1正则化系统.为了找到我的步长我正在使用回溯算法,我通过查看渐变的范数-2来终止算法,并且如果它'足够接近'到零则终止(现在我使用0.001).

我试图最小化的函数是以下(0.5)*(范数((Y - X*B),2)^ 2)+ lambda*范数(B,1).(注意:按范数(Y,2),我指的是矢量Y的范数-2值.我的X矩阵是150乘5并且不稀疏.

如果我将正则化参数lambda设置为零,我应该收敛于最小二乘解,我可以验证我的算法都能很好地并且相当快地完成.

如果我开始增加lambda我的模型系数都倾向于零,这就是我所期望的,我的算法永远不会终止,因为渐变的范数-2总是正数.例如,lambda为1000将给出10 ^( - 19)范围内的系数,但我的渐变的norm2为~1.5,这是经过几千次迭代后,而我的渐变值全部收敛到0到1之间的某个值范围,我的步长变得非常小(10 ^( - 37)范围).如果我让算法运行的时间更长,情况没有改善,它似乎已经被卡住了.

我的梯度和坐标下降算法都收敛于同一点,并为终止条件提供相同的norm2(梯度)数.它们也很适合lambda为0.如果我使用一个非常小的lambda(比如0.001)我得到收敛,一个0.1的lambda看起来如果我跑了一两个小时会收敛,一个lambda任何更大的和收敛率很小,没用.

我有几个问题,我认为可能与问题有关?

在计算梯度时,我使用有限差分法(f(x + h)-f(xh))/(2h)),h为10 ^( - 5).关于这个h值的任何想法?

另一个想法是,在这些非常微小的台阶上,它在几乎垂直于最小值的方向上来回移动,使收敛速度变得如此之慢,以至于无用.

我的最后一个想法是,如果收敛速度极慢然后终止,也许我应该使用不同的终止方法,可能会考虑收敛速度.这是一种常见的终止方法吗?

optimization matlab machine-learning convex-optimization minimization

5
推荐指数
1
解决办法
937
查看次数

高效的免费/开源SOCP(二阶锥编程)求解器

我正在寻找有关评估速度的二阶锥规划求解器的推荐(或比较)。求解器必须免费供非营利使用或开源。

我对环境相当开放:独立的解决方案,库,Matlab,Python,R等都是可以接受的。

我的问题在约束方面有很大的稀疏性,我相信好的求解者可以利用这些约束来加快计算速度。

convex-optimization

5
推荐指数
2
解决办法
3161
查看次数

在复杂系数的python中使用cvxopt进行凸优化

我正在尝试解决一个凸优化问题,其中系数可能很复杂。cvxopt QP中的本机实现似乎不支持该功能。我总是收到以下错误:

TypeError:“ q”必须是具有一列的“ d”矩阵

这是示例代码。

Q = 2*cvxopt.matrix([ [2, .5], [.5, 1] ])
p = cvxopt.matrix([(1.0+1.0j), (1.0+2.0j)])
G = cvxopt.matrix([[-1.0,0.0],[0.0,-1.0]])
h = cvxopt.matrix([0.0,0.0])
A = cvxopt.matrix([1.0, 1.0], (1,2))
b = cvxopt.matrix(1.0)
sol=cvxopt.solvers.qp(Q, p, G, h, A, b)
Run Code Online (Sandbox Code Playgroud)

是否可以解决此问题?谢谢

python convex-optimization cvxopt

5
推荐指数
1
解决办法
158
查看次数

Julia - 复值变量的优化

我正在尝试解决一个简单的优化问题,我们想要一个复数值的 Hermitan 矩阵,因为它是可变的(主题是量子力学)

using Convex  #load the optimization solvers
using SCS

# define pauli-y+ projector
# by construction a positive operator valued hermitian matrix
y_plus = [1,im]/sqrt(2)
My0 = y_plus*y_plus'

# define the variable; a 2x2 density matrix
rho = Variable(2, 2)
problem.constraints += [rho == rho']     # hermitian
problem.constraints += [trace(rho) == 1] # unit trace
problem.constraints += [rho in :SDP]     # positive definite


# define the objective
problem = maximize(trace(rho*My0))

# solve
solve!(problem,SCSSolver(verbose=false))

problem.optval
Run Code Online (Sandbox Code Playgroud)

问题是,Julia/JuMP/Convex.jl 都会报错

maximize(trace(rho*My0))
Run Code Online (Sandbox Code Playgroud)

由于跟踪 …

mathematical-optimization convex-optimization julia

5
推荐指数
1
解决办法
204
查看次数

如何对 CVXPY 中两列的内积创建不等式约束?

假设我的约束是矩阵变量的第一列和第三列的乘积大于一。如何在 CVXPY 中实施?例子:

w = Variable(4,3) 
Run Code Online (Sandbox Code Playgroud)

在 Matlab 中,我的约束是:

w(:,1)'*w(:,3)>1
Run Code Online (Sandbox Code Playgroud)

我如何在 CVXPY 中实现它?或者我们可以在 CVXPY 下执行点积吗?numpy.dotCVXPY 不支持。

python mathematical-optimization convex-optimization python-2.7 cvxpy

5
推荐指数
1
解决办法
3816
查看次数

在 CVXPY 中阻止 LMI

我想将受 LMI 约束的优化问题从 Matlab 转换为 Python。在阅读 CVXPY 文档时,我发现我可以通过创建矩阵变量并添加相应约束来定义 LMI 约束问题。但是,我需要使用以下块 LMI,而不是通过简单的 LMI 来约束问题:

LMI

其中P,L是矩阵变量,gamma是标量。其他符号是动态系统的状态空间矩阵。

是否可以在 CVXPY 中使用这种 LMI 作为约束?如果没有,是否还有其他工具可以让我在 Python 中解决这个问题?

python matlab convex-optimization cvxpy

5
推荐指数
1
解决办法
958
查看次数

迷你批量梯度体面和梯度体面之间是否存在任何固定关系

对于凸优化,就像逻辑回归一样.
例如,我有100个训练样本.在mini batch gradient decent我设置批量大小等于10.
所以经过10次mini batch gradient decent更新.我可以一次gradient decent更新获得相同的结果吗?

对于非凸优化,如神经网络.
我知道mini batch gradient decent有时可以避免一些局部的最佳.但他们之间是否有任何固定的关系.

machine-learning mathematical-optimization convex-optimization

4
推荐指数
1
解决办法
1129
查看次数

Logistic回归中成本函数的局部和全局最小值

在对逻辑回归公式的推导中,我误解了最小值背后的想法。

想法是尽可能增加假设(即,正确的预测概率尽可能接近1),这反过来又要求尽可能降低成本函数$ J(\ theta)$。

现在,我被告知要使所有这些工作正常进行,成本函数必须是凸的。我对凸性的理解要求没有最大值,因此只能有一个最小值,即全局最小值。真的是这样吗?如果不是,请说明原因。另外,如果不是这种情况,则意味着成本函数中可能存在多个最小值,这意味着多组参数会产生越来越高的概率。这可能吗?还是可以确定返回的参数引用了全局最小值,因此是最高的概率/预测?

machine-learning convex-optimization convex logistic-regression

4
推荐指数
1
解决办法
3982
查看次数