Привет, Хабр! Небольшая заметка про скромный первый опыт на Kaggle и извлеченные уроки. Без технических подробностей. Скорее про мотивацию и организацию процесса. Матерым DS будет скучно. Но если только планируете заглянуть на соревнование, то в самый раз. Спасибо ?
AMP®-Parkinson's Disease Progression Prediction
Использование данных о протеинах и пептидах у пациентов с болезнью Паркинсона для прогнозирования прогрессирования заболевания.
Команда: 2 человека
Опыт на Kaggle: отсутсвует
Создано рабочих блокнотов: 242
Создано моделей: 53
Отправлено сабмишенов: 91
Результат по баллам: TOP 6.94%
Результат по PB: TOP 15% (262 место)
Скор команды победителя по метрике соревнования (SMAPE): 60.042
Средний скор в PB: 72.278
Скор нашей команды: 69.759
До бронзы не хватило: 0.008%
До серебра не хватило: 0.0105%
До золота не хватило: 4.39%
Кто мы?
2 человека, без опыта участия в соревнованиях на Kaggle.
Что использовали?
TensorFLow,CatBoost, LightGBM, XGBoost, UMAP, T-SNE, Gaussian Process Regressor, Orthogonal Matching Pursuit, Huber, Denoising Autoencoder, Tabular DAE, PyCaret, ElasticNet
Особенности соревнования
Цель этого конкурса - предсказать показатели MDS-UPDRS, которые измеряют прогрессирование симптомов у пациентов с болезнью Паркинсона. Единая шкала оценки болезни Паркинсона (MDS-UPDRS) представляет собой комплексную оценку как двигательных, так и немоторных симптомов. Модели предлагалось обучать на основе данных об уровнях белка и пептидов с течением времени у пациентов с болезнью Паркинсона по сравнению с контрольными испытуемыми нормального возраста.
Чем дальше мы двигались в своих исследованиях, тем сильнее росло ощущение, что цель соревнования построить эффективную модель предсказывающую состояние пациента через протеины и пептиды не будет достигнута. И дело скорее не в отсутствии связи протеинов и болезни Паркинсона, а в самих данных и дизайне соревнования. Во-первых, в данных отсутствовал альфа-синуклеиен, с которым в последние годы связаны большинство перспективных исследований. Во-вторых, в совсем небольшой выборке и так страдающей от проклятия размерности, была представлена контрольная группа здоровых пациентов. В третьих, организаторы соревнования не поставили в условие обязательное использование протеинов и пептидов в решениях участников. Все три фактора были на грани фола. Уверен, у организаторов были убедительные причины предоставить сообществу именно такой датасет. Искренне надеюсь, что исследователи получили ответы на свои вопросы в решениях сообщества и эти ответы сделали человечество еще на шаг ближе к пониманию болезни Паркинсона и поиску эффективных подходов к его профилактике и лечению.
20 уроков
1. Эффективные решения могут быть простыми.
2. Бесценно научиться исключать избыточные данные и найти ответы в своих бейзлайнах и публичных решениях.
3. Соревновательный DS займет все твое свободное время.
4. Будьте готовы к тому, что дерево гипотез и вариантов будет расти бесконечно. Код будет сниться. С мыслью о соревновании будешь засыпать и просыпаться.
5, Очень скоро потребуется система учета результатов экспериментов и лог изменений.
6. Скорее всего будет потрачено очень много времени на идеи, которые не дадут результата. Но это будет бесценным опытом.
7. Изучи метрику соревнования. Сначала вдоль, затем поперек.
8. Поищи похожие соревнования в прошлом. Изучи победные техники.
9. Не полагайся на чужие EDA и автоматические пакеты для анализа данных.
10. Задай все и даже самые дикие вопросы о данных и о теме соревнования. Найди свои ответы на них. Дергай экспертов в области, читай arxiv.org и тематические публикации.
11. Расскажи о своей задаче и подходах людям далеким от DS. В простых вопросах и объяснениях часто можно встретить ценные идеи.
12. Заведите базу знаний. Общего чата команды может не хватить.
13. Лидерборд может не отражать реального положения дел.
14. Если соревнование содержит API для отправки сабмишенов, то будь готов к битве в слепую. Доводка готового решения до принятого сабмишена через API может занять больше времени чем ты думаешь. В нашем случае половина времени ушло на поиск незадокументированных багов.
15. Не сдавайся. Демотивация будет. Просто не сдавайся и иди до конца.
16. Доверяй локальному скору. Следи за публичным скором и сообщениями на форуме от лидеров рейтинга.
17. Команда это классно. Разделить свои страдания, находки и радость с тиммейтами - бесценно.
18. Возможно, не все в окружении оценят уровень вовлеченности в соревнование. Вам действительно потребуется много времени и внимания.
19. Соревнование - это сперва про учебу и опыт, потом про победы над самим собой и лишь потом про победы над другими. Ни одна работа, курс или пет-проект не дадут тебе столько опыта и набора техник за такой короткий промежуток времени, сколько ты получишь соревнуясь на Kaggle.
20. Соревнование закончится лишь тогда, когда поймешь решения победителей.