Графический анализ - не новая отрасль науки о данных, но и не обычный метод, который сегодня используют специалисты по данным. Однако есть некоторые безумные вещи, на которые способны графики. Классические варианты использования варьируются от обнаружения мошенничества до рекомендаций или анализа социальных сетей. Неклассический вариант использования в НЛП связан с извлечением тем (граф слов).

Рассмотрим вариант использования обнаружения мошенничества

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

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

Давайте сделаем это на Python.

Настройка данных, очистка и создание нашего графика

Итак, вы начинаете с pandas DataFrame (который в основном представляет собой таблицу Excel в Python)

Хорошо, данные загружены в df. Теперь немного о подготовке. Вам необходимо подключить людей (представленных их идентификаторами), которые имеют одинаковый номер телефона и адрес электронной почты. Начнем с номера телефона:

Наши данные выглядят так:

Хорошо, у нас здесь есть кое-какие связи, но есть 2 проблемы:

  1. люди связаны с собой
  2. Когда X связан с Y, тогда Y также связан с X, и у нас есть две строки для одного и того же соединения.

Давайте уберем это:

Наши данные теперь выглядят так:

Отлично, 1 и 3 связаны, а также 5 и 6. То же самое мы делаем с адресами электронной почты (полный код приведен в конце статьи). А теперь построим график. Я расскажу здесь только о простой части кода, так как добавить разные типы ссылок немного сложно.

Теперь давайте визуализируем наши данные.

Визуализация графиков с помощью networkx

Простой nx.draw (G) дает нам следующее:

Уууу довольно интересный узор! Но подождите, мы не можем увидеть, кто эти люди и каковы ссылки. Давайте настроим его:

Хорошо поймал! 4 человека связаны друг с другом по 2 разным телефонным номерам и 1 адресу электронной почты ... Необходимо провести еще несколько расследований!

Следующие шаги к настоящей индустриализации

Подведем итоги того, что мы сделали:

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

Если вы ориентированы на бизнес и ожидаете, что некоторые эксперты воспользуются тем, что вы сделали, вам следует сосредоточиться на следующем:

  1. Автоматизация процесса поиска нескольких людей, связанных вместе, или обнаружение рискованных закономерностей
  2. Автоматизация процесса создания визуализаций и создания настраиваемой панели мониторинга с визуализацией графиков и необработанными данными

Я не буду здесь вдаваться в подробности, но дам вам идеи о том, как выполнить эти 2 шага.

1. Обнаружение рискованных шаблонов

Здесь можно действовать двумя способами:

  1. переходите от людей, которых вы считаете опасными (или тех, кого вы сочли мошенниками), и проверяйте их отношения с другими людьми. Если говорить о машинном обучении, это был бы своего рода «контролируемый» метод. Чтобы пойти дальше, вы также можете начать с оценки машинного обучения, определить узлы с наивысшим баллом и искать их связи на графике, чтобы поймать больше узлов.
  2. Выявите необычные шаблоны (слишком много соединений, плотная сеть…). Это будет «неконтролируемый» метод, аналогичный обнаружению аномалий / выбросов.

В нашем примере у нас нет известных мошенников, поэтому мы воспользуемся вторым методом.

В Networkx уже реализованы алгоритмы именно для этого: степень (), центральность (), pagerank (), connected_components ()… Я позволю вам определить, как математически определить риск.

2. Создание визуализаций и автоматизация анализа для бизнеса.

Для большинства специалистов по обработке данных это будет звучать старой школой, но быстрый способ сделать это - использовать Excel.

Пакет xlsxwriter помогает вставлять данные из графика рискованных людей и вставлять изображение созданного графика прямо в файл Excel. Вы получите панель управления для каждой опасной сети, например:

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

Я надеюсь, что вы нашли эту статью полезной, и если да, подумайте о том, чтобы дать как минимум 50 аплодисментов :)

И, как обычно, исходный код