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

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

Давайте сначала посмотрим на данные. Подобно любому набору данных по обнаружению мошенничества, IEEE Computational Intelligence Society (IEEE-CIS) предоставляет данные о реальных транзакциях электронной коммерции Vesta и содержит широкий спектр функций от типа устройства до функций продукта, идентификатор транзакции транзакция. дата », карточка , адрес , домен электронной почты и множество неопределенных рядов столбцов (D1-D15, M1-M9, V1-V339), и это лишь некоторые из них. Столбцы с прямым английским наименованием просты, поскольку их можно преобразовать в функции, которые можно легко ввести в алгоритмы. Проблемной частью являются неопределенные серии столбцов, поскольку их трудно связать с реальными значениями, а угадывать их только по их внешнему виду и структуре, несомненно, утомительно.

Метод 1 - Корреляционный анализ

Но вот что мы делаем. Фактически, нам не нужно знать их истинное значение в реальной жизни (помните, что алгоритм не понимает никаких данных, он просто использует шаблон данных). Скорее, нам просто нужно иметь обоснованное предположение о том, что полезно, а что является повторяющимся и избыточным. Для этого автор ввел корреляционный анализ под названием Исследовательский анализ данных (EDA), который выполняется для столбца V. С математической точки зрения это не совсем строго, но точно очень эффективно. Автор подсчитал значения NaN для каждого столбца V и составил сводную таблицу на основе результата и рассмотрел функции, которые имеют одинаковое количество значений NaN, как распределенные аналогичным образом. Только несколько характеристик каждой группы, распределенной одинаково, выживут и будут выбраны в качестве допустимых входных данных, которые в конечном итоге будут введены в алгоритм.

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

Учитывая тепловую карту, функции можно разделить на несколько подгрупп, каждая из которых представляет собой набор высококоррелированных функций. В этом примере это [[V1], [V2, V3], [V4, V5] ,, [V6, V7], [V8, V9], [V10, V11]]. С технической точки зрения, выбор случайного признака из каждой подгруппы будет служить цели. Но для того, чтобы максимизировать объяснительную силу выбранных функций, автор углубился в распределение функций и выбрал тот, у которого больше уникальных значений. Однако этот процесс выбора внутри подгруппы не является обязательным, поскольку более уникальное значение может означать больше шума и, следовательно, ухудшать чистоту данных. Однако это также скорее предположение, чем подтверждение. По моему личному мнению, я бы просто случайным образом выбрал по одному из каждой подгруппы, чтобы попытаться сохранить исходный характер каждой функции.

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

Метод 2 - конкатенация и агрегирование признаков

Стандартные методы разработки функций включают в себя нормализацию, конкатенацию двух или нескольких строк (объединение любых двух или более текстовых функций с помощью «_» или «-») и частотное кодирование (подсчет частоты каждого значения в столбце). Чтобы протестировать каждую созданную функцию, просто запустите алгоритм прогнозирования и A / B-тест, чтобы увидеть, вносит ли функция дополнительный балл локальной проверки. Применяя эту технику к каждой функции, оставшейся с последнего шага, мы можем по крайней мере сгенерировать некоторые действительные функции, которые имеют решающее значение для увеличения окончательной оценки валидации на ощутимую величину.

Техника 3 - Согласованность во времени

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

Учитывая временную чувствительность данных временных рядов, разумно предположить, что любая функция, не прошедшая тест на согласованность во времени, должна быть исключена. Автор использовал логически наивный способ проверки согласованности во времени. Для каждой функции было построено 242 модели и только одна функция. Каждая модель была обучена в первый месяц обучающих данных и предсказана на последнем месяце обучающих данных. Пороговое значение AUC (Площадь под кривой) устанавливается для фильтрации достоверности функций. Автор указал 0,5 в качестве порога, но, по моему личному мнению, выбор может варьироваться от проблемы к проблеме и, безусловно, спорен даже в общем смысле. В результате было отфильтровано 19 функций.

Техника 4 - Волшебный трюк

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

Попробуем разобраться в технике на примере, который проиллюстрировал автор.

«Магия - это две вещи. Сначала нам нужна переменная UID для идентификации клиентов (кредитных карт). Во-вторых, нам нужно создать агрегированные групповые функции. Затем убираем UID. Предположим, у нас было 10 транзакций A, B, C, D, E, F, G, H, I, J, как показано ниже ».

«Если мы будем использовать только FeatureX, мы сможем правильно классифицировать 70% транзакций. Ниже желтые кружки обозначают isFraud = 1, а синие кружки - транзакции isFraud = 0. После того, как модель дерева ниже разделяет данные на левый дочерний элемент и правый дочерний элемент, мы прогнозируем isFraud = 1 для левого дочернего элемента и isFraud = 0 для правого дочернего элемента. Таким образом, 7 из 10 прогнозов верны ».

«Теперь предположим, что у нас есть UID, который определяет группы, и мы создаем агрегированную функцию, взяв среднее значение FeatureX в каждой группе. Теперь мы можем правильно классифицировать 100% транзакций. Обратите внимание, что мы никогда не используем UID функции в нашем дереве решений ».

Более простой способ понять, почему это работает, - это предположить, что функция X - это деньги, которые клиент тратит на каждую транзакцию с кредитной картой. Клиент с UID = 1 в среднем тратит 0,75, в то время как клиент с UID = 3 тратит в среднем 0,66. Тогда любая сумма, потраченная определенным клиентом, которая значительно отличается от этих средних значений, может быть хорошим предиктором мошенничества. Целью этой конструкции является создание новых функций с такими именами: «D9_uid_mean» и «D15_uid_std». Вычисление настолько простое, насколько кажется, для каждого образца его значение «D9_uid_mean» равно среднему значению всех значений «D9» с тем же UID, что и в первых нескольких столбцах этого образца. После постройки мы добавляем все эти новые функции в поезд и тестовый набор.

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