ano*_*428 5 python optimization numpy matrix scipy
我很擅长scipy并在python中进行数据分析.我试图解决以下正则化优化问题,不幸的是我从scipy文档中无法理解.我期待使用scipy.optimize解决以下约束优化问题
这是我希望最小化的功能:

这里A是m X n矩阵,最小化中的第一项是残差平方和,第二项是稀疏n X n矩阵W的矩阵frobenius(L2范数),第三项是L1范数相同的矩阵W.
在函数A是m×n矩阵中,最小化中的第一项是残差平方和,第二项是稀疏n×n矩阵W的矩阵frobenius(L2范数),第三项是相同矩阵W的L1范数
我想知道如何根据以下约束最小化此功能:
wj >= 0 wj,j = 0
我想使用坐标下降(或scipy.optimize提供的任何其他方法)来解决上述问题.我想如何实现这一目标,因为我不知道如何采用frobenius规范或如何调整参数beta和lambda或者scipy.optimize是否会调整并为我返回参数.关于这些问题的任何帮助将不胜感激.
提前致谢!
m和n有多大?
以下是如何使用fmin的基本示例:
from scipy import optimize
import numpy as np
m = 5
n = 3
a = np.random.rand(m, n)
idx = np.arange(n)
def func(w, beta, lam):
w = w.reshape(n, n)
w2 = np.abs(w)
w2[idx, idx] = 0
return 0.5*((a - np.dot(a, w2))**2).sum() + lam*w2.sum() + 0.5*beta*(w2**2).sum()
w = optimize.fmin(func, np.random.rand(n*n), args=(0.1, 0.2))
w = w.reshape(n, n)
w[idx, idx] = 0
w = np.abs(w)
print w
Run Code Online (Sandbox Code Playgroud)
如果你想使用坐标下降,你可以通过theano实现它.
http://deeplearning.net/software/theano/