Клиент банка может совершить до нескольких тысяч транзакций с использованием дебетовых и кредитных карт в год. Банк, в свою очередь, хранит на своей стороне всю историю транзакций пользователей.
В результате генерируется огромный объем данных, достаточный для того, чтобы на данный момент его смело можно было назвать модным словом BigData. Ученые, работающие с данными, любят, когда для решения задачи доступен большой объем информации, поскольку все методы машинного обучения сводятся к выявлению зависимостей между данными и целевой переменной — чем больше объем данных и чем богаче описание атрибута, тем сложнее Зависимости можно обнаружить путем увеличения сложности моделей.
Благодаря высокой плотности истории транзакций становится возможным моделировать множество целевых переменных, включая наиболее ценные для банка: дефолт клиента, проценты по кредитным продуктам, доходы клиента.
В рамках конкурса Альфа Битва 2.0 на boosters.pro участникам было предложено решить проблему кредитного скоринга, используя только данные о транзакциях клиентов за предыдущий год. После конкурса было организовано песочница , который является копией конкурса, но без ограничения по времени и без денежных призов.
Конкурсный набор данных может быть использован в научных публикациях, дипломных и курсовых работах.
Описание данных
Участникам конкурса был предоставлен набор данных по 1,5 млн выдач кредитных продуктов.Для каждого объекта выборки было составлено характерное описание в виде истории клиентских операций глубиной в один год. Дополнительно был указан тип выпускаемой продукции.
Обучающий набор состоит из задач за период N дней, тестовый набор содержит задачи за последующий период K дней.
Всего датасет содержал 450 миллионов транзакций объемом около 6 гигабайт в формате паркет .
Понимая, что такой объём данных может стать серьёзным порогом для входа, мы разделили датасет на 120 файлов и реализованы методы предварительной обработки пакетных данных , что позволило решить проблему конкуренции с личного ноутбука.
Каждая карточная транзакция была представлена как набор из 19 признаков.
Выпустив большой объем данных в открытый доступ, мы были вынуждены скрыть значение функций, присвоив им номера категорий.
Признаки карточных операций
имя функции | описание | Количество уникальных значений |
валюта | Идентификатор валюты транзакции | 11 |
вид_операции | Идентификатор типа транзакции | 7 |
тип карты | Уникальный идентификатор типа карты | 175 |
тип_операции | Идентификатор типа операции по пластиковой карте | 22 |
Operation_type_group | Идентификатор группы транзакций по карте, например дебетовая карта или кредитная карта.
| 4 |
ecommerce_flag | Знак электронной коммерции | 3 |
платежная система | Идентификатор типа платежной системы | 7 |
доход_флаг | Признак списания/зачисления средств на карту | 3 |
МСС | Уникальный идентификатор типа торговой точки | 108 |
страна | Идентификатор страны транзакции | 24 |
город | Идентификатор города транзакции | 163 |
mcc_category | Идентификатор категории хранилища транзакций | 28 |
день недели | День недели, в который была совершена транзакция | 7 |
час | Час, когда транзакция была завершена | 24 |
дней_до | Количество дней до даты выдачи кредита | 23 |
неделя года | Номер недели в году, когда была совершена транзакция | 53 |
час_дифф | Количество часов с момента последней транзакции для этого клиента | 10 |
количество | Нормализованная сумма транзакции.
0,0 - соответствует пробелам | инфа |
Метрикой, выбранной для оценки качества решений, была АУК РПЦ .
Основной подход к решению проблемы
Каждый объект выборки представлен как многомерный временной ряд, состоящий из реальных и категориальных признаков.Задачу классификации временных рядов можно решить, используя классический подход, заключающийся в генерации огромного количества признаков с последующим отбором наиболее значимых и устойчивых.
Очевидными совокупностями реальных характеристик являются: среднее значение, медиана, сумма, минимум, максимум, дисперсия за фиксированные периоды времени.
В случае категориальных признаков вы можете использовать количество вхождений каждого значения каждой категориальной переменной или пойти дальше и использовать векторы из матричных разложений или методы на их основе: LDA , БигАРТМ .
Последний из которых позволяет получить векторное представление сразу для всех категориальных признаков за счет поддержки мультимодальность .
Характеристики могут быть выбраны на основе важности, полученной популярным методом.
важность перестановки или менее популярный целевая перестановка .
Базовый подход, дающий 0,752 AUC ROC для публичного LB, можно найти по адресу мерзавец .
Архитектура нейронной сети
Задачу классификации многомерных временных рядов можно решить с помощью методов, применяемых при классификации текстов, если мысленно заменить каждое слово текста набором категориальных признаков.
В области обработки естественного языка принято присваивать каждому слову числовой вектор, размеры которого намного меньше размера словаря.
Обычно векторы слов предварительно обучаются на огромном корпусе текстовых документов с использованием методов обучения без учителя: word2vec , Фасттекст , БЕРТ , ГПТ-3 .
Основной мотивацией предварительного обучения является огромное количество параметров, которые необходимо изучить из-за большого размера словаря и обычно небольшого размеченного набора данных для решения прикладной задачи.
В этой задаче ситуация противоположная: менее 200 уникальных значений для каждой категориальной переменной и большой размеченный набор данных.
Подводя итог вышесказанному, векторное представление для каждого категориального признака можно получить с помощью стандартного метода Встраивание слоя , который работает по следующему алгоритму: вначале задается желаемый размер векторного представления, затем инициализируется матрица LookUp из определенного распределения, затем ее веса изучаются вместе с остальной частью сети с помощью метода обратное распространение ошибки .
Размер встраивания обычно выбирается равным или меньшим половины количества уникальных значений категориального атрибута.
Любой реальный атрибут можно преобразовать в категориальный атрибут с помощью операции бинаризация .
Вектор для каждой транзакции получается из конкатенации вложений, соответствующих значениям ее категориальных признаков.
Далее мы отправляем последовательность векторов транзакций в БиЛСТМ для моделирования временных зависимостей.
Затем мы избавляемся от пространственного измерения с помощью конкатенации ГлобалМакспул1D И Глобальный средний пул1D для последовательностей векторов из рекуррентного и встраивающего слоев.
В результате, предварительно пропустив полученный вектор через промежуточный полносвязный слой, остаётся лишь добавить полносвязный слой с сигмовидная решить задачу двоичной классификации.
Обучение нейронной сети
Рассмотрим архитектуру нейронной сети, предложенную участникам конкурса, как расширенный базовый уровень .Он незначительно отличается от описанного выше и содержит сотни тысяч обучаемых параметров.
Тяжелые модели имеют свойство перетренироваться, запоминая обучающий набор и показывая плохое качество на новых объектах.
На курсах машинного обучения вас учат использовать регуляризацию L1 и L2 в контексте логистической регрессии для борьбы с переобучением, мы воспользуемся этими знаниями и установим коэффициенты регуляризации для всех параметров нейронной сети.
Не забудьте использовать Dropout перед полностью подключенным слоем и Пространственный выпадение1D После слоя внедрения также стоит помнить, что вы всегда можете облегчить сеть, уменьшив размер скрытых слоев.
У нас ограниченное количество вычислительных ресурсов, поэтому возникает естественное желание использовать их максимально эффективно, ускоряя каждый цикл обучения модели, проверяя больше гипотез.
Косвенным признаком того, что обучение нейронной сети можно ускорить, является низкий уровень утилизация видеокарты.
Обычно проблема заключается в неоптимальной пакетной генерации.
Прежде всего, вам следует убедиться, что ваш генератор имеет асинхронную реализацию, поддерживающую механизм очереди.
При работе с последовательностями следует смотреть на распределение их длин.
График показывает, что распределение относится к экспоненциальному семейству; при стратегии заполнения до максимальной длины это приводит к увеличению объема входных данных в нейронную сеть на три порядка.
Простым решением этой проблемы, ускоряющим обучение в 3 раза, является подход Группировка последовательности , который предлагает разрезать набор данных на группы сегментов в зависимости от их длины и выбирать пакеты из одного сегмента.
При обучении рекуррентных слоев рекомендуется задавать такой набор параметров сети, который поддерживает Каднн -реализация, ускоряющая обучение данной задаче в пять раз.
Допустим, ваша сеть быстро обучается и не перетренируется.
Мы предлагаем вам проверить, используете ли вы все идеи из следующего списка, чтобы получить максимальное качество:
- Циклическая скорость обучения благодаря стратегии вариации LR позволяет избежать перетренированности на первой эпохе из-за низкой базовой LR и не застревать в локальных минимумах из-за стратегии пилообразного затухания.
Гиперпараметры base_lr и max_lr можно задать с помощью алгоритма LRFinder .
Кроме того, вам следует обратить внимание на политику одного цикла и Супер-конвергенция .
- Макроэкономические показатели и платежное поведение клиентов могут меняться за те N дней, за которые собиралась обучающая выборка, относительно последующих К дней, отведенных на тест. В качестве простой стратегии моделирования дрейфа во времени вы можете использовать экспоненциальное затухание весов объектов с течением времени.
- Обучив одно дерево, авторы случайного леса и градиентного бустинга не остановились на достигнутом; в случае обучения нейронных сетей лучше следовать аналогичному сценарию и обучать ансамбль нейронных сетей, используя для обучения разные подмножества объектов и изменяя гиперпараметры архитектуры.
- Каждая транзакция описывается большим количеством признаков; Выбор признаков может улучшить качество модели.
Производство
Транзакции в Hadoop обновляются раз в день, поэтому онлайн-обработка не требуется; в худшем случае нужно успеть запустить трубопровод за 24 часа.Конвейер реализован как ДАГ на расход воздуха , состоящий из следующих этапов:
- Дополнительная загрузка и агрегация новых данных на pyspasrk .
Модель использует историю транзакций каждого пользователя за предыдущий год. Оптимальный сценарий — сохранить исторические предварительно обработанные данные из предыдущего запуска модели и добавить новые данные.
Выходные данные: относительно компактный фрейм данных паркета.
- Прогнозирование на Python с использованием одного из фреймворков: tensorfow, pytorch. Выходные данные: таблица tsv, содержащая идентификатор и множество полей с предсказаниями модели.
- Загрузка прогнозов в Hadoop и на вход итоговой модели.
К счастью, модель имеет ортогональную составляющую и встраивается в бизнес-процесс как дополнение к существующим моделям.
Простой подход сочетания классических методов моделирования с нейронными сетями позволяет осуществлять независимую разработку моделей и значительно сокращает время реализации.
В заключение хотелось бы подчеркнуть, что описанный в статье подход можно использовать для классификации любых схожих по структуре временных рядов.
Полезные ссылки и материалы
smirnovevgeny/AlfaBattle2.0 github.com aizakharov94/AlfaBattle_task2 github.com Презентации по заданию 2 – Google Диск диск.google.com
Теги: #Машинное обучение #Хакатоны #искусственный интеллект #нейронные сети #Большие данные #nlp #Альфа-Банк #Карточные операции #альфа-битва-
Благотворительный Аукцион Омазе
19 Oct, 24 -
Предскажи Будущее, Хабраман
19 Oct, 24 -
Лампа Разума
19 Oct, 24 -
Скрытие Скучных Тем
19 Oct, 24 -
Pangu Выпустила Джейлбрейк Ios 8.1 Без Cydia
19 Oct, 24