id и время

На первых же занятиях по анализу данных, один из приёмов, которым я учу студентов — построение диаграммы рассеивания (скатерплот) по признакам id (номер в таблице) и время (номер, когда сделана запись). Недавно я сам попался на том, что вовремя не применил этот приём… time.jpg

Если в признаковой таблице строки записаны в хронологическом порядке, то вы увидите график монотонной функции (см. рис.1 ). В идеальном мире это линейная функция (таблица пополняется равномерно). В реальном мире он изогнут, и по изгибам видны периоды интенсивного пополнения. На рис. 1 вообще виден разрыв, и при детальном рассмотрении он интересен. Скажем, на рис.2 показан скатерплот времени и другого признака. Видно, что после разрыва изменились статистические свойства данных. И, кстати, в задаче, из которой взяты все эти графики, если тестироваться на CV, то качество будет 0.65 AUC ROC, а если на последнем участке обучающей выборки (как и положено в задачах со временем), то только 0.55! А объяснение простое: данные до «разрыва» не позволяют прогнозировать данные после (они просто разные).

Кстати, внимательный читатель может заметить, что не в разрыве дело… можете в комментария предположить,  с какого момента изменились «свойства данных».

vis17

vis6.png

А теперь поучительная история… что я не заметил. Дело было в одни выходные, проходил онлайн-хакатон (2 дня на задачу) с очень симпатичными данными. Я участвовал, больше с целью сделать неплохой кейс для студентов, т.е. за эти 2 дня я ещё слайды делал и строил все эти графики, что вы видите в посте. За несколько часов до конца хакатона качество одного из участников перевалило за 0.8 AUC ROC, причём у остальных было 0.65 (в конце соревнования 0.8 было уже у трёх). Понятно, что в данных какая-то утечка. Искать уже не было времени (а я перепробовал стандартные варианты), в итоге качество-то я повысил, но ценой переобучения… а то, что нашли лидеры банально.

Итак, взглянем ещё раз на первоначальную диаграмму рассеивания. Теперь я увеличу её фрагмент…

vis19

Как говорится, комментарии излишни. В таблице данные упорядочены по дням, а в каждый конкретный день — по целевому признаку! Самая простая и глупая утечка!!! Почему она была не заметна для большинства? Потому что в первые дни это не так. И листая таблицу ничего не видишь… а вот пролистав дальше уже видишь чередование групп 0 и 1 в бинарном целевом признаке.

Думаю, что раньше я бы легко это заметил (ведь замечал же в нескольких соревнованиях и даже описывал в своей н-п лекции). Но работа с реальными данными (а не данными соревнований) портят интуицию. В реальности ты знаешь, как получены данные, и если ты их сам не упорядочишь по значению целевого признака, никто это не сделает. А в разных хакатонах данные кто-то готовит. К сожалению, в 70% случаях способ подготовки такой, что решение зашивается в сами данные и участники решают не задачу, а ищут утечки.

Мораль: смотрите на графики id-время, только внимательно и в хорошем масштабе;)

Реклама

2 thoughts on “id и время

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s