Отдел кредитных рисков ежедневно анализировал тысячи новостей — мы заменили его моделью машинного обучения

И сократили затраты на сотрудников в 40 раз.

В закладки

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

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

Проблематика

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

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

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

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

Решение

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

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

Процесс перевода текста в числовое представление называется векторизацией. Этот процесс также можно производить различными методами. В нашем случае лучше всего подошёл TF-IDF.

Эта модель векторизации учитывает частоту вхождения слова как в отдельную новость, так и в полный перечень новостей. Например, рассмотрим слово «деньги». Алгоритм анализирует, в скольких новостях встречается «деньги», пусть это 20% (a = 0.2).

А также сколько раз встречается слово «деньги» в конкретной новости — 6% (b = 0.06). Так выглядит формула (пояснение ниже):

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

После получения «числового» представления новостей происходит подбор оптимального метода классификации. В этой задаче после серии экспериментов с разными алгоритмами, включая глубокие нейронные сети, лучше других оказался линейный классификатор (SGDClassifier). Это, в частности, объясняется небольшим размером датасета.

Если попытаться графически изобразить работу SGDClassifier, получим следующее:

Каждая точка в многомерном пространстве (для простоты восприятия на картинке 3D) представляет собой отдельную новость. Алгоритм строит поверхность таким образом, чтобы с одной стороны оказались важные новости, а с другой неважные.

Дальнейшее предсказание «важности» новости зависит от того, по какую сторону от этой поверхности она оказалась. Следует отметить, что размеченные новости делятся на две части. Одна часть используется для обучения алгоритма (построения поверхности), а другая часть новостей используется для проверки эффективности обученного алгоритма.

В итоговом интерфейсе это выглядит следующим образом (статьи выбраны случайно, для примера):

Релевантная новость
Нерелевантная новость

Результаты

Первый же тест на потоке свежих новостей показал точность в 75%. Модель не ограничена количеством новостей, которые она может обработать. Единственное возможное ограничение — точность распознавания, однако она повышается дообучением — обогащением датасета и добавлением новых примеров.

Сегодня точность достигает 80%. Если посчитать результат в деньгах, то 1500–2000 новостей в день должны были обрабатывать минимум три человека (при условии, что человек тратит на одну новость не более минуты). Теперь это количество сократилось до 20–30 новостей в день с учётом дублей (перепечатка одной новости разными источниками). Минимальная сумма экономии — два годовых оклада, с налогами около 3,6 млн рублей.

По результатам работы мы получили следующий комментарий.

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

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

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

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

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

Финансовый рынок не стоит на месте, будут создаваться новые продукты и решения, которые нужно уметь обрабатывать. Наша компания идёт по пути дигитализации, где мы отдаём машине всё, что не может (рутинные, затратные процессы) или не успевает делать человек, но без людей, естественно, пока в риск-менеджменте не обойтись.

ООО УК «Альфа-Капитал»

#машинноеобучение #искусственныйинтеллект

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Евгений Ботвиновский", "author_type": "self", "tags": ["\u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","\u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439\u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442"], "comments": 6, "likes": 24, "favorites": 27, "is_advertisement": false, "subsite_label": "dev", "id": 64714, "is_wide": false, "is_ugc": true, "date": "Tue, 16 Apr 2019 16:05:34 +0300" }
Акции банка «Тинькофф»
19,16$
0,04$
{ "id": 64714, "author_id": 241437, "diff_limit": 1000, "urls": {"diff":"\/comments\/64714\/get","add":"\/comments\/64714\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/64714"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 235819, "last_count_and_date": null }

6 комментариев 6 комм.

Популярные

По порядку

Написать комментарий...
0

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

Ответить
0

Добрый день, спасибо за комментарий. Можем применить. Подводные камни - это собрать датасет.

Ответить
0

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

Ответить
0

У меня например сейчас собран датасет в текстовом виде. Задача отсеять 95% шлака. Я бы с радостью автоматизировал отсев (например, руками профессионалов в ии), но для этого алгоритму нужно как-то объяснить что шлак, а что нет.

Ответить
0

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

Ответить
0

Делал похожую поделку. Распарсил новостной сайт за год (брал только заголовки). Слова нормализовал и отрезал пустые слова по стоп-листу. Затем графиком нарисовал частоту упоминания этого слова за день: гипотеза в том, что если какое-то явление начинает маячить день-два, то это какой-то локальный хайп, особенно если это упоминание компании, и надо его затестить на корреляцию с ценой акции.
Нужно прикрутить named entity recognition обязательно, а то слов много, а смысла мало)

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Голосовой помощник выкупил
компанию-создателя
Подписаться на push-уведомления
{ "page_type": "default" }