machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Начало работы с анализом графов в Python с помощью панд и networkx

Дата публикации Aug 8, 2018

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

визуализация графа слов, где каждое сообщество представляет отдельную тему

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

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

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

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

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

Это будет наша база данных имитированных пользователей

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

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

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

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

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

Давайте очистим это:

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

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

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

Визуализация графика с помощью сетиx

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

Оооочень интересная картина! Но подождите, мы не можем видеть, кто эти люди, и каковы ссылки. Давайте настроим это:

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

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

Давайте вспомним, что мы сделали:

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

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

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

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

1. Обнаружение рискованного паттерна

Два способа продолжить здесь:

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

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

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

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

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

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

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

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

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

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map