Я не верю, что вы можете изменить функцию потерь напрямую, поскольку для нее нет параметра в конструкции классификатора, а в документации явно указано, что она оптимизируется с использованием функции потери журнала.Если вы хотите быть немного гибкими, вы можете получить искомый эффект просто путем преобразования значений y
перед тренировкой, а затем использовать обратное преобразование для восстановления предсказанных y
s.после тестирования.
Например, отображение y_prime = transform(y)
и y = inverse_transform(y_prime)
на каждое значение, где вы определяете transform
и inverse_transform
как:
def transform(y):
return y ** 2
def inverse_transform(y_prime):
return math.sqrt(y_prime)
, приведет к большим значениям y
чтобы иметь больше влияния в обученииОчевидно, вы можете поэкспериментировать с различными преобразованиями, чтобы увидеть, что лучше всего подходит для вашего варианта использования.Ключ просто в том, чтобы убедиться, что transform
является суперлинейным.
Перед тренировкой вам необходимо выполнить:
y_train = map(transform, y_train)
И после вызова predict
:
y_predict = model.predict(x)
y_predict = map(inverse_transform, y_predict)