При проведении машинного обучения важно убедиться, что данные не соответствуют модели. Переобучение — это понятие в науке о данных, которое возникает, когда статистическая модель точно соответствует своим обучающим данным. Когда данные переобучены, алгоритм не может оптимально работать с невидимыми данными, являющимися тестовым набором.
Когда оценщик слишком сложен или слишком долго обучается на наборе данных, в обучающий набор может быть введен шум или нерелевантная информация. Когда модель запоминает шум и слишком близко подходит к набору данных в процессе обучения, говорят, что она переобучена и не может хорошо обобщать новые, невидимые данные.
При прогнозировании данных данные должны быть сначала разделены на два набора данных: данные обучения и данные тестирования. Модель, как правило, обычно обучает и подбирает обучающие данные и делает прогнозы на тестовых данных. Если обучающий набор данных имеет низкую частоту ошибок, а тестовый набор данных имеет высокую частоту ошибок, это указывает на переоснащение модели.
На приведенном ниже рисунке показан пример недостаточного, оптимального и избыточного соответствия данных. Когда данные недостаточно подходят, они имеют высокий уровень ошибок как в обучающих, так и в тестовых наборах данных. Когда данные оптимально подходят, они имеют низкую ошибку как в обучающих, так и в тестовых наборах данных. И, наконец, когда данные переобучены, в обучающем наборе наблюдается низкая частота ошибок, а в тестовом наборе данных — высокая частота ошибок:
Таким образом, ключевым моментом является обеспечение того, чтобы прогнозируемые данные не были избыточными или недостаточными. Таким образом, один из способов избежать переобучения — выбрать модель, которая по своей сути снижает возможность переобучения модели.
Ридж-регрессия, которая является частью библиотеки оценок sklearn, является одной из оценок, которая предотвращает переоснащение. Этот оценщик используется для количественной оценки переобучения данных путем измерения величины коэффициентов. Величина корреляции коэффициента указывает на силу ассоциации. В регрессии с одной независимой переменной коэффициент показывает, насколько ожидается, что зависимая переменная увеличится или уменьшится, когда эта независимая переменная увеличится на единицу.
Чтобы исправить проблему переобучения, важно сбалансировать, насколько хорошо модель соответствует данным, с величиной коэффициентов. Гребневая регрессия решает некоторые проблемы обычных методов наименьших квадратов, налагая штраф на размер коэффициентов.
Регуляризация сужает изученные оценки до нуля. Он настраивает функцию потерь, добавляя штрафной член, который предотвращает чрезмерное колебание коэффициентов, что снижает вероятность переобучения.
Параметр, который защищает от переобучения, является альфа в оценщике регрессора Риджа. Когда альфа-параметр увеличивается, регрессор Риджа становится более устойчивым к переобучению, но это может произойти за счет большей ошибки обучения.
Чтобы продемонстрировать, как работает регрессор Риджа для предотвращения переобучения, я решил опробовать оценщик на наборе данных. Я решил попробовать это на наборе данных, который является автомобильным набором данных, который находится в центре внимания курса «Анализ данных» от Coursera.
Ссылку на автомобильный набор данных можно найти в репозитории Kaggle по адресу: https://www.kaggle.com/toramky/automobile-dataset/code?datasetId=1291&sortBy=dateRun&tab=profile.
На скриншоте ниже я вставил код регрессора Ridge и установил для параметра альфа значение 0,01. Когда я тренировался, подгонял и прогнозировал модель, я добился точности 81,12%:
На приведенном ниже графике показано, как прогнозируемые значения сравниваются с фактическими значениями:
Я решил посмотреть, что произойдет, если я увеличу альфу до 0,1, и когда я обучил, подогнал и предсказал данные, точность снизилась до 81,11%. Это показывает, что по мере увеличения альфа склонность к переоснащению уменьшается, но это происходит за счет высокого уровня точности:
На приведенном ниже графике показано, как прогнозируемые значения сравниваются с фактическими значениями, которые будут незначительно отличаться от предыдущего графика:
Я изменил альфа-параметр на 1, и видно, что после обучения, подгонки и прогнозирования модели точность снизилась до 80,43%. Снижение точности указывает на тот факт, что по мере увеличения альфа надежность оценки будет увеличиваться, чтобы предотвратить переоснащение за счет точности:
Я построил график прогнозируемых точек данных по сравнению с фактическими точками данных, и на диаграмме есть небольшие вариации:
Наконец, я увеличил альфу в регрессоре Риджа до 10, и когда я тренировался, подгонял и прогнозировал данные, точность снизилась до 70,32%, что примерно на 8 пунктов ниже точности, которой я достиг, когда установил альфу на 0,01. . Это отражает тот факт, что склонность к переоснащению была снижена за счет точности:
Я также построил график прогнозируемых значений по сравнению с фактическими значениями, и изменение точек значения можно четко увидеть при этом значении альфа:
В последнем посте, который я написал, я затронул тему перекрестной проверки. Ссылку на этот пост можно найти здесь: https://tracyrenee61.medium.com/does-sklearns-cross-val-predict-yield-more-accurate-predictions-than-the-predict-function-5496398fa1d
В дополнение к тому, что sklearn имеет регрессор Ridge в своей обширной библиотеке, у него также есть RidgeCV, который представляет собой просто регрессию Ridge с запрограммированной в нем перекрестной проверкой. Код для RidgeCV немного отличается от Ridge, потому что в параметре alphas есть несколько значений. Когда я тренировался, подгонял и прогнозировал данные, я добился точности 81,11%, что, согласно экспериментам, которые я провел выше, указывает на то, что альфа была выбрана равной 0,1:-
Я также построил график того, как прогнозируемые переменные сравниваются с фактическими значениями, и он выглядит как график, построенный для низких уровней альфа:
В заключение, приятно знать, что регрессор sklearn's Ridge можно использовать для уменьшения переобучения. Sklean также имеет средство для выполнения перекрестной проверки для тех людей, которые не хотят находить оптимальную альфу, самостоятельно вводя значение альфы.
Код для этого сообщения можно полностью найти в моей личной учетной записи Kaggle, ссылка находится здесь: https://www.kaggle.com/tracyporter/coursera-data-analysis-with-python?scriptVersionId=74037934.