В чем разница между этими двумя способами определения данных обучения / тестирования для GPR склеарн? - PullRequest
0 голосов
/ 07 апреля 2020

Это своего рода продолжение до моего предыдущего вопроса об оценке моего регрессора гауссовских процессов scikit. Я очень плохо знаком с GPR и думаю, что могу допустить методологическую ошибку в том, как я использую данные обучения и тестирования.

По существу, мне интересно, в чем разница между указанием данных тренировки путем разделения ввода между данными теста и тренировкой, например так:

X = np.atleast_2d(some_data).T
Y = np.atleast_2d(other_data).T

X_train, X_test, y_train, y_test = train_test_split(X, Y,
                                                    test_size = 0.33,
                                                    random_state = 0)

kernel = ConstantKernel() + Matern() + WhiteKernel(noise_level=1)
gp = gaussian_process.GaussianProcessRegressor(
                                alpha=1e-10,
                                copy_X_train=True,
                                kernel = kernel,
                                n_restarts_optimizer=10,
                                normalize_y=False,
                                random_state=None)
gp.fit(X_train, y_train)
score = gp.score(X_test, y_test)
print(score)

x_pred = np.atleast_2d(np.linspace(0,10,1000)).T
y_pred, sigma = gp.predict(x_pred, return_std=True)

против использования полного набора данных для обучения, подобного этому ,

X = np.atleast_2d(some_data).T
Y = np.atleast_2d(other_data).T

kernel = ConstantKernel() + Matern() + WhiteKernel(noise_level=1)
gp = gaussian_process.GaussianProcessRegressor(
                                alpha=1e-10,
                                copy_X_train=True,
                                kernel = kernel,
                                n_restarts_optimizer=10,
                                normalize_y=False,
                                random_state=None)
gp.fit(X, Y)
score = gp.score(X, Y)
print(score)

x_pred = np.atleast_2d(np.linspace(0,10,1000)).T
y_pred, sigma = gp.predict(x_pred, return_std=True)

Не приведет ли один из этих вариантов к неверным прогнозам?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы отделяете тренировочные данные от тестовых данных, чтобы оценить вашу модель, потому что в противном случае вы даже не представляете, переусердствуете ли вы с данными. Например, просто поместите данные в Excel и нанесите их плавной линией. Технически, эта сплайн-функция из Excel является идеальной моделью, но бесполезной для прогнозирования новых значений.

В вашем примере ваши прогнозы находятся в едином пространстве, чтобы вы могли визуализировать то, что ваша модель считает базовой функцией. Но это было бы бесполезно для понимания того, насколько общая модель. Иногда вы можете получить очень высокую точность (> 95%) данных обучения и меньше шансов на тестирование данных, что означает, что модель более подходящая.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...