Является ли оценка от transformedtargetрегрессора scikit-learn правильной?

#python #machine-learning #scikit-learn #transformer

Вопрос:

Я сделал короткую записную книжку Jupyter, чтобы ответить на мой вопрос о преобразованном регуляторе.
Я хотел поместить трансформатор внутри трубопровода, чтобы поиграть с сеткой параметров, но результаты не совпали.

 ...
model = linear_model.LinearRegression()
lg_tr = preprocessing.FunctionTransformer(func=np.log, inverse_func=np.exp, check_inverse=True)
y_log = lg_tr.transform(y)
score_0 = model.fit(X, y_log).score(X, y_log)
 
 ...
model = compose.TransformedTargetRegressor(func=np.log, inverse_func=np.exp, check_inverse=True,
    regressor=linear_model.LinearRegression())
score_1 = model.fit(X, y).score(X, y)
 

score_0 Значение правильное. Почему тот, из score_1 «не»?
У меня нет проблем с прогнозом, который работает нормально, только оценка.
Я что-то пропустил?
Спасибо =)

Комментарии:

1. Я думаю, что оценка 1-это правильный способ вычисления производительности в диапазоне фактических целевых значений

Ответ №1:

Как правило, вас должно интересовать, насколько хорошо работает ваша модель (или результаты) при прогнозировании фактических значений в их исходном диапазоне или масштабе. Однако это то, с чем вы измеряете, score_1 а не с score_0 чем .

score_0 представляет производительность модели, когда целевая переменная находится в логарифмическом масштабе, что в большинстве случаев не очень полезно.

score_1 однако использует score метод TransformedTargetRegressor , который гарантирует, что целевая переменная находится в исходном масштабе, прежде чем вычислять какие-либо показатели производительности. Таким образом, суждения должны приниматься на основе score_1 .

Комментарии:

1. Спасибо, в этом есть смысл. Я был слишком сосредоточен на подгонке данных и забыл их значение… Хорошего дня =)