Изучение выигрышей в гарантированной, поддерживаемой и средней точности; обнаруживать предубеждения
Хотя люди говорят, что от 10% до 30% — это хороший размер теста, он очень зависит от проблемы. Хорошей отправной точкой является то, что я называю гарантированной точностью — точность минус два стандартных отклонения. Используя репрезентативную, но не точно настроенную фиктивную модель, можно смоделировать множество случайных семян разных размеров теста. Возьмите среднее значение и стандартное отклонение каждого размера теста, который вы пробовали, а затем выберите тот, который обеспечивает максимальную гарантированную точность. Вы даже можете сделать это, не глядя на реальную точность. Делая это для обработанных данных Кливленда из набора данных по сердечно-сосудистым заболеваниям UCI с использованием логистической регрессии PCA по умолчанию из sklearn, я обнаружил, что лучший размер теста составляет 49%. Для тех, кто силен духом, также можно использовать поддерживаемую точность, которая представляет собой среднее значение минус одно стандартное отклонение. Это дает 38%.
Следующий вопрос, который возникает, заключается в том, сколько раз использовать для перекрестной проверки (cv). Чтобы упростить задачу, давайте поговорим о перекрестной проверке для оптимизации конечной точности. В конце концов, влияние гиперпараметров может быть очень специфичным для модели, тогда как точность является более общей мерой.
Та же идея гарантированной точности может работать и при определении количества сгибов, но для этого требуется несколько дополнительных шагов. Прежде всего, нам придется отказаться от идеи k-кратной перекрестной проверки и работать с повторным удержанием. Причина в том, что со статистической точки зрения создание J случайных моделей с одинаковыми выборками намного проще смоделировать, чем k-кратную перекрестную проверку. Есть еще два случая, когда перекрестную проверку в k-кратном порядке легко понять, и мы можем по существу прочитать всю необходимую нам информацию из хорошо выбранного графика, но чтобы добраться туда, мы сначала должны понять повторяющееся удержание.
Когда вы строите множество моделей на основе одних и тех же данных и тестируете их на одних и тех же данных, корреляции становятся проблемой, так что стандартное отклонение точности отдельных моделей больше не равно ошибке общей точности. На самом деле поправка может быть более чем в 4 раза! Взгляните на реализацию в коде ниже, или вы можете проверить мой пост в блоге для деталей.
Но когда все сказано и сделано, вы снова получите график зависимости гарантированной точности от количества моделей J и размера теста. Максимизируя последнее для каждого J, мы получаем следующий график для набора данных о сердечных заболеваниях UCI (см. ссылку Github в конце статьи):
Вот определение гарантированной и поддерживаемой точности:
Эта связь между дисперсией J-моделей для повторного удерживания и дисперсией общей точности была обнаружена в 2003 г. Надо и Бенжио (NB) с использованием упрощающих предположений (нам нужно было лишь сделать небольшое изменение для J ‹ 5 ). Мы находим их предположения нарушенными, но все еще очень значимыми.
Теперь вернемся к k-кратной взаимной корреляции. Здесь мы не знаем гарантированной точности, за исключением одного простого случая: 2-кратное cv. 2-кратное cv не имеет корреляций ни между его поездом, ни между тестовыми наборами, поэтому стандартное отклонение точности моделей такое же, как и у общей точности. Получается, что гарантированная точность для 2-кратного cv на 0,2% выше, чем для оптимального (выбранного размера теста) двукратного повторного удержания. После 2-кратного cv лучшее, что мы можем сделать, это построить среднюю точность различных стратегий отбора:
Сравнивая зеленую и синюю кривую, мы видим, что в то время как для 2-кратного повторного удержания лучше, поскольку он имеет меньший размер теста (см. график выше), в промежуточной области стратифицированное k-кратное cv немного лучше, потому что он может позволить себе больший тренировочный набор. Для более чем 50 моделей/сгибов повторная задержка снова лучше, потому что она способна поддерживать больший размер теста: на самом деле, мы ожидаем, что некоторая погрешность тестового набора появится для 300 сгибов — пропуск-один-выход-cv (LOOCV) . Причина в том, что это простое среднее N=300 одиночных наблюдений. Поэтому мы ожидаем, что одна ошибка среднего отстоит от истинной точности модели, которая в данном случае составляет 2,1%, что в четыре раза больше, чем наблюдается. Таким образом, мы можем сказать, что перекрестная проверка k-кратности стала жертвой предвзятости в тестовом наборе при большом количестве кратностей, тогда как повторная задержка способна удерживать размер теста на уровне 5% с произвольным количеством моделей и, следовательно, меньше подвержена влиянию предвзятость. Ожидается, что это смещение будет очень быстро уменьшаться с увеличением размера теста, потому что как количество возможных моделей, так и количество точек тестовых данных увеличиваются по мере увеличения размера теста. Тот факт, что он сохраняется до шести точек данных теста — или 50 раз — является показателем сильной корреляции. Теперь обратимся к повторной задержке, где все это станет еще понятнее:
На этом графике показана средняя точность повторного удержания. Приятно то, что мы можем ясно видеть смещение как остаток от наиболее подходящей линии. Существует систематическая ошибка в LOOCV и LTOCV (убрать два-вне резюме), и мы видим, что она сохраняется примерно до 10% размера теста. Помимо смещения, мы видим, что дисперсия появляется, начиная с 1% размера теста (три контрольных точки) и примерно до 10% размера теста (30 контрольных точек), исчезая в той же точке, что и смещение. Эти колебания, кажется, не затухают с заметной скоростью по мере того, как вы строите больше моделей, показанных зеленым цветом. Алгоритм NB не включает ни одну из этих функций, поэтому мы используем скользящее окно и исключаем размеры тестов ‹ 5%. Мы также видим, что LOOCV не дает никаких улучшений по сравнению с размером теста 10%, что хорошо сочетается с предыдущими анализами, которые показали, что 10-кратное умножение уже дает оптимальные результаты. Тем не менее, мы видим небольшое улучшение при размере теста ~ 5%, что мы и использовали в предыдущем графике.
Если вам интересно, причина, по которой ошибка NB составляет 2%, в то время как все точки находятся на линии, заключается в том, что это ожидаемое смещение тренировочного набора, поэтому оно не будет отображаться как дисперсия в модели. Он количественно определяет вероятность того, что нам необычно повезло или не повезло со всеми нашими данными. К этому добавляется эффект меньшего количества обучающих данных любой модели, которую мы пытаемся оценить с помощью множества случайных начальных значений. Расхождения вокруг линии значительно увеличиваются, когда вы усредняете меньшее количество моделей.
Глядя на второй график, мы видим, что повторное удержание (зеленым цветом) является хорошим индикатором (нижняя граница) для k-кратного cv (синим цветом) между 3 и 35 кратностями. Поэтому, глядя на первый график, мы видим, что если мы хотим остаться в пределах 1% от максимально возможного гарантированного прироста точности (3,34%), нам нужно 20 кратностей. Если мы хотим остаться в пределах 0,5%, нам нужно использовать повторную задержку с размером теста 5% и 70 моделями. Для поддерживаемой точности мы хотим использовать k-fold cv между 6 и 16 кратностями, поэтому, если мы хотим оставаться в пределах 1% от наилучшего возможного прироста точности (2,39%), нам нужно использовать 9 кратностей, и если мы хотим остаться в пределах 0,5%, нам нужно использовать повторную задержку с размером теста 5% и 31 моделью.
Обобщая на другие наборы данных, мы показали, как использовать повторное удержание в качестве прокси для изучения повышения точности, достижимого за счет увеличения количества сгибов, а также в каких точках переключаться на повторное удержание и почему. Смещение тестового набора LOOCV можно оценить, найдя его ошибку среднего. Это будет оценка на порядок истинного смещения (в данном случае отклонение на 75%).
Вот ссылка на код на моем Github.
[1]: Дуа, Д. и Графф, К. (2019). Репозиторий машинного обучения UCI [https://archive.ics.uci.edu/ml]. Ирвин, Калифорния: Калифорнийский университет, Школа информационных и компьютерных наук.