我想通过L1正则化最小二乘法解决以下拉索优化功能。我为我的项目使用python。L1正则化最小二乘法
α'* = arg min (||y’–B’α’||_2^2 + λ||α’||_1)
这里α'*
是一个载体。尺寸B’=(m+p)*p
,y’=(m+p)*1
,α‘=p*1
我无法解决这个方程。请任何人解释eqn
和解决这个公式的方法L1
正则化最小二乘法。
我想通过L1正则化最小二乘法解决以下拉索优化功能。我为我的项目使用python。L1正则化最小二乘法
α'* = arg min (||y’–B’α’||_2^2 + λ||α’||_1)
这里α'*
是一个载体。尺寸B’=(m+p)*p
,y’=(m+p)*1
,α‘=p*1
我无法解决这个方程。请任何人解释eqn
和解决这个公式的方法L1
正则化最小二乘法。
这是可以与ODL解决的典型问题:
import odl
import numpy as np
m = 2
p = 100
lam = 0.00001
# Define B
B = odl.MatrixOperator(np.random.rand(p, m + p))
alpha_true = np.random.rand(m + p)
y = B(alpha_true)
# Define functionals
l2dist = odl.solvers.L2NormSquared(B.range) * (B - y)
l1 = lam * odl.solvers.L1Norm(B.domain)
func = l2dist + l1
# Initial point
alpha = B.domain.zero()
# Solve using steepest descent
odl.solvers.steepest_descent(func, alpha,
line_search=0.0003, maxiter=10000,
callback=lambda x: print(func(x)))
如果你想有一个更快的解决方案,你应该看看近端的方法(在ODL也可)。一个这样的例子是FISTA方法:
import odl
import numpy as np
m = 2
p = 100
lam = 0.00001
# Define B
B = odl.MatrixOperator(np.random.rand(p, m + p))
alpha_true = np.random.rand(m + p)
y = B(alpha_true)
# Define functionals
l2dist = odl.solvers.L2NormSquared(B.range) * (B - y)
l1 = lam * odl.solvers.L1Norm(B.domain)
func = l2dist + l1
# Use FISTA
alpha = B.domain.zero()
odl.solvers.accelerated_proximal_gradient(alpha, l1, l2dist,
gamma=0.0001, niter=1000,
callback=lambda x: print(func(x)))
是询问编程实现的问题还是您在寻找数学解释? –
我要求实施。我正在编写一个程序,用于使用局部性约束备用表示方法来输入给定数据集中的缺失值。作为这种方法的一部分,我需要通过求解上面的公式来找到系数向量。但我无法得到如何解决上述公式。 – dinesh12
您可以尝试使用sympy:http://www.scipy-lectures.org/advanced/sympy.html 虽然我不知道它可以处理 –