Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40_алгоритмов_Python.pdf
Скачиваний:
9
Добавлен:
07.04.2024
Размер:
13.02 Mб
Скачать

140

Глава 5. Графовые алгоритмы

1.Итерация начинается с верхней вершины, Amin.

2.Затем алгоритм переходит на второй уровень, Wasim. Оттуда он движется к нижним уровням, пока не достигнет конца — вершин Imran и Fares.

3.После завершения первой полной ветви он возвращается назад, после чего переходит на второй уровень, чтобы перейти к вершинам Nick и Mike.

Схема обхода показана на рис. 5.17.

Обратите внимание, что DFS также можно использовать для работы с деревьями.

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

ПРАКТИЧЕСКИЙ ПРИМЕР — ВЫЯВЛЕНИЕ МОШЕННИЧЕСТВА

Давайте посмотрим, как мы можем использовать SNA для выявления мошен­ ничества. Поскольку люди являются социальными животными, считается, что на человеческое поведение влияют окружающие. Термин гомофилия был пред­ ложен для обозначения влияния на человека его личной сети социальных свя­ зей. Расширяет эту концепцию понятие гомофильная сеть — группа людей, которые, вероятно, связаны друг с другом благодаря какому-то общему факто­ ру. Например, они могут иметь одинаковое происхождение или хобби, быть членами одной банды‚ учиться в одном университете, или их может объединять некоторая комбинация других факторов.

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

Чтобы понять данный процесс, сначала обратимся к простому случаю. Пред­ ставим сеть из девяти человек: девять вершин и восемь ребер. Известно, что четверо членов сети — мошенники, то есть четыре вершины классифицируются как мошеннические (fraud, F). Остальные пятеро участников потенциально чисты перед законом — эти вершины классифицируются как не мошеннические (nonfraud, NF).

Практический пример — выявление мошенничества

141

Рис. 5.17

Для создания такого графа напишем код‚ состоящий из следующих шагов: 1. Прежде всего импортируем нужные библиотеки:

import networkx as nx

import matplotlib.pyplot as plt

142

Глава 5. Графовые алгоритмы

2. Определим структуры данных vertices и edges:

vertices = range(1,10)

edges= [(7,2), (2,3), (7,4), (4,5), (7,3), (7,5), (1,6),(1,7),(2,8),(2,9)]

3. Создадим экземпляр графа:

G = nx.Graph()

4. Нарисуем сам граф:

G.add_nodes_from(vertices) G.add_edges_from(edges) pos=nx.spring_layout(G)

5. Далее определим NF-вершины:

nx.draw_networkx_nodes( G,pos, nodelist=[1,4,3,8,9], with_labels=True, node_color='g', node_size=1300)

6.Теперь создадим вершины, которые, как нам заранее известно, причастны к мошенничеству:

nx.draw_networkx_nodes(G,pos, nodelist=[2,5,6,7], with_labels=True, node_color='r', _size=1300)

7. Создадим метки для вершин:

nx.draw_networkx_edges(G,pos,edges,width=3,alpha=0.5,edge_color='b' ) labels={} labels[1]=r'1 NF' labels[2]=r'2 F' labels[3]=r'3 NF' labels[4]=r'4 NF' labels[5]=r'5 F' labels[6]=r'6 F' labels[7]=r'7 F' labels[8]=r'8 NF' labels[9]=r'9 NF' nx.draw_networkx_labels(G,pos,labels,font_size=16)

Если запустить код выше, то мы увидим граф, подобный этому (рис. 5.18).

Обратите внимание, что мы уже провели тщательный анализ с целью класси­ фикации каждой вершины как F или NF. Предположим, что мы добавляем в сеть еще одну вершину с именем q, как показано на следующем рисунке. У нас нет никакой предварительной информации об этом человеке и о том, причастен ли он к мошенничеству. Мы хотим классифицировать его как NF или F на основе его связей с существующими членами социальной сети (рис. 5.19).

Практический пример — выявление мошенничества

143

6 F

 

1 NF

5 F

 

7 F

4 NF

 

3 NF

 

2 F

 

9 NF

8 NF

 

 

Рис. 5.18

 

6 F

?

 

 

 

1 NF

 

5 F

 

 

 

7 F

4 NF

 

 

3 NF

 

 

 

2 F

 

9 NF

 

8 NF

Рис. 5.19

Мы разработали два способа классифицировать нового участника q как F или NF:

zz Простой метод, в котором не используются показатели центральности и до­ полнительная информация о типе мошенничества.

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

Мы подробно обсудим каждый метод.