Как объяснить перекрестную проверку простым языком

Как специалист по данным в области цифровой медицины, мне часто приходится объяснять модели машинного обучения нетехническим специалистам. На самом деле это происходит так часто, что я создал кучу объяснений распространенных методов машинного обучения, которые настолько просты, что вы можете использовать их, чтобы объяснить машинное обучение бабушке! Не забудьте прочитать Объяснение машинного обучения бабушке: модели на основе деревьев.

Сегодня мы собираемся обсудить перекрестную проверку моделей машинного обучения. Перекрестная проверка - это метод оценки того, насколько хорошо работает модель машинного обучения, и есть несколько способов выполнить перекрестную проверку.

Зачем нужна перекрестная проверка?

Создавая модель машинного обучения, вы даете модели данные для обучения. Эти обучающие данные используются для построения модели с конкретными параметрами, порогами и правилами. Если вы читали нашу недавнюю статью Объяснение машинного обучения на древовидных моделях, вы, возможно, помните, что мы обсуждали, что мы используем обучающие данные, чтобы определить, какие вопросы должны быть в древовидной модели.

Чтобы понять, насколько хорошо работает наша модель, нам нужно ее протестировать. Если мы протестируем нашу модель на тех же данных, которые мы использовали для ее обучения, мы будем жульничать, потому что модель уже видела эти данные раньше. Итак, что мы хотим сделать, так это протестировать модель на данных, которых она никогда раньше не видела. Это также даст нам лучшее представление о том, насколько хорошо наша модель будет обобщена на большую популяцию, чем то, что в настоящее время есть в нашем наборе данных. Например, если вы разрабатываете модель для прогнозирования роста, но обучаете ее только с использованием данных, полученных от детей, эта модель, вероятно, не будет хорошо распространяться на взрослых. Тестируя свою модель, вы можете определить, насколько хорошо она работает, и лучше понять ее ограничения и ограничения ваших обучающих данных.

В реальном мире данные часто ограничены, и у нас есть ограниченный объем данных для обучения и тестирования нашей модели. Таким образом, мы обычно берем наш исходный набор данных и разделяем его, чтобы обучить модель, а затем тестировать его на данных, которые модель не видела раньше. Есть много способов сделать этот процесс, которому и посвящена эта статья!

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

Тренировка / тестовый сплит

Для начинающих машинного обучения разделение на тренировку / тест является наиболее распространенным методом, используемым для разделения данных для обучения и тестирования. Подход прост: разделите данные на две группы: одна группа будет использоваться для обучения модели, а другая - для тестирования модели. Общие разделения - 80/20 и 70/30. Ниже мы показываем пример этого разделения. В наборе данных из 10 человек, использующем разделение «поезд / тест» 70/30, вы поместите 7 человек в набор для обучения, а оставшиеся 3 человека будут использоваться для проверки данных.

Этот метод может хорошо работать для очень больших наборов данных, но его сложно использовать с небольшими наборами данных. Есть также предостережения, если у вас есть несбалансированные наборы данных *. Я рекомендую ознакомиться с ресурсами, доступными в этой статье, по выполнению разделений на поезд / тест на несбалансированных данных.

* Несбалансированные данные - это когда у вас нет равного количества людей с одинаковыми результатами. Например, предположим, вы прогнозируете, предпочитает ли человек пиццу или салат, и у вас есть небольшой набор данных из 10 человек. Изучив свои данные, вы обнаружите, что 9 из 10 человек предпочитают пиццу. Если ваш единственный человек в наборе данных, который предпочитает салат, входит в набор тестов, модель будет обучаться только на людях, которые предпочитают пиццу. Это очень несбалансированный набор данных!

Перекрестная проверка без исключения

Если у вас очень маленький набор данных, вероятно, предпочтительнее перекрестная проверка с исключением по одному. При перекрестной проверке с исключением по одному (LOOCV) вы строите множество моделей - количество моделей, которые вы создаете, равно общему количеству в вашем наборе данных.

В приведенном ниже примере каждый человек в нашем наборе данных становится тестовым набором один раз. Этот человек «не участвует» в обучении, и модель тестируется на этом отдельном человеке. Затем мы выбираем нового человека, которого следует исключить, и модель обучается и тестируется. Это повторяется «n» раз, где «n» - это номер в вашем наборе данных (в этом примере n = 10).

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

K-кратная перекрестная проверка

K-кратная перекрестная проверка включает разделение данных на определенное количество групп, обозначенных буквой «k». Сначала данные перемешиваются случайным образом, а затем разбиваются на k групп. Каждая уникальная группа является тестовым набором один раз, а остальные группы используются для тестирования модели. Этот процесс повторяется (так, как и LOOCV, обучаются и тестируются несколько моделей).

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

Обычные значения для «k» - 5 и 10. Ниже для нашего примера мы используем k = 5. Если мы разделим наш набор данных из 10 человек на 5 групп, в каждой группе будет по 2 человека. Каждая группа является тестовым набором один раз, а затем мы проходим цикл, повторяя процесс, пока каждая группа не станет тестовым набором.

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

Надеюсь, вам понравилось это простое объяснение подходов к перекрестной проверке! Дайте мне знать в комментариях, что вы хотели бы видеть дальше в серии «Объяснение машинного обучения бабушке»!