Чтобы управлять всей нашей рабочей нагрузкой по машинному обучению, в Insider мы разработали собственную платформу автоматического машинного обучения; Дельфы. Название происходит от знаменитого святилища в Древней Греции, которое считалось центром мира. Точно так же Delphi является центром наших продуктов на основе машинного обучения.

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

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

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

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

Для задания выбора требуется параметр алгоритма, чтобы знать, какие хранилища объектов используются алгоритмом. Существует несколько хранилищ функций для различных видов информации. Если мы хотим предсказать, удалит ли пользователь приложение со своего телефона, мы будем ссылаться на Mobile Feature Store, где у нас есть информация об их устройстве и их действиях на мобильной платформе. Если мы хотим предсказать, откроет ли пользователь электронное письмо или нет, тогда необходимая нам информация хранится в хранилище функций электронной почты; где мы храним функции, связанные только с привычками пользователей к электронной почте.

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

Во время статистического отбора задание сортирует доступные функции и создает группы пар функций и меток различных типов.

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

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

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

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

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

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

Мы будем продолжать исследовать и проводить эксперименты на нашем конвейере, чтобы достичь наилучшей возможной версии.