线性规划与迭代加权最小二乘法的运行时间

问题描述

我试图进行最小绝对偏差回归(L1回归)。我通过设计一个线性程序并使用CVXOPT(在Python中)解决了这一问题。特征数量包括常数)为13,样本数量约为100K。花了许多小时才能完成。 然后我意识到可以使用statsmodels' QuantReg运行q=0.5。花了几秒钟。 我读到他们使用迭代加权最小二乘法(IRLS)。 为此目的,IRLS是否比线性编程要快,或者线性优化问题的表达方式不同,并且在更好的求解器(如Gurobi)上使用,会大大减少线性程序的运行时间吗? 我问的原因是因为我想尝试一个损失函数,该函数涉及两个具有不同权重的绝对函数的总和。我相信我也可以使用IRLS来解决该问题,但是我不确定,我对线性编程更满意。

我用于线性程序的公式如下:

enter image description here

CVXOPT的结果代码如下:

def l1_fit(x,y):
'''

:param x: feature matrix
:param y: label vector
:return: LAD coefficients

The problem I construct is:
    min c'*(v|A)
    subject to:
        (-I|x)*(v|A)<=y
        (-I|-x)*(v|A)<=-y
'''
c = matrix(np.concatenate((np.ones(y.shape[0]),np.zeros(x.shape[1]))).astype(float).tolist(),(y.shape[0]+x.shape[1],1),'d')
G = scipy_sparse_to_spmatrix(np.transpose(hstack((vstack((-identity(y.shape[0]),np.transpose(x))),vstack((-identity(y.shape[0]),np.transpose(-x))))).astype(float)))
h = matrix(np.concatenate((y,-y)).astype(float).tolist(),(2*y.shape[0],'d')
sol = lp(c,G,h)
return sol[1][y.shape[0]:]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)