Этот пост про процесс, совершенные ошибки и выученные уроки. Возможно, он поможет вам не наткнутся на те же грабли, при реализации проектных задач.
Мне довелось сделать ML модель в одном исследовательском проекте в Европе. К сожалению, я подписала NDA и деталей проекта рассказать не получится (пока), но поделиться опытом решение задачи и совершенными мной наивными ошибками смогу.
Ошибка 1: если заказчик хороший, то и данные хорошие - можно не проверять.
Моя роль в проекте заключалась в построении модели классификации на уже собранных данных. Звучит очень здорово - каждому Data Scientist(у) известно, что 70% времени при построении задачи уходит на сбор и обработку данных, а тут данные были собраны за меня. Более того, собраны командой, с очень хорошей репутацией в работе с данными. Более того, они и сами пробовали на данных уже строить модель, но экспертизы команды в этой области не хватило.
Поэтому я расслабилась и совершила ошибку - я предположила, что данные уже обработаны, и мне только нужно собрать финальную витрину для модели, ну и сгенерировать новые признаки вроде отношения 2х уже существующих.
Эта ошибка стоила мне дополнительной недели работы и перезапуска всего пайплайна, когда уже построив модель, я обнаружила странные аномалии в прогнозе, и пост-фактум посмотрев на данные, обнаружила там большое количество странно ведущих себя признаков. Например: нулевое расстояние дома до коммерческого объекта, отрицательную частотность и тд.
Вывод: всегда делайте базовые тесты в данных (полноту по месяцам, распределение в пространстве, выбросы), независимо от заказчика. Пусть вы лучше приятно удивитесь, чем неприятно расстроитесь)
Ошибка 2: я Data Scientist, мне не важно, какая прикладная цель и социологическая база стоит за таргетом модели.
Как я сказала, проект - исследовательский, длится он уже несколько лет, а моя роль ограничивалась 1 месяцем. Поэтому я решила полностью довериться заказчику и сделать то, что от меня просят. Тем более, что задача была сформулирована математически корректно.
В результате я споткнулась об два камня:)
1. оказалось, что понимание теории мне еще как понадобилось. Из теории формируется гипотеза, а гипотеза помогает валидировать результат. Конечно, есть валидационная выборка, но в моем случае она составляла 0.5% данных и оказалось, была нерепрезентативной. Думая, что соотношение 0 и 1 в обучающей выборке соответствует реальности, я ожидала похожих соотношений на всей совокупности. И 3 дня потратила на поиск ошибки. Оказалось, что ошибки не было, а нужно было поговорить с членом команды, понимающим теоретическую составляющую проблемы.
2. Модель планировали использовать не так, как я поняла из описания задачи, не задавая дополнительных вопросов. Вместо разовой классификации объекта на всей имеющейся истории, оказалось, модель нужно пересчитывать каждый месяц. Вдобавок, ковидный 2020 год, который я выкинула из-за большого числа пропусков оказался самым интересным для исследователей. Думаю вы понимаете, что все признаки пришлось пересчитывать в другом масштабе, модель перестраивать. Еще дополнительная неделя работы.
Вывод: перед началом работы общайтесь с как можно большим числом членов проекта, и постарайтесь задать как можно больше "глупых" вопрос. Возможно, вы поймете, что они были не глупые
Ошибка 3: задача разовая, новых данных не будет- напишу все шаги последовательно.
На проект отводилось очень мало времени( всего 30-40 рабочих часов) - данные-то собраны!, поэтому я решила не тратить время на создание функций и классов и написать все линейно. К сожалению, как вы наверное уже поняли, код пришлось запускать не один и не два раза, поэтому в итоге пришлось написать функции, что удвоило время, напиши я их сразу.
Вывод: по возможности пишите код так, чтобы поменяв входные данные, вы могли в течение часа пересчитать все результаты
Ошибка 4: в команде заказчика есть аналитик, начнется проект он мне поможет.
У меня было 2 недели между подписанием договора и началом проекта, в которые мне предложили "ознакомиться с ноутбуками, ноутбуками и задать вопросы". Мне показалось предложение неинтересным, поскольку эти часы не учитывались бы в проекте. Поэтому я просто проверила доступы, посмотрела, что ноутбуки можно прочитать и закрыла их на 2 недели.
Оказалось, что предложение поступило не зря: на весь! период моей работы аналитик ушел в отпуск и никто кроме него не мог мне точно рассказать, что означает какая переменная, и чем 2 датасета с одинаковыми названиями, но разным количеством строк отличаются друг от друга.
Вывод: заранее проговорите с заказчиком, кто из команды будет с вами коммуницировать и на какие вопросы он может ответить.
Вот такие собрались ошибки, проект в итоге получился, но радости принес сильно меньше, чем мог:)
Делитесь в комментариях вашими историями ошибок.
Совсем избавиться от ошибок не получится, но можно их минимизировать. Для этого приглашаю вас на мой курс по основам пространственного анализа с использованием Python. Наша цель — показать, как геоаналитические методы могут быть применены в бизнесе.
Курс предназначен для:
- GIS-специалистов с базовыми знаниями Python, которые хотят развить свои аналитические навыки;
- Аналитиков, которым необходимы геоинструменты для решения задач.
Курс полностью самостоятелен и включает возможность обсуждения в нашем чате в Telegram.
Посетите наш сайт, пройдите тест и присоединяйтесь к курсу.