Kaggle, конкурс Titanic. Test Accuracy 0.87, лидерборд 0.75 почему?
Тренирую модель в R с помощью caret. Разделил данные на обучающую и тестовую выборку (80/20). Обучил модель используя repeated кросс-валидацию 5x10. Получил точность предсказаний при кросс-валидации в районе 0.85 со стандартным отклонение около 0.02. Затем применил модель на тестовой выборке и получил точность: 0.8701, 95% CI : (0.8114, 0.9158). Как же так получается, что предсказания на тестовой выборке и кросс-валидация говорит мне что я в самом худшем случае получу точность в районе 0.80, а когда загружаю решение то получаю 0.75? Такая ситуация происходит с тремя моделями: Random Forest, CatBoost и XGBoost. Получается, что обучающая выборка и тестовая выборка это разные популяции? Тогда какой смысл конкурса?
хех чувак, если бы обучающая и тестовая выборка были одинаковые, тогда можно было просто загрузить ответы из обучающей выборки в тест и не морочить голову, получив 100% верный результат.
смысл конкурса, научится строить модель которая работает в ОБЩЕМ случае, для любых примеров данных.
П. С.
ты свою модель подгоняешь под свои тестовые данные, в итоге если результаты на других тестовых данных получаются сильно хуже - то это говорит лишь о том что ты переподогнал свою модель под свои тестовые данные, и она хуже работает в общем случае.
Хех, чувак, в работе я не знаю какая будет тестовая выборка, применяя статистические методы такие как ресемплинг я оцениваю каков будет результат и эта оценка показывает мне, что результат должен быть не хуже 0.8. Если он намного хуже, значит выборки из разных популяций, модель не имеет смысла. Это тоже самое, что спросить в офисах Единой России за кого вы будете голосовать, потом повторить процесс на улице.
дима кубитский, если бы было переобучение, я бы не получил такую точность на тестовой выборке и кросс-валидация показывает такую же точность. Не так ли?
Максим, блин чувак, я же тебе уже обьяснил.
у тебя процесс обучения связан с тем что ты "подгоняешь" результаты к какой-то тестовой выборке.
ну вот ты и подогнал к свой тестовой выборке модель.
с этим титаником вообще набор данных ничтожный, очень легко переобучится (переподогнать данные), и крос валидация ничего тебе не гарантирует, только снижает это переобучение (все раавно у тебя идет подгонка данных к конкретным ответам).
сделай модель проще, если там какой-нибудь рандом форест, количество узлов ограничь, иначе он все равно будет тебе так подгонять под ответ модель.
дима кубитский, я не подгоняю к тестовой выборке, я подбираю гиперпараметры модели с помощью кросс-валидации, чтобы избежать как-раз переобучение, после кросс-валидации я дополнительно проверил модель на тестовой выборке и получил примерно такой же результат точности как при кросс-валидации, где тут переобучение?
дима кубитский, переобучение это когда я задал модели такие параметры, чтобы она была наиболее гибкая, то есть пыталась найти такие паттерны в данных, которые могут не быть в боевых данных. Как-раз при кросс-валидации я подбираю такие параметры, чтобы она давала хороший результат на данных, которые не участвуют в обучении, то есть близки к боевым.
Максим, послушай, ты когда модель "обучаешь" ты подгоняешь ответы модели к определенным ответам в тестах, излишняя подгонка к каким-либо конкретным тестовым данным - вызывает "переобучение".
это неминуемо для всех методов, просто когда данных мало (в случае с задачей про титаник), переобучится очень легко, есть подходы которые позволяют контролировать переобучения, смотреть например когда у тебя точность на тестовых данных начинает расходится с точностью на других данных (которые даются на самой платформе), то у тебя уже идет переобучение, после этого лучше откатить процесс подгонки параметров, из той модели что ты использовал, при выбранных параметрах, ты уже выжал все что мог, можно подумать о том чтоб сменить модель обучения, и потом использовать комбинации разных моделей, только так можно дальше улучшить результаты.
но так задрачиваться на Титанике не стоит там данных мало, это задача лишь для проработки пайплайна.