Машинное обучение и нейронные сети - страница 72

 

10.1 Обзор лекции по перекрестной проверке (L10: Оценка модели 3)


10.1 Обзор лекции по перекрестной проверке (L10: Оценка модели 3)

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

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

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

  1. Методы перекрестной проверки для оценки модели: мы рассмотрим перекрестную проверку в K-кратном порядке и другие связанные методы для оценки производительности модели. Я продемонстрирую примеры кода с использованием Python и scikit-learn.

  2. Перекрестная проверка для выбора модели: мы обсудим, как использовать перекрестную проверку для выбора лучшей модели, включая настройку гиперпараметров. Я покажу вам, как выполнить выбор модели, используя поиск по сетке и рандомизированный поиск в scikit-learn.

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

Прежде чем мы углубимся в перекрестную проверку, давайте быстро повторим введение в гиперпараметры и проясним их отличие от параметров модели. Затем мы перейдем к обсуждению перекрестной проверки K-кратности для оценки модели и других связанных методов. Мы рассмотрим практическую реализацию этих методов с использованием Python и scikit-learn. Наконец, мы расширим наше обсуждение до перекрестной проверки для выбора модели, подчеркнув различие между оценкой модели и выбором модели.

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

Это подводит итог лекции. Теперь давайте вернемся к гиперпараметрам, а затем подробно рассмотрим перекрестную проверку.

 

10.2 Гиперпараметры (L10: Оценка модели 3)



10.2 Гиперпараметры (L10: Оценка модели 3)

Прежде чем углубляться в перекрестную проверку, давайте обсудим гиперпараметры. Возможно, вы уже знакомы с этой концепцией, но если нет, то это будет полезным резюме. Гиперпараметры можно рассматривать как параметры настройки или настройки модели или алгоритма. Это параметры, которые вы настраиваете вручную для оптимизации производительности вашей модели. Чтобы проиллюстрировать это, давайте рассмотрим классификатор K ближайших соседей, непараметрическую модель.

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

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

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

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

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

В логистической регрессии нелинейная функция, обычно логистическая функция или сигмовидная функция, применяется к чистым входным данным (взвешенной сумме входных данных), чтобы сжать их в диапазоне от нуля до единицы. Этот вывод можно интерпретировать как вероятность принадлежности к классу в бинарной классификации. Веса корректируются для минимизации потерь, которые вычисляются путем сравнения прогнозируемой вероятности принадлежности к классу с истинной меткой класса (либо 0, либо 1). Логистическая регрессия также использует методы регуляризации, такие как регуляризация L1 или L2, которые добавляют штрафной член в зависимости от размера весов для предотвращения переобучения. Сила регуляризации (лямбда) — это гиперпараметр, который должен быть установлен пользователем.

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

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

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

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

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

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

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

 

10.3 K-кратное CV для оценки модели (L10: Оценка модели 3)



10.3 K-кратное CV для оценки модели (L10: Оценка модели 3)

В этом видео мы углубимся в тему перекрестной проверки для оценки модели. Перекрестная проверка обычно используется в сочетании с настройкой гиперпараметров и выбором модели. Однако, чтобы облегчить лучшее понимание, давайте сначала рассмотрим, как работает перекрестная проверка k-fold только в контексте оценки модели, прежде чем обсуждать ее применение при выборе модели.

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

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

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

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

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

Давайте рассмотрим два частных случая k-кратной перекрестной проверки. Когда k равно 2, мы имеем двойную перекрестную проверку, которая отличается от метода удержания. При двойной перекрестной проверке набор данных делится ровно пополам, и каждая половина используется для обучения в разных итерациях. Напротив, метод удержания допускает произвольные пропорции разделения и не требует вращения между итерациями. Однако каждый раунд k-кратной перекрестной проверки можно рассматривать как частный случай метода удержания, когда набор данных разбивается ровно на две половины.

Другой особый случай — это когда k равно n, что приводит к перекрестной проверке с исключением одного (LOOCV). В LOOCV каждая итерация включает в себя исключение одной точки данных в качестве проверочного набора, в то время как оставшиеся n-1 точки данных используются для обучения. Этот подход также известен как LOOCV, где набор проверки состоит только из одной точки данных.

Исследование, проведенное Хокинсом и соавт. (2003) изучили эффективность различных методов оценки моделей, включая перекрестную проверку с исключением одного (LOOCV), и обнаружили, что LOOCV имеет тенденцию иметь высокую дисперсию по сравнению с другими методами перекрестной проверки. Эта высокая дисперсия может быть связана с тем, что каждая проверочная складка в LOOCV состоит только из одной точки данных, что приводит к ограниченному размеру выборки для оценки. Следовательно, оценки производительности, полученные с помощью LOOCV, могут быть очень чувствительными к конкретным точкам данных, выбранным для проверки на каждой итерации.

Несмотря на высокую дисперсию, LOOCV имеет некоторые преимущества. Поскольку каждая итерация включает обучение на n-1 точках данных, где n — общее количество точек данных, LOOCV имеет тенденцию обеспечивать объективную оценку производительности модели. Кроме того, LOOCV использует все доступные данные для обучения, что может быть полезно, когда набор данных невелик или когда требуется более точная оценка производительности.

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

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

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

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

 

10.5 К-кратное CV для выбора модели (L10: Оценка модели 3)


10.5 К-кратное CV для выбора модели (L10: Оценка модели 3)

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

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

Шаг 1: Разделите данные на обучающие и тестовые наборы. Этот шаг такой же, как и раньше, когда мы делим набор данных на две части: одну для обучения, а другую для тестирования. Сейчас мы сосредоточимся на тренировочном наборе.

Шаг 2: Примените алгоритм обучения с различными настройками гиперпараметров, используя k-кратную перекрестную проверку. Каждая настройка гиперпараметра, например максимальная глубина алгоритма дерева решений, оценивается с использованием k-кратной перекрестной проверки. Например, мы можем использовать k-кратную перекрестную проверку с k=10, как рекомендует Рон Кохави. На этом шаге мы получаем разные оценки производительности для каждого параметра гиперпараметра.

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

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

Шаг 5: Оцените модель на независимом тестовом наборе. Чтобы оценить эффективность обобщения модели, мы оцениваем ее на отдельном тестовом наборе, который не использовался в процессе обучения или выбора гиперпараметров. Это обеспечивает объективную оценку производительности модели.

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

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

Эта процедура суммирует k-кратную перекрестную проверку для выбора модели. Теперь давайте рассмотрим некоторые методы выбора гиперпараметров на этапе выбора модели или настройки гиперпараметров.

Одним из распространенных методов является поиск по сетке, который по-прежнему широко используется. Поиск по сетке — это исчерпывающий метод поиска, при котором вы определяете список значений гиперпараметров для рассмотрения. Например, в случае k ближайших соседей вы можете настроить значение k, указав список значений, таких как 3, 5, 6, 7, 8 и 9. Поиск по сетке оценивает производительность модели для каждого комбинация гиперпараметров с использованием k-кратной перекрестной проверки.

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

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

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

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

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

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

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

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

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

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

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

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

 

10.4 K-кратное CV для оценки модели — примеры кода (L10: оценка модели 3)



10.4 K-кратное CV для оценки модели — примеры кода (L10: оценка модели 3)

В предыдущем видео мы обсуждали k-кратную перекрестную проверку как метод оценки моделей машинного обучения. В этом видео мы рассмотрим, как реализовать перекрестную проверку k-fold в Python с использованием библиотеки scikit-learn. Я загрузил блокнот с кодом на GitHub, и вы можете найти ссылку здесь.

Начнем с загрузки необходимых библиотек и проверки их версий. Мы будем импортировать NumPy и matplotlib, которые являются широко используемыми библиотеками. Далее мы продемонстрируем использование перекрестной проверки k-fold с использованием класса k-fold из подмодуля выбора модели в scikit-learn.

Чтобы обеспечить воспроизводимость, мы устанавливаем случайное начальное число с помощью объекта генератора случайных чисел. Затем мы создаем простой набор данных с пятью метками из нулевого класса и пятью метками из первого класса. Кроме того, мы генерируем случайный набор данных с 10 входными данными и четырьмя функциями. Стоит отметить, что это просто случайный набор данных для иллюстрации, и вы можете использовать любой набор данных, который вы предпочитаете, например, набор данных радужной оболочки.

Затем мы инициализируем объект k-fold, который мы называем cv (сокращение от перекрестной проверки). Мы устанавливаем количество разбиений, n_splits, равным пяти, указывая, что мы будем выполнять пятикратную перекрестную проверку. Давайте изучим поведение этого k-кратного объекта, используя метод разделения. Когда мы выполняем этот метод, мы получаем пять результатов, каждый из которых состоит из кортежа, содержащего два массива. Первый массив представляет тренировочную складку, а второй массив представляет проверочную складку.

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

Чтобы решить эту проблему, рекомендуется перемешать набор данных перед выполнением k-кратной перекрестной проверки. Мы можем добиться этого, перетасовав набор данных непосредственно внутри k-кратного объекта во время инициализации. Установив случайное состояние и перетасовав, мы получаем лучшее сочетание меток в сгибах обучения и проверки.

Кроме того, обычно рекомендуется стратифицировать сплиты, гарантируя, что пропорция этикеток класса остается неизменной на каждом изгибе. Мы можем добиться этого, используя стратифицированный класс k-fold вместо обычного класса k-fold. Когда мы используем стратифицированную k-кратность, доля меток в каждой складке соответствует доле исходного набора данных.

Обсудив общее поведение k-кратных и стратифицированных k-кратных объектов, давайте посмотрим, как их применять на практике. Мы будем использовать классификатор дерева решений и набор данных радужной оболочки в качестве примера. Во-первых, мы разделили набор данных радужной оболочки на 85% обучающих данных и 15% тестовых данных, используя метод train_test_split, который обеспечивает стратифицированное разделение.

Затем мы инициализируем стратифицированный k-кратный объект с k = 10, как рекомендовано в статье Рона Кохави о практическом руководстве по перекрестной проверке. Затем мы используем ручной подход для выполнения k-кратной перекрестной проверки путем повторения индексов обучения и проверки с использованием метода разделения. В рамках каждой итерации мы подбираем новый классификатор дерева решений, используя тренировочную складку, и прогнозируем метки проверочной складки. Мы вычисляем точность для каждой итерации и сохраняем результаты в переменной-заполнителе.

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

В этом случае мы получили k-кратную точность перекрестной проверки 95,3% и точность тестового набора 95%. Эти результаты свидетельствуют о том, что наша модель хорошо работает как с перекрестной проверкой, так и с невидимыми тестовыми данными.

Однако ручное повторение сгибов и подгонка моделей может быть немного громоздким. К счастью, scikit-learn предоставляет более удобный способ выполнения k-кратной перекрестной проверки с использованием функции cross_val_score. Эта функция принимает модель, набор данных и количество сгибов в качестве входных данных и автоматически выполняет k-кратную перекрестную проверку, возвращая оценки для каждого сгиба.

Давайте посмотрим, как это делается на практике. Начнем с импорта необходимых библиотек и загрузки набора данных радужной оболочки. Затем мы создаем экземпляр классификатора дерева решений и инициализируем стратифицированный k-кратный объект с k = 10.

Затем мы используем функцию cross_val_score, передавая классификатор, набор данных и объект k-fold. Эта функция автоматически выполняет перекрестную проверку k-fold, подбирает модель и вычисляет баллы для каждого сгиба. По умолчанию функция cross_val_score использует метрику точности, но при желании вы можете указать другие метрики.

Наконец, мы печатаем баллы перекрестной проверки для каждой складки и вычисляем средний балл. В этом случае мы получили среднюю точность перекрестной проверки 95,3%, что соответствует точности, полученной нами вручную.

Использование cross_val_score является более кратким и эффективным способом выполнения k-кратной перекрестной проверки, поскольку он обрабатывает весь процесс автоматически. Это также позволяет нам легко изменить количество складок или переключиться на другую модель без существенного изменения кода.

 

10.6 K-кратное CV для оценки модели — примеры кода (L10: оценка модели 3)



10.6 K-кратное CV для оценки модели — примеры кода (L10: оценка модели 3)

Да, как в прошлый раз, когда мы говорили о k-кратной перекрестной проверке для оценки модели. Теперь давайте подробнее рассмотрим некоторые примеры кода для k-кратной перекрестной проверки, но на этот раз для выбора модели. Я предоставлю вам несколько примеров кода, которые вы можете найти на GitHub. Я также включу ссылку на Piazza и Canvas, чтобы вы могли загрузить блокнот с кодом и поэкспериментировать с ним позже.

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

Начнем с разделения нашего набора данных на обучающий и тестовый наборы. Мы используем 85% данных для обучения и 15% для тестирования, следуя обычной практике. Переходя к поиску по сетке, мы определяем два параметра гиперпараметра: максимальная глубина и критерий. Максимальная глубина представляет собой максимальную глубину дерева решений, и мы устанавливаем ее на 1, 2, 3, 4, 5 или None (нет ограничений на максимальную глубину). Критерий представляет собой функцию измерения качества разделения, и мы оцениваем как «джини», так и «энтропию». На практике выбор между Джини и энтропией мало что меняет, но мы включили его в демонстрационных целях.

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

Мы устанавливаем количество перекрестных проверок (CV) равным 10, указывая, что мы хотим выполнить 10-кратную перекрестную проверку. Для классификаторов используется стратифицированная k-кратная перекрестная проверка, гарантирующая, что пропорции меток остаются постоянными в каждой кратности. Показателем оценки, используемым для выбора наилучших настроек гиперпараметров, является точность для классификаторов и оценка R-квадрата для регрессоров. Мы также устанавливаем количество параллельных заданий для запуска равным -1, что позволяет выполнять несколько операций параллельно.

После указания всех необходимых реквизитов подгоняем объект поиска по сетке под наши данные. Он выполняет исчерпывающий поиск по сетке параметров, оценивая производительность каждой комбинации гиперпараметров с помощью перекрестной проверки. После завершения поиска в сетке мы можем получить доступ к лучшему результату и соответствующим параметрам, используя атрибуты best_score_ и best_params_ соответственно. В этом случае лучшая модель имеет максимальную глубину 3 и критерий «джини», достигая точности 96% в среднем по всем проверочным сгибам.

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

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

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

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

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

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

 

10.7 K-кратный CV 1-метод стандартной ошибки (L10: Оценка модели 3)


10.7 K-кратный CV 1-метод стандартной ошибки (L10: Оценка модели 3)

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

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

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

Чтобы проиллюстрировать этот метод, давайте рассмотрим набор данных бинарной классификации, сгенерированный с помощью scikit-learn, состоящий из квадратов и треугольников. Для простоты мы сосредоточимся на машине опорных векторов ядра RBF (SVM). SVM имеет гиперпараметр, называемый гаммой, который контролирует влияние каждого обучающего примера. Мы обнаружили, что различные значения гаммы приводят к точности в диапазоне от 60% до 90%, при этом некоторые настройки показывают схожую производительность.

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

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

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

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

 

10.8 K-fold CV 1-Standard Error Method -- Пример кода (L10: Оценка модели 3)


10.8 K-fold CV 1-Standard Error Method -- Пример кода (L10: Оценка модели 3)

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

Давайте пройдемся по блокноту вместе. Во-первых, у нас есть обычный импорт, который обычно используется. Затем я создаю свой собственный игрушечный набор данных, используя функцию make_circles из библиотеки scikit-learn. Эта функция позволяет указать количество примеров и уровень шума в наборе данных. Затем сгенерированный набор данных разбивается на обучающий и тестовый наборы. Этот подход отлично подходит для проведения исследований моделирования на произвольных больших наборах данных, чтобы наблюдать, как различные кривые обучения и поведение моделей меняются в зависимости от различных параметров, таких как шум и количество обучающих примеров. Он служит полезным испытательным стендом для экспериментов.

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

Для этой демонстрации я использую один гиперпараметр, поэтому ручного подхода с использованием списка и цикла for достаточно. Я инициализирую список параметров, а затем перебираю каждое значение. На каждой итерации я инициализирую модель SVM с выбранной настройкой гиперпараметра. Затем я выполняю k-кратную перекрестную проверку, чтобы оценить точность модели. Собираются значения точности, и я вычисляю среднее значение, стандартное отклонение и стандартную ошибку. Обратите внимание, что наивный подход, который я использую для вычисления стандартной ошибки путем деления стандартного отклонения на квадратный корень из размера выборки, может быть не лучшим методом, потому что раунды в k-кратной перекрестной проверке не являются полностью независимыми. Однако для получения некоторой меры подобия или планок погрешностей для сравнения различных методов этого подхода достаточно.

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

Чтобы продемонстрировать применимость этого метода к другим классификаторам, я также предоставляю код для классификации дерева решений в наборе данных радужной оболочки. В этом случае я изменяю параметр максимальной глубины дерева решений от 1 до 10. Выполняются аналогичные шаги: инициализация модели с настройкой гиперпараметра, подгонка модели, создание прогнозов, сбор k-кратных оценок перекрестной проверки, вычисление стандартная ошибка и так далее. Анализируя границы решений для различных максимальных глубин, мы можем наблюдать компромисс между сложностью модели и производительностью. В этом конкретном примере дерево решений с максимальной глубиной в три выбирается с использованием метода одной стандартной ошибки.

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

Я надеюсь, что вы найдете это объяснение полезным. Хороших выходных!

 

11.1 Обзор лекции (Оценка модели L11. Часть 4)


11.1 Обзор лекции (Оценка модели L11. Часть 4)

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

Сегодня мы углубимся в аспект сравнения моделей. Предположим, вы наткнулись на исследовательскую работу, в которой представлены предсказания одной модели на тестовом наборе. Вы можете сравнить эти прогнозы с прогнозами вашей собственной модели и определить, есть ли статистически значимая разница в их эффективности. Хотя эта практика не очень распространена, она может быть полезной. Одним из статистических тестов, который можно использовать в таких случаях, является тест Макнемара. Кроме того, мы обсудим сравнение алгоритмов, что позволит нам более объективно сравнивать различные модели и алгоритмы.

Однако обратите внимание, что сегодняшняя лекция будет короче, чем обычно, в связи с неделей благодарения. Для тех, кто заинтересован, конспекты лекций содержат более подробные пояснения. Они также охватывают дополнительные статистические тесты, такие как пятикратный F-тест и различные процедуры t-теста. Хотя эти темы не подлежат исследованию, они служат для удовлетворения вашего интеллектуального любопытства.

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

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

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

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

Сегодняшняя лекция познакомит вас со сравнением моделей и алгоритмов. Хотя эти концепции относятся к выбору модели, наша цель здесь — сравнить различные алгоритмы, стремясь определить, какой из них лучше работает в ряде связанных задач. В идеале у нас должен быть набор непересекающихся обучающих и тестовых наборов для каждого алгоритма. Например, при сравнении методов классификации изображений мы будем использовать различные наборы данных изображений для обучения разных моделей с использованием разных алгоритмов. Затем мы сравним их производительность на нескольких наборах данных. Однако практические ограничения часто ограничивают нашу способность следовать этому идеальному подходу. Мы сталкиваемся с проблемами, связанными с нарушением независимости и другими неприятностями в наборах данных. Эта проблема напоминает проблемы, обсуждавшиеся в документе CIFAR-10.

Более того, как мы можем сравнить производительность модели, которую мы обучили, с моделью, опубликованной в исследовательской статье или найденной в Интернете? Чтобы решить эту проблему, мы можем изучить фактическую разницу в производительности между двумя моделями, используя статистические тесты. Одним из таких тестов является тест Макнемара, который обычно используется для сравнения прогностической эффективности двух моделей в отношении бинарного результата.

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

              Model 2
           |  Positive | Negative |
---------------------------------
Model 1     |           |          |
---------------------------------
  Positive |           |          |
---------------------------------
  Negative |           |          |
---------------------------------
Чтобы применить тест Макнемара, мы подсчитываем количество экземпляров в каждой ячейке таблицы непредвиденных обстоятельств. Обозначим эти отсчеты следующим образом:

  • a: количество случаев, когда обе модели 1 и 2 предсказывают положительный результат.
  • b: количество случаев, когда модель 1 предсказывает положительный результат, а модель 2 предсказывает отрицательный результат.
  • c: количество случаев, когда модель 1 предсказывает отрицательное значение, а модель 2 предсказывает положительное значение.
  • d: количество случаев, когда обе модели 1 и 2 предсказывают отрицательный результат.

С этими подсчетами мы можем выполнить тест Макнемара, чтобы определить, есть ли существенная разница в производительности моделей. Нулевая гипотеза (H0) заключается в том, что две модели имеют одинаковую производительность, а альтернативная гипотеза (H1) заключается в том, что существует разница.

Статистика теста Макнемара соответствует распределению хи-квадрат с 1 степенью свободы. Мы вычисляем тестовую статистику по формуле:

chi2 = ((|b - c| - 1)^2) / (b + c)

Если тестовая статистика chi2 превышает критическое значение из распределения хи-квадрат (с 1 степенью свободы) на выбранном уровне значимости (например, 0,05), мы отклоняем нулевую гипотезу и делаем вывод, что существует значительная разница в производительности между две модели.

Важно отметить, что тест Макнемара предполагает, что парные экземпляры независимы и одинаково распределены. Это предположение может не выполняться, если парные экземпляры не являются действительно независимыми или если между ними существует некоторая форма зависимости. Кроме того, тест Макнемара в первую очередь применим к бинарным результатам. Если результат является мультиклассовым, альтернативные тесты, такие как Q-критерий Кокрана или критерий Стюарта-Максвелла, могут быть более подходящими.

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

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

Чтобы решить проблему множественного сравнения, нам нужно настроить уровень значимости наших статистических тестов. Одним из распространенных подходов является поправка Бонферрони, которая включает в себя деление желаемого уровня значимости (например, 0,05) на количество проводимых сравнений. Например, если мы сравниваем три модели, мы можем скорректировать уровень значимости до 0,05/3 = 0,0167 для каждого отдельного теста.

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

Другие методы корректировки уровня значимости включают метод Холма-Бонферрони, процедуру Бенджамини-Хохберга и контроль частоты ложных открытий (FDR). Эти методы представляют собой менее консервативные альтернативы поправке Бонферрони и могут быть более подходящими в определенных ситуациях.

Таким образом, тест Макнемара — это статистический тест, который можно использовать для сравнения производительности двух моделей на бинарном исходе. Однако при проведении множественных попарных сравнений важно учитывать проблему множественных сравнений, регулируя уровень значимости.

 

11.2 Тест Макнемара для сравнения попарных классификаторов (оценка модели L11. Часть 4)


11.2 Тест Макнемара для сравнения попарных классификаторов (оценка модели L11. Часть 4)

Давайте теперь обсудим тест Макнемара, который мы можем использовать для сравнения двух моделей друг с другом. Этот тест отличается от метода перекрестной проверки, который мы обсуждали на прошлой неделе для выбора модели. В отличие от перекрестной проверки, тест Макнемара не требует настройки модели с использованием обучающего набора. Вместо этого предполагается, что у нас уже есть существующая модель, такая как классификатор машинного обучения, упомянутый в опубликованной литературе, к которому у нас есть доступ через веб-приложение или GitHub. Цель состоит в том, чтобы сравнить нашу собственную модель с этим существующим классификатором на основе их производительности на тестовом наборе.

Тест Макнемара позволяет нам сравнивать два классификатора на основе их производительности на тестовом наборе. Он был введен Куинном Макнемаром в 1947 году и представляет собой непараметрический статистический тест для парных сравнений. В этом случае у нас есть категориальная зависимая переменная с двумя категориями, представляющими правильность прогнозов (например, правильные или неправильные), и категориальная независимая переменная с двумя связанными группами, представляющими две сравниваемые модели. Спаривание достигается за счет использования одного и того же тестового набора для обеих моделей. Для выполнения теста мы используем матрицу путаницы два на два, которая представляет собой специальную версию матрицы путаницы, специально разработанную для теста Макнемара.

Матрица путаницы два на два для теста Макнемара включает количество прогнозов, сделанных обеими моделями. Например, давайте рассмотрим случай, когда у нас есть истинные метки классов 0 и 1. Модель 1 предсказывает 1 и 2, а Модель 2 предсказывает 1 и 1. В этом случае число «а» представляет предсказания, которые и Модель 1, и Модель 2 оказалась правильной (например, предсказание 1, когда истинная метка равна 1). Подсчет «b» представляет прогнозы, в которых Модель 1 верна, а Модель 2 неверна, а подсчет «с» представляет прогнозы, в которых Модель 1 неверна, а Модель 2 верна. Сводя в таблицу эти подсчеты для заданного набора тестовых данных, мы можем построить матрицу путаницы два на два.

Используя матрицу путаницы два на два, мы можем вычислить различные показатели. Например, мы можем вычислить точность предсказания для каждой модели, разделив количество «a» и «b» на общее количество примеров в тестовом наборе. Кроме того, нас интересуют случаи, когда модель 1 и модель 2 различаются, представленные отсчетами «b» и «c» в матрице путаницы. Эти случаи показывают, где одна модель сделала правильный прогноз, а другая — неверный. Чтобы сравнить производительность двух моделей, мы можем запустить тест Макнемара.

Тест Макнемара следует типичной процедуре проверки гипотез. Определим нулевую гипотезу и альтернативную гипотезу. Нулевая гипотеза предполагает, что характеристики двух моделей равны, в то время как альтернативная гипотеза предполагает, что их характеристики различаются. Мы вычисляем статистику теста хи-квадрат, которая аппроксимирует распределение хи-квадрат. Статистика теста рассчитывается как (b - c) ^ 2 / (b + c). На основе этой тестовой статистики мы вычисляем p-значение, предполагая, что нулевая гипотеза верна. Значение p представляет собой вероятность наблюдения данной тестовой статистики или более экстремального значения при нулевой гипотезе.

Чтобы определить, следует ли отклонить нулевую гипотезу, мы сравниваем p-значение с выбранным уровнем значимости (например, 0,05). Если p-значение меньше уровня значимости, мы отклоняем нулевую гипотезу и делаем вывод, что характеристики двух моделей не равны. И наоборот, если p-значение больше уровня значимости, мы не можем отвергнуть нулевую гипотезу и предположить, что характеристики двух моделей равны.

Поправка на непрерывность была введена для решения проблемы, связанной с тем, что распределение хи-квадрат является непрерывным распределением, в то время как данные в таблице непредвиденных обстоятельств 2x2 являются дискретными. Вычитая 1 из абсолютной разницы в числителе, поправка на непрерывность помогает обеспечить лучшее приближение p-значения. Однако важно отметить, что использование коррекции непрерывности не всегда необходимо и зависит от конкретного контекста и данных.

Еще одним соображением в тесте Макнемара является использование точного биномиального теста. Точный биномиальный критерий обеспечивает альтернативный подход к определению статистической значимости критерия Макнемара, когда размер выборки мал или когда предположения критерия хи-квадрат не выполняются. Точный биномиальный тест напрямую вычисляет вероятность получения наблюдаемых данных при нулевой гипотезе, не полагаясь на приближение хи-квадрат.

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

Таким образом, тест Макнемара — это непараметрический статистический тест, используемый для сравнения эффективности двух моделей или методов лечения на основе парных категорийных данных. Он позволяет оценить, являются ли различия в производительности между моделями статистически значимыми. Тест включает в себя построение таблицы непредвиденных обстоятельств 2x2 и вычисление статистики теста, которую можно сравнить с распределением хи-квадрат или оценить с помощью точного биномиального теста. Проводя тест Макнемара, исследователи могут получить представление об относительной эффективности различных моделей или методов лечения в различных областях, включая машинное обучение, медицину и социальные науки.