Помогите понять деревья перекрестной проверки и принятия решений - PullRequest
29 голосов
/ 23 февраля 2010

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

  1. Определите количество желаемых сгибов (k)
  2. Разделите ваш набор данных на k сгибов
  3. Используйте k-1 сгибы для тренировочного набора, чтобы построить дерево.
  4. Используйте набор тестирования для оценки статистики об ошибке в вашем дереве.
  5. Сохранить результаты на потом
  6. Повторите шаги 3-6 для k раз, исключая другую складку для вашего тестового набора.
  7. Среднее количество ошибок по вашим итерациям для прогнозирования общей ошибки

Проблема, которую я не могу понять, состоит в том, что в конце у вас будет k деревьев решений, которые могут все немного отличаться, потому что они могут не разделяться одинаково и т. Д. Какое дерево вы выбираете? У меня была одна идея - выбрать одну с минимальными ошибками (хотя это не делает ее оптимальной, просто она показала наилучшие результаты в тот раз, когда ей дали - может быть, использование стратификации поможет, но все, что я прочитал, говорит, что это только немного помогает ).

Как я понимаю, при перекрестной проверке смысл состоит в том, чтобы вычислять статистику узлов, которая впоследствии может быть использована для сокращения. Таким образом, каждый узел дерева будет иметь статистику, рассчитанную для него на основании заданного ему набора тестов. Что важно, это в статистике узлов, но если вы усредняете свою ошибку. Как объединить эти характеристики в каждом узле между k деревьями, когда каждое дерево может различаться в зависимости от того, на что они делятся и т. Д.

Какой смысл вычислять общую ошибку на каждой итерации? Это не то, что можно использовать во время обрезки.

Любая помощь с этой маленькой морщинкой была бы очень признательна.

Ответы [ 6 ]

22 голосов
/ 23 февраля 2010

Проблема, которую я не могу понять, состоит в том, что в конце у вас будет k деревьев решений, которые могут все немного отличаться, потому что они могут не разделяться одинаково, и т.д. Какое дерево вы выбираете?

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

Что касается выбора конкретного дерева , вам следует вместо этого провести еще одно обучение на 100% доступных данных обучения, так как это, как правило, приведет к созданию лучшего дерева. (Недостатком подхода к перекрестной проверке является то, что нам нужно разделить [обычно небольшое] количество обучающих данных на «сгибы», и, как вы намекаете в вопросе, это может привести к деревьям, которые либо подходят, либо не подходят для конкретных экземпляров данных) .

В случае дерева решений я не уверен, к чему относится ваша ссылка на статистику, собранную в узле и использованную для удаления дерева. Может быть, конкретное использование методов перекрестной проверки? ...

5 голосов
/ 24 февраля 2010

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

Что касается второй части, я думаю, что вы путаете CV с набором проверки , который используется для того, чтобы избежать переобучения дерева путем сокращения узла, когда какое-то значение функции, вычисленное в наборе проверки не увеличивается до / после разделения.

2 голосов
/ 02 марта 2011

Уже упоминалось, что целью перекрестной проверки является квалификация модели.Другими словами, перекрестная проверка дает нам оценку погрешности / точности модели, созданной с выбранными «параметрами» независимо от используемых данных.Процесс проверки corss может повторяться с использованием различных параметров, пока мы не будем удовлетворены производительностью.Затем мы можем обучить модель с лучшими параметрами по всем данным.

2 голосов
/ 23 февраля 2010

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

Какое дерево вы выбираете? Одним из вариантов будет то, что вы создаете новое дерево, используя все свои данные для тренировочного набора.

1 голос
/ 23 февраля 2010

Перекрестная проверка не используется для создания или удаления дерева решений. Он используется для оценки того, насколько хорошо будет работать дерево (построенное на всех данных), имитируя поступление новых данных (создавая дерево без каких-либо элементов, как вы написали). На самом деле не имеет смысла выбирать одно из деревьев, сгенерированных им, потому что модель ограничена имеющимися у вас данными (и если вы не используете их все, на самом деле может быть хуже, если вы используете дерево для новых данных). Дерево построено на данных, которые вы выбираете (обычно все). Сокращение обычно выполняется с использованием некоторой эвристики (то есть 90% элементов в узле принадлежит классу A, поэтому мы не идем дальше или получение информации слишком мало).

0 голосов
/ 01 мая 2019

В настоящее время я сталкиваюсь с той же проблемой, и я думаю, что нет «правильного» ответа, поскольку концепции противоречивы и это компромисс между надежностью модели и интерпретацией модели. Я в основном выбрал алгоритм дерева решений для простоты интерпретации, визуализации и простого практического применения. С другой стороны, я хочу доказать надежность модели с помощью перекрестной проверки. Я думаю, что я буду применять двухэтапный подход: 1. Примените k-кратную перекрестную проверку, чтобы показать надежность алгоритма с этим набором данных. 2. Используйте весь набор данных для окончательного дерева решений для интерпретируемых результатов.

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

...