在SciPy中实现最小化

时间:2018-03-01 12:38:50

标签: optimization scipy regression linear-regression minimization

我正在尝试从https://arxiv.org/abs/1411.0347第12页实施'迭代hessian Sketch'算法。但是,我正在努力完成第二步,这需要最小化矩阵向量函数。

导入和基本数据生成功能

S

为了最小化矩阵向量函数,我尝试实现一个函数来计算我想要最小化的量:

def grad_f2min(x, data, target, offset):
A = data
y = target
S = np.eye(A.shape[0])
xt = np.ravel(offset)
S_A = S@A
grad = (1/S.shape[0])*S_A.T@S_A@(x-xt) - A.T@(y-A@xt)

return grad

    x0 = np.zeros((X.shape[0],1))
xt = np.zeros((2,1))
x_new = np.zeros((2,1))
for it in range(1):
    result = minimize(f2min, x0=xt,args=(X,y,x_new),
         method='CG', jac=False )
    print(result)
    x_new = result.x

我最终希望用一些可以减少问题维数的随机矩阵替换 fun: 0.0 jac: array([ 0.00745058, 0.00774882]) message: 'Desired error not necessarily achieved due to precision loss.' nfev: 416 nit: 0 njev: 101 status: 2 success: False x: array([ 0., 0.]) ,但是,首先我需要确信这种优化方法是有效的。

filter

我认为这个循环根本不正确,因为在进入下一步之前至少应该有一些局部收敛。输出是:

ind_list[:][1]

有没有人知道:

(1)为什么我没有在每一步实现收敛

(2)我能以更好的方式实施第2步吗?

0 个答案:

没有答案