Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
目标函数的python最小二乘回归修正_Python_Regression_Linear Regression_Cvxopt_Cvxpy - Fatal编程技术网

目标函数的python最小二乘回归修正

目标函数的python最小二乘回归修正,python,regression,linear-regression,cvxopt,cvxpy,Python,Regression,Linear Regression,Cvxopt,Cvxpy,最小二乘回归定义为残差平方和的最小化,例如 Minimize(sum_squares(X * beta - y)) 然而,我想提出一个轻微的修改,这样我们仍然可以最小化以下内容 Minimize(sum_modified_squares(X*beta - y)) where sum_modified_squares(X*beta - y) = 0 if sign(X*beta) == sign(y) else sum_modified_squares(X*beta - y) = sum_sq

最小二乘回归定义为残差平方和的最小化,例如

Minimize(sum_squares(X * beta - y))
然而,我想提出一个轻微的修改,这样我们仍然可以最小化以下内容

Minimize(sum_modified_squares(X*beta - y))

where sum_modified_squares(X*beta - y) = 0 if sign(X*beta) == sign(y)
else sum_modified_squares(X*beta - y) = sum_squares(X*beta - y)

基本上,我只想在预测符号不等于实际
y
符号时进行惩罚。有关于这方面的文献吗?我试图在cvxpy中实现,但不确定如何实现

我在前面的问题中告诉过你,这在cvxpy中是不可能的,因为它不是凸的,因此无法公式化。唯一有效的方法是使用混合整数规划,这在cvxpy中也是可能的,但我提到了后果。为什么你的问题中没有这方面的内容?如果您没有Gurobi、CPLEX或Mosek的许可证,请不要在cvxpy中执行此操作(或者使用需要一些额外设置步骤的cbc接口)!抱歉,我以为我已经在统计子论坛上发布了这篇文章-你认为在cvxpy中如何使用混合整数/布尔编程?我有mosek许可证,所以我不反对走这条路,我只是不太确定混合整数规划如何解决指示变量(例如,如果某个表达式>=0,则b_0=1)、二进制变量乘积线性化的问题(例如,b_0==1^b_1==1相当于b_0*b_1;可能不需要编辑,因为移位和上的简单指标约束也起作用)和一些定制的大M表达式来构造含义。阅读任何整数编程指南(并搜索指标变量等关键字)。这将是一些工作,但并不难。如果解决起来很好,这是另一个问题。(我认为mosek的界面做了一些工作;但在过去的MIP使用是不可能的)。坦率地说,这种优化有点奇怪,因为它不仅是非凸的,甚至不是连续的。想象一个beta,对于某些i,X[i,:]*beta接近于零,但离y[i]很远,然后beta的一个小变化导致X[i,:]*beta翻转符号将决定无惩罚和大惩罚之间的区别。我知道这并不能解决你的问题,但我觉得这是导致问题“无法解决”的根本原因,至少从数字上来说是如此。