Pull to refresh

Comments 10

>А вот не смущает ли тебя тот факт, что в этом коде модель не увидела 33% обучающих данных? Ты заметил, куда эти данные делись? Данные, отложенные для валидации, в итоге не были приглашены на танец fit'а

по-моему, там было сделано все правильно

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

иначе невозможно детектировать проблему переобучения модели

Привет, Сергей!

Все верно, но только если ты хочешь просто качество модели оценить. А если хочешь выжать из данных все, что есть, то надо переобучать на всех данных.

В cs231 есть другое мнение на этот счет (п.6 Summary):

Take note of the hyperparameters that gave the best results. There is a question of whether you should use the full training set with the best hyperparameters, since the optimal hyperparameters might change if you were to fold the validation data into your training set (since the size of the data would be larger). In practice it is cleaner to not use the validation data in the final classifier and consider it to be burned on estimating the hyperparameters. 

https://cs231n.github.io/classification/

Справедливости ради, этот совет относится к KNN. Я скорее к тому, что решение может быть не столь однозначным.

Так вам надо победить, или следовать best practices из учебника?

Соревнования Kaggle о том, чтобы получить наивысшую циферку, пусть даже эта циферка превосходит конкурентов лишь на уровень шума библиотеки XGBoost.

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

Спасибо за хорошо структурированную статью! Мое уважение ошибке #8, не сталкивалась с подобными подставами со стороны pandas, а теперь и впредь не столкнусь.

Ошибки 6 и 7 очень жизненные даже в рабочих задачах.

+ Всплывает и антипод ошибки 7 - экономия на данных в val/test, которая позднее приводит к недостоверным оценкам гипотез.

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

Есть еще много других тонкостей, которые полезно знать про Pandas, но это уже совсем другая история.

Так веб разработчики в 90-х говорили про Internet Explorer: "Это не баг, это фича, просто надо их всех помнить..."

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

Wes McKinney:10 Things I Hate About pandas

Утиные истории со стрелами на паркете

Спасибо за статью, но позволю себе замечание по Ошибке #5:

фиксировать seed'ы и random_state'ы надо

А кто может дать гарантию, что соотношение метрика(модель_А) > метрика(модель_Б) на одном сиде сохранится при другом?

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

Чтобы не было сюрпризов со стабильностью модели можно проводить т.н. nested cross-validation, когда сравниваются не точечные значения метрик на наборах гиперпараметров, а их агрегаты (например, доверительные интервалы) по дополнительным переразбиениям внутри каждого цикла обычной кросс-валидации.

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

Sign up to leave a comment.