tldr: иногда вы можете потерпеть достаточно неудачу, чтобы выиграть.

В конце января моя команда, состоящая из Паша, Перри и меня, выиграла первый раунд второго хакатона DAC (Центр аналитики данных), на этот раз заказчиком выступил пожарно-спасательный НЮУ.

Как и в большинстве хакатонов, ориентированных на данные, цель состояла в том, чтобы взять заданный набор данных и создать из него что-то значимое (в порядке важности идеи ‹ модель ‹ аналитический продукт). Я попытался задокументировать процесс и свои выводы из него.

Формат этого типа хакатона представляет собой 3 раунда 24-часовых спринтов (что-то гибкое) в 4 командах по 3 человека. В каждом раунде выдвигаются идеи-победители, которые дорабатываются в последующих раундах (проходящих раз в две недели), при этом члены команд из проигравших команд получают поглощаются «победившими» командами, образуя более крупные группы.

Цель этого раунда заключалась в том, чтобы спрогнозировать пожар с учетом нескольких ограничений, таких как время подачи сигнала тревоги, повторение, тип сигнала тревоги, местоположение и т. д. для кампуса Университета Нового Южного Уэльса. В связи с тем, что 97% их вызовов являются ложными тревогами, они хотели бы масштабировать свои действия в соответствии с вероятностью того, что тревога была реальной (в законодательстве говорится, что они по-прежнему должны реагировать на все пожарные тревоги). С этой целью был предоставлен набор данных с приведенной выше информацией за 2013–2016 годы.

Я разбил основные события 24-часового периода ниже:

  1. Собирая информацию:

Мы начали с попытки немного изучить набор данных и поиграть с ним. Предоставленный набор данных содержал около 700 записей с примерно 20 реальными пожарами. Условия, указанные в наборе данных для реальных и ложных тревог, были невероятно похожи. Для изучения базового набора данных было выполнено быстрое табло, но закономерности, которые мы видели, оказались слабыми, чтобы их можно было использовать для прогнозирования. Организаторы/судьи знали об ограничениях наборов данных (они не смогли получить полные данные вовремя), но хотели, чтобы мы все равно продолжили, чтобы посмотреть, что мы можем произвести.

Очевидно, требовалось больше данных (на данный момент я слегка запаниковал). Мы начали с получения данных о погоде для набора данных (спасибо Пашу), пока я искал информацию о ключевой дате UNSW (в качестве предиктора занятости).

Наконец, мы попытались объединить данные в csv для использования в моделировании.

2. Попытка использования указанной информации:

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

Поскольку никаких закономерностей не появлялось, я полностью запаниковал. Я решил использовать нейронную сеть в Theano (чтобы соответствовать имеющимся значениям) и попробовать сделать прогноз. Это с треском провалилось из-за различных технических проблем при использовании этого нового набора данных, а не одного из наборов данных по умолчанию (подробнее об этом в следующем посте). К сожалению, к моменту презентации это было невозможно исправить.

Перри удалось доказать, что набор данных является плохим предиктором с помощью сглаживания ядра и дисперсионного анализа. Важно отметить, что он смог вставить это в пользовательский интерфейс с ioslides (что довольно удивительно), который использовался для финальной презентации.

3. Представление модели и информации:

Вся презентация была сделана с помощью R, что позволило встроить пользовательский интерфейс (до сих пор не могу понять, насколько потрясающе это получилось с ioslides).

Важно, чтобы информация была контекстуализирована. Графическое представление (спасибо Пашу за табличное представление) различных типов сигналов тревоги было полезным, поскольку оно помогло нам понять наши точки зрения. По сути, мы говорили о некоторых возможных шаблонах данных и о том, как с ограниченным набором было бы нелогично делать прогнозы.

Отсутствие возможности извлечения данных было отмечено всеми командами как проблема, и организаторы пообещали больше данных для следующего раунда.

Положительные стороны:

  • Командная работа: к настоящему моменту мы понимаем свою роль в команде и знаем, как взяться за дело.
  • Исследование: была очень большая идея «дать вещи трещину» отчасти из-за разреженности данных.
  • Обмен идеями: как внутри нашей команды, так и питчинг стал проще, а сам питчинг кажется более уверенным и плавным.
  • Избыточность: после того, как мой код эффектно провалился (на что я немного соленый), Паш и Перри работали над своим вкладом и предоставили рабочий код и чертовски хорошую презентацию.

Минусы:

  • Разреженность набора данных означала, что можно было сделать не так много интересных научных данных (вероятностное моделирование склонно к ошибкам в такого рода наборах данных из-за небольшого количества реальных положительных результатов).
  • Технические проблемы с моей стороны

Выводы:

Не используйте инструмент низкого уровня, если вы не знаете его достаточно хорошо для хакатона (что должно было быть очевидным). До хакатона я экспериментировал с theano и работал с примерами. По своей наивности я ожидал, что смогу просто перенастроить нужные мне фрагменты кода и подключить набор данных, который нам нужно было использовать.

В том же ключе инструменты прототипирования чрезвычайно полезны для сценариев типа хакатона. Они не обязательно масштабируются с размером проблемы, но иметь что-то интерактивное для демонстрации во время презентации, а не просто цифры и графики, чрезвычайно полезно.

В «Бельмонте» Хемингуэя «И восходит солнце» тореадор описывается как делающий все возможное, когда он небезопасно работал в «бычьей местности». По мере того, как он становится старше (и возвращается после выхода на пенсию), он отказывается от этого подхода и ведет себя осторожнее в «земле тореадора». В этом случае взаимодействие с «территорией данных» заключалось в том, чтобы атаковать ее в лоб и показать, почему она не работает, что является довольно небезопасным подходом (любая команда могла бы сделать прогноз и выбить нас из воды). В книге также подчеркивается, что он пытается оправдать свою репутацию с юности, что может стать проблемой в следующем раунде.

Короче говоря, это был отличный хакатон, и, хотя меня раздражает личное отсутствие успеха, я очень рад, что наша команда преуспела и насколько мы немного выросли с момента нашего первого хакатона всего 6 месяцев назад.