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

Этот процесс подготовки данных называется проектированием функций. В зависимости от типов необработанных данных разработка функций может занять много времени. В последнее время большое внимание уделяется автоматизации проектирования функций на основе реляционных данных [1,2] по следующим причинам:

Последние 2 года мы работали над автоматизацией проектирования функций для реляционных данных. Начиная с расширения [2] метода Deep Feature Synthesis (DFS), опубликованного группой исследователей из Массачусетского технологического института [1], мы недавно предложили структуру глубокой нейронной сети, которая изучает функции на основе реляционных данных вместо разработки функций [3].

Наши методы смогли завоевать «поздние» медали в соревнованиях Kaggle, где данные имеют сложные реляционные графы. В этой статье я кратко представлю основные идеи, лежащие в основе наших методов, и выделю ключевые достижения в соревнованиях Kaggle.

Разработка функций на основе реляционных данных

Реляционные данные состоят из набора таблиц и реляционных связей между таблицами через первичные / внешние ключи. На следующем рисунке мы видим набор данных игрушек с 3 таблицами и их реляционными ссылками. Предположим, что цель нашей задачи анализа данных - предсказать для каждого пользователя в основной таблице, является ли он лояльным пользователем.

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

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

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

Автоматизация проектирования функций

Чтобы автоматизировать этот процесс, мы должны дать ответы на следующие вопросы:

  • Какой запрос на соединение мы должны выдать, чтобы присоединиться к таблицам базы данных?
  • Какие преобразования совместных результатов приводят к сильно коррелированным характеристикам с целью?

К сожалению, первый вопрос является NP-сложной задачей (см. Нашу статью о том, как эта проблема эквивалентна поиску пути Гамильтона в графе). К счастью, эта сложность представляет собой анализ наихудшего случая. На практике наши наблюдения показывают, что простые политики обхода графа могут давать очень полезные функции (см. Статью [2,3] для получения более подробной информации).

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

Деревья отношений

Для каждого пользователя в таблице пользователей на рисунке 1, следуя пути присоединения [Select product_price from ((основные присоединяются к заказам через UserID) присоединяется к продукту через ProductID)], мы можем получить общий результат, который можно представить в виде дерева следующим образом:

Мы называем данные деревья реляционным деревом. Реляционные деревья на рисунке 2 соответствуют UserID = 1 и UserID = 2. Мы можем интерпретировать дерево пользователя 1 следующим образом. Корневой узел соответствует идентификатору пользователя, узлы на глубине = 1 - это транзакции (порядок 1 и 4), выполняемые пользователем 1, а узлы на глубине = 2 - это цены продукта в каждой транзакции.

Преобразование реляционного дерева

Учитывая реляционное дерево t, проектирование функций ищет преобразование дерева f (t) в числовой вектор фиксированного размера. Это может быть сделано путем расширения функций агрегирования на каждом уровне дерева, как сделано в [1], или путем выравнивания деревьев и применения некоторых эвристических преобразований [2], как показано на рисунке 3.

Расширение функций агрегирования Среднее и Максимальное в корне и на первом уровне дерева дает функцию, соответствующую средней максимальной цене продукта в транзакциях. Оба метода в [1] и [2] являются решениями на основе правил, которые создают функции на основе эвристики. Несмотря на то, что подходы, основанные на правилах, работают хорошо, их недостатком является то, что они могут не создавать соответствующих функций для какой-либо проблемы, поскольку правила заранее определены как a priori.

Изучение функций

Если объем данных велик, почему бы нам не изучить преобразования на основе данных, а не заранее определить их априори? Эта идея выглядит практически многообещающей, потому что недавно размеченные наборы данных велики. Единственная проблема заключается в том, что входные данные для нашего ученика представляют собой сложную структуру: реляционное дерево, где он может иметь временной порядок на каждом уровне дерева, а данные на листе дерева не ограничиваются только числовыми данными.

Тем не менее, благодаря недавним разработкам в области репрезентативного обучения, все указанные проблемы могут быть решены с помощью следующей глубокой структуры нейронной сети. Мы называем предложенную структуру сети реляционной рекуррентной нейронной сетью (r2n). R2n деревьев на рисунке 2 можно увидеть на рисунке 4.

Подобно [1], где он дополняет каждый уровень дерева функцией агрегирования, наша сеть r2n, с другой стороны, обучает RNN (или LSTM, или GRU), совместно используемую на каждом уровне дерева. RNN принимает входные данные из выходных данных дочерних узлов и преобразует эти входные данные в выходные данные, которые отправляются на следующие уровни. По сути, ожидаемый результат является целью задачи прогнозной аналитики. Поскольку RNN является приближением универсальной функции, ожидается, что он будет приближать любую функцию агрегирования.

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

Объединение нескольких r2n

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

Достижения

Мы опробовали наши подходы на трех разных завершенных соревнованиях Kaggle. На следующем рисунке показана информация о ранжировании нашего подхода (пунктирная линия) по сравнению с другими участниками.

Наши решения попали в топ 2% в соревновании по прогнозированию купонов (позднее серебряная медаль), в лучшие 6,5% в конкурсе KDD Cup 2014 (поздняя серебряная медаль) и в лучшие 7,7% в соревновании по прогнозированию Grupo Bimbo (поздняя бронзовая медаль).

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

Ссылки

[1] Макс Кантер и др. Глубокий синтез функций: на пути к автоматизации усилий в области науки о данных. IEEE DSAA 2015 г.

[2] Хоанг Тхань Лам, Иоганн-Майкл Тибаут, Матье Синн, Бей Чен, Тиеп Май, Ознур Алкан. Однокнопочная машина для автоматизации проектирования функций в реляционных базах данных. Arxiv 2017

[3] Хоанг Тхань Лам, Тран Нгок Мин, Матье Синн, Бит Буссер, Мартин Вистуба. Возможности обучения реляционным данным. Arxiv 2018