какую информацию дает более высокая RMSE оценка, используя CV - PullRequest
1 голос
/ 15 января 2020

Я использовал перекрестную проверку на регрессоре повышения градиента.

Я вычислил RMSE для каждой оценки во время перекрестной проверки и нашел среднее значение, однако оно кажется слишком далеким от RMSE от использования train_test_split и сравнения (предсказано Фактически).

Насколько я понимаю, использование train_test_split невозможно переопределить, поскольку я не тестирую различные комбинации параметров на тестовом наборе.

Что представляет собой эта разница?

здесь мой код:

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3, random_state=0)

gbr_le = GradientBoostingRegressor(
    n_estimators  = 1000,
    learning_rate = 0.1,
    random_state  = 0
)

model = gbr_le.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f'{np.sqrt(metrics.mean_squared_error(y_test, y_pred))}')

>>> 4.881378370139346

и с использованием CV:

scores = cross_val_score(gbr_le, X, y, cv=7, scoring='neg_mean_squared_error')

statistics.mean([np.sqrt(-sc) for sc in scores])

>>> 9.381100515895412

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Что представляет собой эта разница?

Это означает, что вы счастливчик, разбивающий поезд / тест. Похоже, вы выбрали сплит, который чрезвычайно хорош для обучения и тестирования.

В этом случае я бы доверял вашему cross_val_score и попытался бы сделать больше сплитов и настроить gbr_le, чтобы получить лучший результат.

Чтобы понять, насколько нестабильны ваши данные, нам нужно знать, насколько велик ваш разброс ваших данных, как уже сказал @BICube. Каковы значения вашей целевой переменной? Что такое mean(y) и каково его отклонение?

0 голосов
/ 15 января 2020

Вам необходимо проверить стандартное отклонение для ваших показателей перекрестной проверки. Возможно, у вас среднее значение 9,3, а ваше стандартное отклонение довольно высокое. В этом сценарии это тот случай, когда ваши результаты cv передают правдивость частоты ошибок ваших данных, но случайно ваши тестовые данные привели к такому низкому количеству ошибок. Попробуйте изменить случайное состояние и посмотрите, будет ли ваш уровень ошибок по-прежнему около 4, или будет ли он меняться и будет иметь такое же распределение, как и оценки перекрестной проверки.

...