Анализ социальных сетей: от теории графов до приложений на Python |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-03-25 03:19 Теория сетей Начнем с краткого введения в базовые компоненты сети: узлы и ребра.
Эти два базовых элемента способны описывать множество явлений: социальные связи, виртуальную сеть маршрутизации, физические электросети, дорожную сеть, сети биологических связей и прочие отношения. Реальные сети Реальные и, в частности, социальные сети обладают уникальной структурой, которая обычно отличает их от случайных математических сетей.
Меры центральности Централизованные узлы играют ключевую роль в сети, выступая в качестве центров для различных тенденций. Определение и значимость центральности могут различаться от случая к случаю и ссылаться на различные показатели. Примеры указаны ниже.
Меры варьируются в зависимости от сценария: ранжирование (page-rank), обнаружение критических точек (betweenness), транспортные узлы (closeness) и прочие. Построение сети Для построения сетей подойдет любой набор данных, в котором можно описать связи между узлами. В данном примере мы построим и визуализируем сеть голосования для Евровидения 2018 на основе официальных данных. Для этого воспользуемся пакетом Python Networkx. Мы прочитаем данные из файла Excel в датафрейм Pandas, чтобы получить табличное представление голосов. Каждая строка включает все голоса из определенной страны. Мы распределим набор так, чтобы в каждой из них был представлен один голос (ребро) между двумя странами (узлы). Затем построим ориентированный граф с помощью Networkx из edgelist, с которым мы работаем в формате датафрейма Pandas. И наконец, для визуализации мы применим метод обобщения, как показано во фрагменте кода ниже. votes_data = pd.read_excel('ESC2018_GF.xlsx',sheetname='Combined result') votes_melted = votes_data.melt( Визуализация Встроенный метод
Теперь построим компоненты сети по частям. countries = pd.read_csv('countries.csv',index_col='Country') pos_geo = { node: ax=plt.gca() trans = ax.transData.transform tick_params = {'top':'off', 'bottom':'off', 'left':'off', 'right':'off', styles = ['dotted','dashdot','dashed','solid'] # line styles pos = pos_geo # Построение узлов Новая фигура лучше читается и предоставляет краткий обзор голосов. В качестве общего примечания стоит добавить, что построение сетей — как правило, нелегкий процесс, требующий внимательно выбирать компромиссы между количеством представленных данных и передаваемым сообщением. Вы также можете попробовать другие инструменты визуализации сетей, например Gephi , Pyvis и GraphChi. Поток информации Для описания этого процесса распространения информации часто используются две популярные базовые модели. Линейный порог определяет поведение, при котором влияние накапливается от нескольких соседей узла и активируется, только если превышает определенный порог. Такое поведение типично для рекомендаций фильмов: совет от одного из друзей может в конечном счете убедить человека посмотреть кино, если он услышит его и от нескольких других людей. В модели независимых каскадов каждый из активных соседей узла может потенциально и независимо активировать его. Этот процесс напоминает распространение вирусной инфекции: каждое социальное взаимодействие может привести к заражению. Пример потока информации Чтобы проиллюстрировать процесс распространения информации, воспользуемся сетью “Буря мечей”, основанной на персонажах сериала “Игра престолов”. Сеть сконструирована на совместных появлениях героев в книге “Песнь льда и огня”. Опираясь на модель независимых каскадов, мы попытаемся отследить динамику распространения слухов, которые часто встречаются в этом сериале. Внимание, спойлер! Предположим, что в самом начале Джон Сноу ни о чем не знает, а двое его верных друзей Бран Старк и Сэмвел Тарли владеют очень важным секретом о его жизни. Посмотрим, как распространяются слухи по модели независимых каскадов. def independent_cascade(G,t,infection_times): infection_times = {'Bran-Stark':-1,'Samwell-Tarly':-1,'Jon-Snow':0} for t in range(10): Слух достигает Джона в точке t=1, распространяется на его соседей, а затем и по всей сети, получая широкую огласку. Динамика во многом зависит от параметров модели, которые влияют на закономерность процесса распространения. Максимизация влияния Проблема максимизации влияния описывает маркетинговую (и не только) установку, при которой цель маркетолога состоит в том, чтобы выбрать ограниченный набор узлов в сети, который будет естественным образом распространять влияние как можно большему количеству узлов. Например, пригласить на мероприятие по запуску продукта определенное число влиятельных лиц, которые затем расскажут о нем остальным участникам своей сети. Подобных инфлюенсеров можно определить различными методиками, такими как меры центральности, упомянутыми выше. Вот самые центральные узлы в сети “Игра престолов”. Как видите, некоторые персонажи повторно появляются на верхних позициях различных параметров. В сериале они также хорошо известны своим социальным влиянием. Мы видим, что выбор одного узла может покрыть около 50% сети. Вот насколько важными могут быть социальные инфлюенсеры. Однако максимизация влияния — нелегкий процесс и считается NP-трудной задачей. Чтобы найти лучший начальный набор для эффективного расчета, было разработано множество алгоритмов. Мы использовали метод полного перебора, чтобы выбрать лучшую начальную пару узлов (Роберт Баратеон и Кхал Дрого) в нашей сети. Процесс занял 41 минуту, и нам удалось достичь 56% покрытия. Получить такой результат с помощью алгоритмов центральности было бы непросто. Вывод Анализ сетей — сложный, но полезный инструмент, который пригодится в различных областях, особенно в стремительно растущих социальных сетях. Он применяется в маркетинговой максимизации влияния, обнаружении мошенничества и системах рекомендаций. Для работы с наборами данных сетей существует множество инструментов и методик. Выбирать их стоит с учетом уникальных свойств сети. Источник: vk.com Комментарии: |
|