Scikit learn 如何在线性回归模型中定义保秩分数函数?

Scikit learn 如何在线性回归模型中定义保秩分数函数?,scikit-learn,scikits,Scikit Learn,Scikits,问题就这么简单 我想根据我的分数函数训练一个模型,而不是基于LinearRegression使用的最小二乘距离 我发现唯一可以声明我自己的分数函数的地方是在模型评估算法中 我想使用的score函数是一个根据两个数据集的单调程度(一个测试,一个训练)返回分数的函数 你的损失/得分函数是什么?您是否正在寻找某种自动微分例程,该例程提供梯度(用于批量或随机梯度上升)以及可能的Hessian(用于拟牛顿方法) 如果您的score函数不是传统函数,则库不太可能接受它,因为scikits.learn不是一个

问题就这么简单

我想根据我的分数函数训练一个模型,而不是基于
LinearRegression
使用的最小二乘距离

我发现唯一可以声明我自己的分数函数的地方是在模型评估算法中

我想使用的score函数是一个根据两个数据集的单调程度(一个测试,一个训练)返回分数的函数


你的损失/得分函数是什么?您是否正在寻找某种自动微分例程,该例程提供梯度(用于批量或随机梯度上升)以及可能的Hessian(用于拟牛顿方法)

如果您的score函数不是传统函数,则库不太可能接受它,因为
scikits.learn
不是一个优化库,而是一个通用推理和机器学习算法的包装器

如果你的成本函数有众所周知的梯度函数和黑森函数,那么可能已经有一个内置的例程来拟合这种格式的模型。但我们需要知道成本函数才能确定

更新后添加

您描述的问题不适用于您所称的“线性回归”(这是一种学习应用于特征输入以预测相关输出的权重的方法)。回归中隐含的目标是学习函数形式。在存在噪声的情况下,如果您想同时学习函数形式,并确保函数形式保留数据集的秩顺序,则需要非常严格和不自然的假设

您似乎只对基于所描述的代价函数来保持数据的秩顺序的问题感兴趣

这就是所谓的问题。如果你在谷歌上搜索,你会看到一些结果,这可能会对你有所帮助


不过,我不认为有一种简单的方法可以将成本函数插入到现有的方法中。我也不确定你的成本函数是否真的是建模噪声秩序保持的最佳方法。

如果你想在单调输出与一维输入的约束下建立回归模型,你可以使用类


如果您真的想为自定义目标函数优化线性模型(或非线性模型),可以使用通用优化器,如
scipy.optimize
,或例如。

我在主题中添加了分数函数。我需要创建一个模型,正确预测数据的单调性,而不是实际值。我对答案进行了一点扩展。我喜欢你的答案。虽然这不是我最初问的问题,但它回答了我的具体问题:)这似乎是在问问题。
def monotony_score_signed(y_true, y_pred):

    assert y_true.ndim == 1
    assert y_true.shape == y_pred.shape
    true_order = y_true.argsort(0);

    pred_sign = np.sign(np.diff(y_pred[true_order]))
    true_sign = np.sign(np.diff(y_true[true_order]))
    accuracy = float(np.count_nonzero(pred_sign == true_sign)/float(pred_sign.shape[0] - 1))
    return accuracy