我正在 sklearn 中运行线性回归
model = LinearRegression()
model.fit(x_poly, y_true)
而不是使用标准损失函数(我认为是MSE)来拟合我的线性回归。我想用对称定正矩阵 A 定义距离度量,即范数 ||.||_{A^{-1}}。有没有办法定义这个参数?
不幸的是,scikit-learn 中的 LinearRegression 本身不支持使用自定义损失函数。 LinearRegression 类默认使用普通最小二乘法,它可以最小化标准均方误差。但是,您可以通过使用 scipy.optimize 等优化库实现自定义损失函数来实现您的目标。 scipy.optimize 中的最小化函数用于解决优化问题。为了合并截距,我们将一列 1 附加到 X。此方法使您可以完全自由地指定您喜欢的任何损失函数,只要它是可微分的。如果您的 A 矩阵非常大,请注意与其逆计算相关的计算成本。这与 scikit-learn 的 LinearRegression 实现无关,因为 scikit-learn 不允许直接更改损失。如果您想在管道中使用它或与 GridSearchCV 一起使用,您可以通过从 scikit-learn 子类化 BaseEstimator 和 RegressorMixin 将上面的逻辑包装到自定义估计器中。