September 14, 2018

Анализ больших данных помогает нам выявлять «сомнительных» клиентов. И вот как

Разработчик в банке «Точка» Андрей Созыкин поделился кейсом компании по анализу платежей с помощью технологии больших данных и объяснил, зачем они это делают.

Зачем это нужно?

Банки, которые обслуживают юридические лица и индивидуальных предпринимателей, должны выполнять требования регулирования. Одно из важных требований содержится в законе 115-ФЗ «О противодействии легализации (отмыванию) доходов, полученных преступным путем, и финансированию терроризма». Банк должен проверять платежи всех клиентов на соответствие этому закону. Если он делает это плохо, то у него могут отозвать лицензию. Таким образом очень важно выявлять клиентов, которые выполняют сомнительные платежи, и применять к ним меры противодействия легализации доходов, вплоть до закрытия счета.

Как по операциям определить, что клиент «сомнительный»? Центральный Банк выпускает методические рекомендации. Их достаточно много, среди наиболее важных признаков сомнительных клиентов можно указать:

  • налоговая нагрузка меньше 0,9% к дебетовому обороту (сумма исходящих платежей);
  • не платится зарплата, аренда и другие типичные платежи;
  • остатки денег на счете малы по сравнению с оборотом;
  • назначения поступлений на счет не совпадают с назначениями затрат;
  • деньги приходят с НДС, а уходят без.

От онлайн-проверки операций до анализа больших данных

Ранее для поиска сомнительных платежей в «Точке» использовалась онлайн-проверка. Каждая операция при поступлении проверяется по ряду правил. Если проверка прошла успешно, то операция выполняется, в противном случае в переводе денег будет отказано.

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

Другой недостаток онлайн-проверки заключается в том, что она выполняется по набору правил для выявления типичных «схем».

Правила анализируются по отдельности, нет возможности получить целостную картину. Кроме того, «схемы» меняются со временем. Служба комплаенс обновляет правила регулярно, но не все получается.

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

Как мы анализируем платежи с помощью больших данных

Для реализации предлагаемого решения использовался кластер Hadoop из пяти узлов. Исходные данные представляют собой таблицы в Hive/SparkSQL. Программы расчета показателей реализованы на Python и выполняются в кластере с помощью PySpark.

Всего мы рассчитываем более 140 различных показателей. Среди них есть как показатели, рекомендуемые ЦБ, так и подобранные нами самостоятельно. Мы построили графы платежей сомнительных клиентов и нашли некоторые закономерности. Например, деньги перечисляются юридическому лицу (ООО), которое затем отправляет их большому количеству ИП. В отличие от юридических лиц, ИП имеют полное право снимать наличные со своего счета. В случае недобросовестных компаний, ИП снимают наличные и передают их обратно отправителю платежа.

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

Сложность, с которой мы столкнулись при разработке программ, связана с несогласованностью API Spark SQL и Spark Data Frame.

Например, в Spark Data Frame API нет функции для расчета медианы, а медиана остатка на счету лучше позволяет выявить клиентов, занимающихся «транзитом», чем среднее значение остатка. Функция расчета медианы есть в Spark SQL, поэтому наш код содержит смесь SQL-запросов и вызовов Spark Data Frame API. Поддерживать и отлаживать такой код не очень удобно.

Рассчитанные с помощью программы на PySpark показатели передаются в модель машинного обучения. Мы использовали обучение с учителем, задача классификации, два класса: «плохие» — компании, которым закрыли счета за нарушение 115-ФЗ, «хорошие» — все остальные. Обучение выполнялось на данных за второй квартал 2018, тестирование на июле 2018.

Мы пробовали несколько моделей: логистическая регрессия, решающее дерево, нейронная сеть и XGBoost. Лучше всего заработали логистическая регрессия и XGBoost. Качество XGBoost выше, но логистическая регрессия интерпретируема.

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

Сомнительные компании найдены, что дальше?

Если модель машинного обучения показывает, что компания «подозрительная», что дальше с ней делать? Модель находит компании, отличающиеся от законопослушных, но не обязательно, что они нарушают закон! Возможно, у компании есть счет в другом банке, налоги и зарплата платятся там. Или платежи обусловлены характером бизнеса.

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

Итоги

Поиск «сомнительных» клиентов — это критическая для существования банка задача: Центральный Банк может лишить лицензии, если сомнительного оборота много.

В предложенном решении используются совместно большие данные (расчет 140 показателей платежей всех клиентов банка за 3 месяца) и машинное обучение (анализ предварительно рассчитанных показателей и определение сомнительных клиентов). Используемая ранее онлайн-проверка работает параллельно.

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

Источник