Переобучение и недообучение в машинном обучении
В очередной раз с коллегами поспорили по поводу определений этих понятий. В очередной раз выяснилось что их по разному понимаю даже люди внутри профессионального сообщества.
Итак началось примерно со следующего:
Переобучение это 100% точности на треничровочных данных
и с этого понеслось.
Заглянем в википедию, какое определение дает она?
Переобучение (переподгонка, пере- в значении «слишком», англ. overfitting) в машинном обучении и статистике — явление, когда построенная модель хорошо объясняет примеры из обучающей выборки, но относительно плохо работает на примерах, не участвовавших в обучении (на примерах из тестовой выборки).
и это в корне неверное определение и вот почему.
Ну вопервых потому, что под этим определением два эффекта имеющих разную природу. Первый это снижение точности модели при долгом обучении и второй, тот который написан в википедии.
Определение применяется к состоянию модели по отношению к выборке а само обучение это действие и не верно применять его к состоянию модели, попробую разобрать это подробнее.
Пример: У нас есть ученик ему нужно выучить одно четверостишье, больше от него ничего не требуется. Мы даем ему огромную книгу с тысячей страниц стихов. Он учит первый стих и выучив остается довольный. Это не переобучение а вроде как недообучение по классическим понятиям.
Если мы ему дадим один листок с четвиростишьем и ничего кроме него. Он выучивает и получает 100% на обучающей выборке. Это уже переобучение по мнению википедии. Вроде одно и тоже состояние но разное исходя из того, с какого набора данных мы обучались.
Но как? Одно и тоже состояние называть по разному, ученик не тратил больше времени в первом случаи больше чем во втором и там и там усилия были одинаковые, разнится только путь который нас к этому состоянию привел. В первом у нас был только стишок и он заучил его полностью получив "слишком" хорошие результаты с листочком. Во втором случае недообучнеие так как не выучил даже малой доли огромной книги. Отличие только в исходных данных, при этом не знай на какой обучающей выборке мы обучали мы бы не смогли определить "переобучене" у нас или "недообучение"
Применительно к машинам если бы мы называли города исходя из направления с которого попали в город. Если заехали с севера то это город Ленинград, а если попали в тот же город с юга то уже Санкт-Петербург. При этом если человек не помнит по какой дороге его привезли то как бы и понять не может в каком городе находится.
Как следовало бы использовать это определение.
Пере и недо это приставки действия "обучения" и следует применить его по отношению к действию то есть к модели. Недообучение это если модель не получилась всему тому, что могла бы, причины могут быть разные. Недостаточное время обучения или небольшая обучающая выборка. Если ученик не знает фактов из книги и может рассказать только одно четверостишься то это однозначно недообучение независимо от того на какой выборке он учился. Обе этих причины приводят к одному результату и неразлечимы при внимательном рассмотрении модели, называться это состояние должно одинаково - модель недоучена.
А что такое переобучение?
Переобучение это приставка пере действия обучения. То, что модель делала слишком долго. Эффект который есть почти у всех современных алгоритмов машинного обучения ухудшать свои качества в прогнозах при слишком долгом обучении. Если модель на каком то этапе обучения начала выдавать приемлемые результаты но мы ее не остановили и продолжили обучать, она переобучившись выдает результаты прогнозов хуже вот это уже переобучение! Когда обучения слишком много то приставка пере стоит верно. Было действие которое привело к потере качества модели вот это действительно переобучение а не то, что было описано раньше и то, какие определения дает википедия.
Чтобы разобраться в чем-то сложном нужно разобраться и определиться на этапе определений, почему удивляемся что никто не понимает как это работает если даже правильных определений состоянии не можем дать. Буду рад любым комментариям и приглашаю обсудить это в канале bimorph в забаненом месседжере.