如何重现带有modified_huber损失的SGDClassifier?

问题描述 投票:0回答:1

我有一个这样定义的模型:

rng = 42
model = Pipeline([
    ('scaler', RobustScaler()),
    ('feature', SelectKBest(k=42)),
    ('model', SGDClassifier(loss='modified_huber', shuffle=True, random_state=rng))
])

当我使用完全相同的输入在两个单独的程序执行(一个是临时的,另一个是 cron 作业)中进行训练和预测时,我会得到不同的模型权重,从而得到预测结果。

我注意到“铰链”损失是唯一具有完全相同权重的可重现模型。其他损失函数阻止它们被重现的原因是什么?

我已经检查并仔细检查输入是否相同,并使用其他损失函数进行验证。

machine-learning scikit-learn statistics loss
1个回答
0
投票

好的,我已经找到了。 X 数据集之间存在微小差异。 IE。我有 12.799 与 12.8 之类的值,但只有少数 (<10). I didn't think this would have such a large domino effect on the resulting models.

将所有数据四舍五入到小数点后两位会产生完全相同的模型。

© www.soinside.com 2019 - 2024. All rights reserved.