Это может быть, возможно, глупый вопрос, но при создании модели с каретой и использовании чего-то вроде LOOCV
или (даже более точно) LGOCV
, какая польза от разделения данных на наборы обучающих и тестовых наборов, если это, по сути, шаг перекрестной проверки в любом случае?
Я прочитал некоторые из связанных вопросов, и они предположили, что некоторые из методов перекрестной проверки (например, то, что описано здесь на сайте каретки ) предназначены для выбора функций . Но в моем случае я использую randomForest
( method = "rf"
) и kernlab
( method = svmRadial
), которые не перечислены в группе, которая пытается очистить предикторы.
Итак, мой вопрос: если я использую что-то вроде этого cross_val <- trainControl(method = "LGOCV", p = 0.8)
, разве это не то же самое, что тренироваться на 80% моих данных, тестировать результирующую модель на оставшихся 20% и делать это снова и снова, чтобы понять, насколько хорошо модель работает?
Если да, то нужно ли разбивать мои данные на наборы поездов / тестов?
PS Я частично спрашиваю, поскольку я работаю над моделями на опытно сгенерированных прототипах DOE (подумайте о сложных вещах, где мы настраиваем входные данные, а затем используем методы тестирования для измерения различных атрибутов прототипа).
Поэтому у меня нет огромного набора данных с множеством перекрывающихся уровней предикторов для моделирования - мы часто проводим одно испытание в каждой точке интереса DOE, так как в этом случае генерация данных обходится дорого. Таким образом, я хотел бы использовать все данные, которые я могу для точной модели, но хотел проверить здесь, что я не упускаю что-то очевидное и создаю плохую модель, не разбивая вещи.
Изменить: В ответ на вопрос @ topepo, я моделирую физически измеренные атрибуты соединения на основе корректировки химических входов формулы. Я не могу обсуждать свое реальное применение, но я приведу пример, основанный на формулировке внутренней латексной краски. Я провожу спроектированные эксперименты, в которых мы смешиваем 4-5 химикатов, возможно, играем с% сухого остатка, и некоторое время, чтобы нагреть раствор полимера, чтобы отрегулировать степень полимеризации.
Затем мы можем измерить реологию, молекулярную массу, твердость лакокрасочного покрытия, водостойкость и т. Д.
У нас есть приличные реплики нескольких переменных, но мало истинных копий в том смысле, что каждый уровень DOE был точно таким же. Общий набор данных составляет ~ 80 наблюдений и, возможно, 4-5 точных повторов. Мы провели 15 различных тестов, и, возможно, 5-6 из них были проведены для каждого наблюдения. Некоторые ответы присутствуют для 25-50% данных.
Здесь мы хотели бы смоделировать влияние наших 7 предикторов на выходные свойства, а затем оптимизировать их для новых областей проектирования, которые, скорее всего, дадут желаемые свойства.
(Отсюда мой вопрос ЗДЕСЬ . Как только у меня будет обученная модель, было бы неплохо сделать «реверс» и ввести желаемые ответы, чтобы получить наилучшее предположение о возможных входных уровнях, чтобы попробовать следующий).
data_set1
, что я считаю шагом, выполненнымLGOCV
перекрестной проверкой? Из моего прочтения я предполагаю, что 1)caret
выполняет итерацию параметров настройки,data_set1
а затем 2) сохраняет эти параметры фиксированными и 3) создает «подмодель», используя параметры из # 1 для каждойp = 0.8
выборки,data_set1
и проверяет прогнозы на оставшихся 0,2, чтобы оценить точность , Это разумное резюме?Ответы:
Мои общие мысли:
Поэтому, когда вы оцениваете разные модели, вы можете настроить их, попробовать разные виды предварительной обработки и т. Д., Пока не найдете то, что вы считаете хорошей моделью. Повторная выборка может помочь вам в правильном направлении во время этого процесса.
Тем не менее, существует вероятность переопределения, и на шансы на это большое влияние оказывает количество данных (и предикторов). Если у вас есть немного данных, есть несколько способов подумать об этом:
Я попадаю во второй лагерь, но первый вовсе не ошибается.
Если у вас есть тонна данных, то это не имеет большого значения (если вы не имеете небольшую частоту событий).
Для вас:
У вас есть DOE. Тип дизайна поможет ответить на вопрос. Вы пытаетесь интерполировать между проектными точками или прогнозировать проектные точки, которые еще не были протестированы?
У вас есть одна копия. Я упал, как случайный лес, ударяя гвоздём кувалдой, и это может привести к перегонке. Я бы попробовал что-то более гладкое, например, SVM или (вздох) нейронную сеть.
Максимум
источник
method = "svmRadial"
. Я надеюсь оценить некоторые другие, в том числеmethod = neuralnet
, хотя в прошлых попытках я обнаружил, что нейронная сеть очень чувствительна к `set.seed (). Короче говоря, мы пытаемся: 1) лучше понять взаимосвязь между входами / множественными ответами и 2) сделать лучшие предположения в наиболее вероятной области проектирования, чтобы получить желаемые свойства, чтобы мы могли запустить новые, более сфокусированные DOE против более типичных экспансивный / дробовик подход с точки зрения входных мин / макс уровней, чтобы попробовать.