Как построить окончательную модель и настроить порог вероятности после вложенной перекрестной проверки?

17

Во-первых, извинения за размещение вопроса, который уже подробно обсуждался здесь , здесь , здесь , здесь , здесьи для разогрева старой темы. Я знаю, что @DikranMarsupial подробно писал об этой теме в постах и ​​журнальных статьях, но я все еще в замешательстве, и, судя по количеству подобных постов, это все еще трудно понять другим. Я должен также заявить, что я получил противоречие по этой теме, что усугубило мою путаницу. Вы также должны знать, что я изначально физик, а не статистик, поэтому мой опыт в этой области несколько ограничен. Я пишу журнальную статью, в которой я хочу использовать вложенное резюме, чтобы оценить производительность, которую я могу ожидать от моей окончательной модели. В моем домене это первое. (Мы почти никогда не использовать любойформа надежного резюме в моей области, но весело выкачивать документы с результатами исследований с использованием нейронных сетей и расширенных деревьев решений!) Поэтому очень важно, чтобы у меня было очень тщательное и ясное понимание, чтобы я не облажался и не размножался ошибочная процедура для моего сообщества, которую можно годами отучить! Благодарность! На вопрос ...

Как построить окончательную модель после вложенной перекрестной проверки?

Я тренирую простую модель glmnet с регуляризацией L1 и L2. Это быстро, просто и понятно. Я выполняю центрирование объектов, масштабирование и преобразования Бокса-Кокса, чтобы распределения объектов были средне-центрированными, стандартизованными и в некоторой степени похожими на гауссовские. Я выполняю этот шаг в рамках перекрестной проверки, чтобы предотвратить утечку информации. Чисто потому, что мое оборудование невероятно медленное и у меня нет доступа к большей нагрузке на процессор, я также выполняю быстрый выбор функций на основе фильтров в CV после предварительной обработки функций. Я использую случайный поиск по сетке, чтобы выбрать альфа и лямбда гиперпараметры. Я понимаю, что не долженЦикл CV, чтобы получить эту оценку. Я понимаю, что внутренний цикл CV используется для выбора модели (в данном случае оптимальных гиперпараметров) и что внешний цикл используется для оценки модели , т. Е. Внутренний и внешний CV служат двум различным целям, которые часто ошибочно объединяются. (Как у меня дела до сих пор?)

Теперь ссылки, которые я опубликовал, предполагают, что «способ думать о перекрестной проверке - это оценка производительности, полученной с помощью метода построения модели, а не оценки производительности модели». Учитывая это, как я должен интерпретировать результаты вложенной процедуры CV?

Похоже, что прочитанный мной совет указывает на следующее - пожалуйста, исправьте меня, если это не так: внутреннее резюме является частью механизма, который позволяет мне выбирать оптимальные альфа и лямбда гиперпараметры моей модели glmnet. Внешний CV сообщает оценку, которую я могу ожидать получить от окончательной модели, если я применю процедуру точно так, как она используется во внутреннем CV, включая настройку гиперпараметра и использование всего набора данных для построения окончательной модели. То есть настройка гиперпараметра является частью «метода построения модели». Это правильно или нет? Потому что это то, что смущает меня. В другом месте я видел, что процедура построения окончательной модели для развертывания включает в себя обучение всему набору данных с использованием фиксированных значенийгиперпараметров, которые были выбраны с помощью CV. Здесь «метод построения модели» не включает настройку. Итак, что это? В какой-то момент оптимальные гиперпараметры выбраны и зафиксированы для построения окончательной модели! Где? Как? Если мой внутренний цикл 5-кратный CV, а мой внешний цикл 5-кратный CV, и я выбираю, скажем, 100 точек для тестирования как часть случайного поиска по сетке во внутреннем CV, сколько раз я фактически тренирую glmnet модель? (100 * 5 * 5) + 1 за финальную сборку, или есть еще шаги, о которых я не знаю?

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

Я также хотел бы знать соответствующую процедуру для выбора порога вероятности для преобразования оценок вероятности из моей окончательной модели glmnet в (двоичные) метки классов - нужен еще один цикл CV?

Эндрю Джон Лоу
источник

Ответы:

8

Вложенная перекрестная проверка объясняется без вложенности

Вот как я вижу (вложенную) перекрестную проверку и построение модели. Обратите внимание, что я химик и, как вы смотрите со стороны приложения на процесс построения модели (см. Ниже). Моя главная мысль здесь, с моей точки зрения, мне не нужна отдельная вложенная разновидность перекрестной проверки. Мне нужен метод проверки (например, перекрестная проверка) и функция обучения модели:

model = f (training data)

«мой» функциональная модель обучения f не требуют гиперпараметров , потому что внутренне делает все настройки гиперпараметра (например , ваш alpha, lambdaи threshold).

Другими словами, моя обучающая функция может содержать любое количество внутренних перекрестных проверок (или вне пакета, или какую-либо оценку эффективности, которую я могу счесть полезной). Тем не менее, обратите внимание, что различие между параметрами и гиперпараметрами обычно заключается в том, что гиперпараметры должны быть настроены на имеющийся набор данных / приложение, в то время как параметры затем могут быть установлены независимо от того, какие это данные. Таким образом, с точки зрения разработчика нового алгоритма классификации, имеет смысл предоставлять только «голую» функцию подгонки ( g (training data, hyperparameters)), которая соответствует параметрам, если даны данные и гиперпараметры.

Смысл использования «внешней» обучающей функции fзаключается в том, что после того, как вы провели кросс-валидацию, это дает вам простой способ тренироваться «на всем наборе данных»: просто используйте f (whole data set)вместо вызова f (cv split training data)суррогатные модели кросс-валидации.

Таким образом, в вашем примере вы будете иметь 5 + 1 звонков f, а каждый из звонков fбудет иметь, например, 100 * 5 звонков g.


порог вероятности

Хотя вы можете сделать это с помощью еще одной перекрестной проверки, в этом нет необходимости: это всего лишь еще один гиперпараметр, который есть у вашей готовой к использованию модели, и который можно оценить внутри f.

Вам нужно исправить это эвристику, которая позволяет рассчитать такой порог. Существует большое разнообразие эвристик (от ROC и определения, насколько важно избегать ложных срабатываний по сравнению с ложными отрицаниями по сравнению с минимально приемлемой чувствительностью или специфичностью или PPV или NPV, чтобы разрешить два порога и, таким образом, «неопределенный» (NA) уровень и т. Д. ) которые подходят в разных ситуациях - хорошая эвристика обычно очень специфична для конкретного приложения.

Но для вопроса здесь вы можете сделать это внутри fи, например, используя прогнозы, полученные во время внутренней перекрестной проверки, чтобы рассчитать ROC, а затем соответственно найти свою рабочую точку / порог.


Конкретные комментарии к частям вопроса

Я понимаю, что не должен сообщать о производительности из CV, используемого для выбора оптимальных гиперпараметров, в качестве оценки ожидаемой производительности моей конечной модели (которая была бы чрезмерно оптимистичной), но вместо этого должен включать внешний цикл CV, чтобы получить эту оценку ,

Да. (Хотя внутренняя оценка действительно несет информацию относительно внешней оценки: если она намного более оптимистична, чем внешняя оценка, вы, как правило, перегружены.)

Я понимаю, что внутренний цикл CV используется для выбора модели

Любой вид настройки модели, управляемой данными, на самом деле -> который включает в себя настройку порога отсечки.

(в этом случае оптимальные гиперпараметры) и то, что внешний цикл используется для оценки модели, т. е. внутреннее и внешнее резюме служат двум различным целям, которые часто ошибочно объединяются.

Да.

То есть настройка гиперпараметра является частью «метода построения модели».

Я тоже предпочитаю смотреть на это так: я химик и, как вы смотрите со стороны приложения: для меня обученная / подобранная модель не полна без гиперпараметров, или, точнее, модель - это то, что я могу использовать непосредственно для получить прогнозы. Хотя, как вы заметили, у других людей другое мнение (без настройки гиперпараметра). По моему опыту, это часто случается с людьми, разрабатывающими новые модели: настройка гиперпараметра тогда является «решенной проблемой» и не рассматривается. (примечание стороны: их взгляд на то, что может сделать перекрестная проверка с точки зрения проверки, также немного отличается от того, что может сделать перекрестная проверка на стороне приложения).

cbeleites поддерживает Монику
источник