Успех в проектах машинного обучения обычно связан не только с умением использовать разные библиотеки, но и с пониманием предметной области, из которой поступают данные.
Прекрасной иллюстрацией этого тезиса стало решение, предложенное командой Алексея Каюченко, Сергея Белова, Александра Дроботова и Алексея Смирнова на конкурсе PIK Digital Day. Они заняли второе место, а через пару недель рассказали о своем участии и построенных моделях на следующем Обучение Яндекс ML .
Алексей Каюченко: - Добрый день! Мы расскажем о конкурсе PIK Digital Day, в котором мы приняли участие.
Немного о команде.
Нас было четверо.
Все с совершенно разным прошлым, из разных областей.
Фактически мы встретились в финале.
Команда сформировалась буквально за день до финала.
Расскажу о ходе конкурса и организации работы.
Потом выйдет Сережа, расскажет о данных, а Саша расскажет о подаче, об итоговом ходе работы и о том, как мы продвигались по лидерборду.
Коротко о конкурсе.
Задача была очень практичной.
ПИК организовал этот конкурс, предоставив данные о продажах квартир.
В качестве обучающего набора данных была история с атрибутами за 2 с половиной года в Москве и Московской области.
Конкурс состоял из двух этапов.
Это был онлайн-этап, где каждый из участников индивидуально пытался сделать свою модель, и офлайн-этап, который длился не так уж и долго, всего один день с утра до вечера.
В него вошли лидеры онлайн-сцены.
По итогам онлайн-конкурса наши места не попали ни в топ-10, ни даже в топ-20. Мы там были на местах 50+.
В самом финале, то есть офлайн-этапе, приняли участие 43 команды.
Было много команд, состоящих из одного человека, хотя можно было и объединиться.
Около трети команд состояло из более чем одного человека.
В финале состоялось два соревнования.
Первый конкурс – модель без ограничений.
Могут использоваться любые алгоритмы: глубокое обучение, машинное обучение.
В то же время шел конкурс на лучшее решение линейной регрессии.
Организатор посчитал, что линейная регрессия тоже вполне прикладная, поскольку сам конкурс в целом очень прикладной.
То есть была поставлена прикладная задача - необходимо было спрогнозировать объем продаж квартир, имея с атрибутами исторические данные за предыдущие 2,5 года.
Наша команда заняла второе место в конкурсе на лучшую модель без ограничений и первое место в конкурсе на лучшую регрессию.
Двойной приз.
Об общем ходе организации могу сказать, что финал получился очень напряженным, достаточно напряженным.
Например, наше выигрышное решение было загружено буквально за две минуты до остановки игры.
Предыдущее решение поставило нас, по моему мнению, на четвертое или пятое место.
То есть мы работали до конца, не расслабляясь.
ПИК все организовал очень хорошо.
Там были такие столы, была даже веранда, чтобы можно было посидеть на улице и подышать свежим воздухом.
Еда, кофе, все было предоставлено.
На снимке видно, что все сидели по своим группам и работали.
Сергей расскажет подробнее о данных.
Сергей Белов: - Спасибо.
ПИК предоставил нам несколько файлов данных.
Двумя основными из них были train.csv и test.csv, которые содержали около 50 функций, созданных самим PIK. Поезд состоял примерно из 10 тысяч строк, тестовый — из 2 тысяч.
Что давала линия? Там были данные о продажах.
То есть в качестве значения (в данном случае целевого) у нас были продажи квартир на квадратные метры, усредненные по конкретному дому.
Таких строк было около 10 тысяч.
Признаки в наборах, которые сгенерировал сам ПИК, показаны на слайде с примерной значимостью, которую мы получили.
Здесь мне помог мой опыт работы в девелоперских компаниях.
Такие особенности, как удаленность квартиры от Кремля или Транспортного кольца, количество парковочных мест – они не очень сильно влияют на продажи.
Влияние оказывает класс объекта, количество спален и, самое главное, количество квартир, находящихся в продаже на данный момент. Компания PIK не создавала эту функцию, но предоставила нам три дополнительных файла: Flat.csv, status.csv и Price.csv. И мы решили посмотреть Flat.csv, так как там содержатся данные о количестве квартир и их статусе.
И если спросить себя, что сделало наше решение успешным, то это определенная командная работа.
Мы работали очень слаженно с самого начала этого конкурса.
Мы сразу минут 20 обсуждали, что будем делать.
Мы пришли к общему выводу, что первое, что нам нужно делать, это работать с данными, потому что любой data science понимает, что в данных заложено очень многое и зачастую победа достигается за счет какой-то особенности, которую сгенерировала команда.
После работы с данными мы сначала использовали различные модели.
Мы решили посмотреть, какие результаты дают наши функции в каждой из этих моделей, а затем сосредоточились на модели без ограничений и модели линейной регрессии.
Мы начали работать с данными.
Прежде всего мы посмотрели, как тесты набора поездов связаны друг с другом, то есть пересекаются ли области этих данных.
Да, они пересекаются: и по количеству квартир, и по количеству спален, и по некоторой средней этажности.
Далее для линейной регрессии мы начали выполнять некоторые преобразования.
Это что-то вроде стандартных логарифмов показателей.
Например, в случае среднего этажа это было обратное преобразование Гаусса для линеаризации.
Мы также заметили, что иногда лучше разделить данные на группы.
Если взять, например, расстояние от квартиры до метро или размер ее комнаты, то рынки немного разные, и лучше их разделить, сделать разные модели для каждой такой группы.
Мы сгенерировали три объекта из файла Flat.csv. Один из них представлен здесь.
Видно, что она имеет достаточно хорошую линейную зависимость, если не считать этого проседания.
Что это была за особенность? Оно соответствовало количеству квартир, которые сейчас продаются.
И эта функция очень хорошо работает при низких значениях.
То есть проданных квартир не может быть больше, чем то количество, которое продается.
Но в этих файлах на самом деле был заложен некий человеческий фактор, ведь зачастую их составляет человек.
Мы прям видели там очки, выходящие за пределы этой области, потому что они были немного неправильно набраны.
Пример из scikit-learn. Модель от GBR и Random Forest без особенностей дала RMSE 239, а с этими тремя признаками — 184. Саша расскажет вам о моделях, которые мы использовали.
Александр Дроботов: — Несколько слов о нашем подходе.
Как ребята уже сказали, мы все разные, мы из разных областей, разного образования.
И у нас были разные подходы.
На заключительном этапе Леша использовал XGBoost от Яндекса (скорее всего, имеется в виду CatBoost — прим.
ред.), Сережа использовал библиотеку scikit-learn, я использовал LightGBM и линейную регрессию.
XGBoost, линейная регрессия и модели Пророка — три варианта, которые показали нам наилучшие результаты.
Для линейной регрессии мы использовали смесь двух моделей, а для общего соревнования у нас был XGBoost, и мы добавили немного линейной регрессии.
Вот процесс подачи решений и работы с командой.
На левом графике ось X — это общедоступное RMSE, значение метрики, а ось Y — это значение частной оценки, RMSE. Мы исходили примерно с этих позиций.
Здесь представлены индивидуальные модели каждого участника.
Затем, обменявшись идеями и создав новые функции, мы начали приближаться к нашему лучшему результату.
Наши значения для отдельных моделей оказались примерно одинаковыми.
Лучшая индивидуальная модель — XGBoost и Prophet. Пророк создал прогноз совокупных продаж.
Был такой знак, как стартовая площадка.
То есть мы знали, сколько всего квартир у нас было, понимали, какова историческая стоимость, а приростная стоимость стремилась к общей стоимости.
Пророк построил прогноз на будущее, выдал значения на следующие периоды и отправил их в XGBoost. Где-то здесь, в этих двух оранжевых точках, находятся наши лучшие индивидуальные результаты.
Но этого результата нам не хватило, чтобы попасть в топ.
Изучив обычную корреляционную матрицу лучших представлений, мы увидели следующее: деревья — и это логично — показали корреляцию, близкую к единице, а лучшее дерево дал XGBoost. Он не показывает столь высокую корреляцию с линейной регрессией.
Мы решили смешать эти два варианта в соотношении 8 к 2. Так мы получили лучшее итоговое решение.
Это таблица лидеров с результатами.
Наша команда заняла второе место по моделям без ограничений и первое место по линейным моделям.
Что касается оценки, то здесь все значения достаточно близки.
Разница не очень большая.
По линейной регрессии шаг уже около 5. Все готово, спасибо! Теги: #Машинное обучение #спортивное программирование #scikit-learn #xgboost #catboost #линейная регрессия
-
Такси Ждет Вас На Сайте Taxi.yandex.ru.
19 Oct, 24 -
Богемская Рапсодия В «Железном» Исполнении
19 Oct, 24