社交网络分析——影响力最大化(附带python例子实现)

社交网络分析5:社交网络信息传播动力学。信息传播 、传染病模型、博弈模型和物理系统模型 、传播动力学分析 传统模型有 SI、SIR、SIS,这些模型均无法反映易感者转换为感染者之前有个潜伏期的事实,为此引入潜伏状态(Exposed),产生了 SEIR 模型在该类模型的发展过程中,近几年随着应用场景的不同出现了许多变体,比如具有两个时滞和垂直转移的 SEIRS 模型、基于情感交流的 HIT-SCIR模型和基于用户情绪的 SISa 模型等。式中, x 为传播距离, E 为传播能量, S 为分享系数, R 为声誉系数, ω 为在线角频率, t 为信息传播时间, n 为每天在线小时数, φ 为上线时差。 阅读详情

本文通过python实现影响力最大化模型,所用例子为空手道俱乐部。

文章目录:
社交网络分析——信息传播模型(附带三个模型的python实现)
信息传播模型——SIR的Python实现

大纲:

  1. 什么是影响力
  2. 衡量影响力
  3. 影响力最大化问题

影响力定义:
影响力,一般认为指的是用一种为别人所乐于接受的方式,改变他人的思想和行动的能力。(搜狗百科)

影响,控制或操纵某物或某人的权力; 改变诸如行为,思想或决定之类的波动事物发展的能力。

影响扩散的因素

  • 网络结构(无权)
    密度
    度分布
    连通区域
    社区结构
  • 链接强度(有权)
    交流频率
    影响力
  • 信息质量
    信息的吸引力和特殊性

影响力最大化
问题:选择k个种子用户去最大化影响用户数量
输入:具有边影响概率的社交网络图
输出:大小为k的种子集合

问题陈诉:

  • 集合S的扩散:F(S)
    如果集合S为初始集合,则结果为期望的激活节点的数量;
  • 问题:
    给定一个参数k,找到一个节点数为k的集合S来最大化F(S)
    以F(S)为目标函数的约束优化问题

F(S)特性:
非负的
单调的:F(S+v)≥F(S)

代码:

import networkx as nx
import numpy as np
import random

'''
author:xiao黄
time:2020.10.23
blog:https://blog.youkuaiyun.com/Python_Matlab
'''

# 计算节点集的影响力
def influence_computation_IC(seed):
    influence = 0
    if len(seed) == 0: # 种子为0 直接返回0 -> 无影响力
        return influence

    for i in range(R):
        result_list = []
        result_list.extend(seed)

        # 保存激活的状态
        checked = np.zeros(g.number_of_nodes()) 
        for node in result_list:
            checked[node] = 1

        # 当前节点不为空,进行影响
        while len(result_list) != 0:
            influence += 1
            current_node = result_list.pop(0)
            for nbr in g.neighbors(current_node): # 得到当前节点的邻居节点
                if checked[nbr] == 0:
                    wt = g.get_edge_data(current_node, nbr)
                    if random.uniform(0,1) < wt['weight']:
                        checked[nbr] = 1
                        result_list.append(nbr)

    return influence/R

if __name__ == "__main__":
    k = 3 # 影响力最大的几个点,这里设置为三个点
    R = 1000 # 传播过程 一般 10000次
    seed = []
    node_list = []
    
    g = nx.karate_club_graph() # 空手道俱乐部

    for edge in g.edges:
        g.add_edge(edge[0], edge[1], weight=random.uniform(0,1)) # 权值为(0,1)
    
    for i in range(k):
        f = np.zeros(g.number_of_nodes())
        state = np.zeros(g.number_of_nodes())
        for v in seed:
            state[v] = 1
        for v in g.nodes:
            node_list.extend(seed)
            if state[v] == 0:
                node_list.append(v)
                f[v] = influence_computation_IC(node_list) - influence_computation_IC(seed)  
            node_list.clear()
        print(f)
        seed.append(f.argmax()) 
    print(seed)

运行结果:

[25.077 24.788 25.167 25.008  9.963 12.557 13.154 21.757 24.127 23.861
 10.47  13.772 21.72  25.032 16.781 22.805 12.536 17.224  3.04  23.631
  5.204 15.163 24.503 25.039 15.542 18.434 23.283 13.992 18.303 24.907
 23.444 24.781 25.    25.121]
[ 0.184 -0.157  0.     0.348  1.339  1.693  1.554  0.178  0.17   0.032
  1.177  0.424  0.308  0.216  0.725  0.135  1.614  0.228  0.97   0.375
  0.7    0.275  0.284  0.385  0.814  0.704  0.391  1.007  0.45   0.384
 -0.121  0.389  0.17   0.387]
[-0.086  0.142  0.     0.102  0.759  0.     0.267  0.18   0.099 -0.091
  0.734  0.282  0.199  0.203  0.57   0.277 -0.017  0.374  0.906  0.45
  0.762  0.555  0.232  0.237  0.95   0.337  0.326  0.863  0.487  0.284
  0.141  0.318  0.234  0.24 ]
[2, 5, 24]

其中[2,5,24]为某次运行得到的影响力最大化的三个节点。

注意:因为本文中边的权值是随机的,所以每次运行结果可能不一样。

影响力最大化——最常用的模型IC和LT模型以及python实现 一、IC模型(独立级联模型) 红色为处于激活态的种子节点,每条边都有一个传播概率p,激活的节点会以p的概率去激活邻居节点,一个节点有且只有一次机会去激活另一个节点,如果失败,则不再去尝试激活这个节点。 def preprocess(G): p = 0 directedGraph = nx.DiGraph() for u in G.nodes(): for v in G.neighbors(u): if (v != u)... 阅读详情

相关推荐

数学建模竞赛实战:从社交网络影响力最大化到CELF算法实现

社交网络分析是图论与数据科学交叉领域的重要应用,其核心在于研究节点间的关系结构与信息流动规律。影响力最大化问题旨在识别网络中的关键节点,以最小的成本实现信息传播范围的最大化,其理论基础源于组合优化与次模函数性质。独立级联模型和线性阈值模型是描述信息传播动力学的经典框架,通过蒙特卡洛模拟可以量化预测传播效果。在工程实践中,贪心算法因其理论保证成为求解该问题的首选,而CELF优化则通过惰性评估大幅提升了计算效率,使其能处理大规模网络。本文以数学建模竞赛为背景,深入剖析了从问题理解、模型构建、算法实现到结果可视化

weixin_30727835的博客 401

基于局部域的影响力最大化算法——文章解析

一、文章摘要 影响力最大化问题是社交网络分析领域的热点研究问题,而对影响力进行全面科学的度量又是该问题的核心。本文针对度量影响力的全局性指标和局部性指标存在的不足,根据三度分隔原理,提出用节点在局部域内的影响力近似其在全局范围内的影响力并据此进行种子选择的方法。该方法充分利用网络中存在的自环和多边现象,结合网络拓扑结构构建生成图。依据生成图为每个节点划分以其为中心的局部域,用节点在该局部域内的影响力近似其在全局范围内的影响力,并据此去选择候选种子节点。然后,计算候选种子加入种子集合后的重叠...

lslslslslss的博客 2347

独立级联模型:从社交网络传播到影响力最大化的算法实践

本文深入解析独立级联模型(Independent Cascade)在社交网络传播与影响力最大化中的应用实践。从核心原理到代码实现,详细介绍了基于Python的算法优化方案,包括概率分配策略、向量化实现及CELF优化算法,帮助开发者高效解决社交网络中的信息传播预测问题。

weixin_30521161的博客 202

社交网络模型

社交网络中常常参考的模型(更新中...)

just_you_57的博客 1760

社交网络用户影响力分析:算法、模型与实现

本文将全面探讨社交网络用户影响力分析的最新方法,包括基于图论的中心性指标、基于机器学习的预测模型,以及结合深度学习的先进技术。社交网络本质上是一个复杂的图结构,可以形式化地表示为G=(V,E),其中V代表用户节点集合,E代表用户间的关系边集合。随着社交网络规模的不断扩大和数据量的激增,传统的分析方法已无法满足需求,这促使研究者们开发出各种基于机器学习和图论的新型算法。随着社交媒体的不断发展和AI技术的进步,用户影响力分析将继续在各个领域发挥重要作用,从精准营销到舆情监控,从社交推荐到公共卫生干预。

2201_76125393的博客 507

基于图卷积的动态社交网络影响力推理

本文旨在为读者提供一套完整的基于图卷积网络的动态社交网络影响力推理解决方案。图卷积网络的基本原理动态社交网络的表示方法影响力推理的数学模型完整的Python实现性能优化技巧实际应用案例分析本文的范围限定在基于深度学习的社交网络分析方法,特别是针对动态网络的影响力推理问题。首先介绍背景知识和核心概念然后深入讲解图卷积算法原理接着建立数学模型并进行理论分析之后通过完整项目案例展示实际应用最后讨论工具资源和未来发展方向。

AI架构全栈开发实战笔记 941

Python 分析《三国演义》看司马懿三父子如何用计谋干掉了曹操后代

前言 一直以来对自然语言处理和社交网络分析都很感兴趣,前者能帮助我们从文本中获得很多发现,而后者能够让我们对人们和各个事物之间普遍存在的网络般的联系有更多认识。当二者结合,又会有怎样的魔力呢? 作为一个三国迷,我就有了这样的想法:能不能用文本处理的方法,得到《三国演义》中的人物社交网络,再进行分析呢?Python中有很多好工具能够帮助我实践我...

weixin_37478507的博客 1212

社交网络影响力最大化:Python实现与CELF优化实战

在社交网络与图数据驱动的业务场景中,如何在庞大关系网络中选取少量种子节点,实现影响范围最大化,是用户增长与精准营销的核心问题。这一组合优化问题被抽象为影响力最大化任务,需借助传播模型如独立级联模型(IC)来量化节点影响力。由于问题属于NP难,基于次模性的贪心算法成为经典解法,其1-1/e近似比提供了理论保证。而CELF优化利用边际收益递减特性,将计算效率提升数个数量级,使大规模网络上的实践成为可能。度中心性与PageRank等启发式算法在工程中也被广泛用作高性价比基线。基于Wiki-Vote数据集,结合Py

weixin_33600816的博客 258

社交网络影响力最大化

目录 1、社交网络概述 2、影响力最大化问题分类 3、社交网络影响力最大化作用 4、传播模型 4.1独立级联模型(Independent Cascade Model)简称 IC 模型 4.2线性阈值模型(Linear Threshold Model)简称LT模型 社交网络影响力最大化(Influence Maximization) 1、社交网络概述 社交网络归根结底就是一个图G(...

分享实践与思考 1万+

Python实战社交网络影响力最大化:从贪心到CELF算法全解析

社交网络分析中,如何用最少的种子节点触发最大范围的传播,是病毒营销、舆情扩散和推荐系统共同关注的核心问题。影响力最大化作为图算法领域的经典议题,最早由Kempe等人形式化,其本质是在独立级联模型等传播机制下,寻找边际收益最优的节点集合。由于问题具有NP难特性,贪心近似与子模性成为理论基石,而CELF算法则利用边际收益递减规律,大幅降低蒙特卡洛模拟成本。在实际工程中,PageRank和度中心性等启发式方法能以极低耗时逼近贪心结果,常用于快速筛选候选集。本文基于Stanford SNAP的Wiki-Vote真实

weixin_29070861的博客 304

Python实战:影响力最大化中的IC模型与CELF贪心算法优化

在社交网络分析中,影响力最大化问题旨在找出最具传播潜力的种子节点集合,以触发最大化信息扩散。独立级联模型作为经典传播模型,通过节点间独立激活的概率刻画扩散过程,而贪心算法利用子模函数性质提供了近似最优解,并可通过CELF策略大幅降低计算成本。蒙特卡洛模拟用于估计影响范围,平衡随机性与准确性。该技术广泛应用于产品冷启动、裂变活动设计与舆情传播研究。以Wiki-Vote数据集为例,使用Python与NetworkX实现完整的影响力最大化实验流程,从数据预处理到算法实现,并对比CELF加速与度启发式方法,为相关研

weixin_28737603的博客 196

社交网络影响力分析:大数据方法与实践

社交网络在当今社会中扮演着至关重要的角色,人们通过各种社交平台进行交流、分享信息。社交网络影响力分析旨在识别社交网络中具有重要影响力的节点(用户),理解信息传播的模式和规律。其范围涵盖了各种社交网络平台,如 Facebook、Twitter、微信、微博等,以及不同领域的社交网络,如商业、政治、文化等。通过对社交网络影响力的分析,可以为市场营销、舆情监测、社会关系研究等提供有价值的决策依据。本文将按照以下结构进行阐述:首先介绍社交网络影响力分析的背景知识,包括目的、读者和文档结构;

项目管理的博客 1205

IMRank:Python实现的影响力最大化算法实战

影响力最大化(Influence Maximization)是社交网络与推荐系统中的核心图算法问题,旨在从大规模关系图中识别能引发最大级联传播的种子节点。其原理基于传播模型(如IC独立级联、LT线性阈值)与次模优化理论,通过贪心、CELF或Rank融合策略平衡精度与效率。技术价值在于以低成本驱动用户裂变、提升LTV与ROI,广泛应用于私域运营、知识扩散和SaaS客户激活等场景。本文聚焦IMRank_python_影响力最大化_这一轻量级、可复现、可嵌入业务流水线的Python实现方案,深度结合igraph高

weixin_29053067的博客 101

社交网络影响力扩散实战:IC与LT模型的Python实现与优化

本文深入解析了社交网络影响力扩散的IC与LT模型,并通过Python实战演示了其核心实现与优化。文章详细对比了IC模型的“病毒式”概率传播与LT模型的“阈值累积”机制,提供了从环境搭建、模型模拟到性能优化及微博案例分析的完整流程,帮助读者掌握利用Python进行影响力最大化分析的关键技术。

weixin_29204749的博客 622

IMRank算法解析:Python实现影响力最大化种子节点选择

在社交网络分析中,如何从海量节点中挑选出最具传播潜力的种子节点,是影响营销效果与信息扩散效率的核心问题。影响力最大化算法通过量化节点间的传播增量,在独立级联模型下迭代筛选最优节点集,而贪心与蒙特卡洛模拟的经典方案往往因高复杂度难以落地。IMRank作为一种轻量级Python实现,以边际影响力排序替代全量模拟,借助NetworkX构建图结构,在保证近似精度的同时将复杂度降至O(k·n)量级。该方法适用于病毒营销、舆情监测、社群发现等场景,尤其适合中小规模网络的种子用户筛选。本文从传播模型原理出发,结合代码剖析

weixin_34254848的博客 256

统信UOS安装CH384串口卡驱动

本文讲解如何在统信UOS系统下安装CH384 PCIE多串口驱动安装过程,CPU为飞腾D2000。其他Linux内核系统安装亦可参照类似方法。

shjhuang的专栏 1885

社交媒体影响力分析:用数学建模量化品牌传播效果

数据的复杂性多渠道数据融合:不同社交媒体平台的数据来源不同,如何整合多渠道数据进行统一分析是一个难题。用户行为的多样性:不同用户对品牌的反应和行为不同,如何量化每个用户对品牌影响力的贡献是一个挑战。通过科学的数学建模和数据分析,我们可以对品牌在社交媒体上的表现进行量化,帮助品牌找出最佳的社交媒体营销策略,以最大化其市场影响力。社交网络分析:通过网络图中的节点和边分析品牌在社交媒体上的影响力。PageRank 算法:计算网络节点的影响力,用于量化品牌的传播效果。MATLAB 和 Python 工具。

weidl001的博客 2314

Python程序—定子故障三相永磁同步电动机振动与电流数据集

1.0 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为2.26%: 匝间短路故障,严重度为2.70%: 匝间短路故障,严重度为3.35%: 匝间短路故障,严重度为4.41%: 匝间短路故障,严重度为6.48%: 匝间短路故障,严重度为12.17%: 匝间短路故障,严重度为21.69%1.5 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为1.57%: 匝间短路故障,严重度为1.88%: 匝间短路故障,严重度为2.34%

m0_66465741的博客 1322

用Python实战解析CS224W影响力最大化问题:从王妃效应到算法实现

本文通过Python实战解析CS224W影响力最大化问题,从王妃效应出发,详细介绍了线性阈值模型和独立级联模型,并实现了贪心算法与基于Sketch的优化算法。文章还展示了如何使用PyTorch Geometric构建图神经网络解决方案,并通过Twitter网络案例进行实战分析,帮助读者掌握社交网络中关键节点识别的核心技术。

tt34567的博客 981

基于STM32的智能停车场管理系统

随着城市车辆数量激增,传统停车场管理效率低下。本文设计了一款基于STM32的智能停车场管理系统,支持车牌识别、车位引导、自动计费等功能,可显著提升停车场运营效率。系统适用于商场、小区等场景,支持多终端协同管理。本系统实现了停车场智能化管理,显著提升了运营效率。:STM32F746(高性能Cortex-M7)问题讨论,stm32的资料领取可以私信!:OV7725摄像头(30fps):ESP32(Wi-Fi+蓝牙)红外对射传感器(车辆进出检测)支持蓝牌、黄牌、新能源车牌。⬇帮大家整理了单片机的资料。

stm32d1219的博客 879

上海计算机学会2020年5月月赛C++乙组T2经济普查

中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变

长春高老师编程 911
上一篇: python|surprise学习文档(一)
下一篇: python|安装labelme及Could not find conda environment: labelme解决办法
xiao黄
xiao黄 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄8年 1万+粉丝 250原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值