李坤 白茹鑫 田立勤 薛小燕 欒尚敏



摘要:隨著物聯網、云計算的迅猛發展,大數據吸引了越來越多的關注,正在成為信息社會的重要財富。研究社團成員間親密程度有助于了解社團成員的社交影響力并方便對成員的工作協同提供指導。為保證社團組織結構調整的合理性以及工作配置的均衡性,有必要研究社團成員間的親密程度以及社團成員的影響力。運用Python3.6進行數據清洗和概化。通過numpy數組對上班時間和非上班時間的通話時長、通話次數構建矩陣,獲得不同星期數、不同時間點、不同城市以及不同社團成員的通話次數分布情況。提出了多指標綜合排序模型,調用networkx確定社團成員間親密程度,形成社團成員影響力網絡。采用GN算法檢測社團結構,對社團成員進行團體劃分,多次聚類分析法對社團負責城市進行區域劃分。以主叫次數最多為依據設置各區域總部城市所在地。提出了基于方位角的位置排序法,通過球面距離公式計算分區負責人乘飛機遍歷所負責城市一遍花費的最小時間。提出以社團成員影響力確定分管城市負責人的新政策。
關鍵詞:社團結構;networkx;GN算法;聚類分析;位置排序法
中圖分類號:TP399? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)01-0049-04
1 引言
復雜網絡的研究在各個領域受到廣泛關注,并在計算機、數學、生物學等領域體現出很大的應用價值。復雜網絡研究的關鍵是通過社團結構了解網絡性質。很多學者正在對社團結構的提取方法進行研究,例如Kernighan等人[1]研究對圖的剖分問題,Newman[2]的研究引起了社團檢測的研究熱潮。目前已經出現了很多檢測方法,這些方法從機器學習角度看都是無監督的方法。
模塊度用于定量的衡量社團結構的優劣,其值越大,對應的社團結構越好。因此模塊度經常被作為目標函數,經過對其進行優化,盡力使其取得最大值,從而從網絡中提取最優的社團結構。Guimera等人[3]將模塊度作為目標函數,用模擬退火算法對其進行優化。Newman[4]應用譜分析法對問題進行求解,得到最優的社團結構。Newman[5]基于擴展的模塊度矩陣,用同樣的方法將2個子網絡分別遞歸地進行分裂,得到最終的社團結構。
2 數據挖掘
主要是運用Python3.6,導入pandas、numpy以及matplotlib三個庫,挖掘數據信息。數據概化是一項前期基礎工作,即將已有數據轉換成適合進行數據挖掘的形式。為了更便于進行數據挖掘工作,對于數據中的“起始時間”列,采用時間序列確定星期數,并將通話時間點精確到小時。以10:08:51為例,經過數據轉換精確到時,即10時。
建立during_onwork,times_onwork,during_offwork,times_offwork四個dataframe對象,分別表示上班時間的通話時長、通話次數,下班時間的通話時長、通話次數。通過numpy數組構建矩陣,統計任意兩人在上班、非上班時間的通話時長和通話次數,并將數據寫入Excel文件。通過數據挖掘,得到了不同星期數、不同時間點、不同城市以及不同社團成員的通話次數分布統計圖,分別如圖1(a) ~(d) 所示。
由圖1(a) 可知,社團成員在周四通話最頻繁,周四、周五和周六三天的通話次數接近,周日通話次數最少。由圖1(b) 可知,社團成員通話總次數在一日內出現4個活躍時間段,分別為8~10時,11~12時,13~16時,19~21時,其中13~16時為一天中的通話峰值段。圖1(c) 展示了通話次數排名前10的城市,影響力由大到小依次為白城、天水、大理、拉薩、徐州、錫林浩特、岳陽、大連、天津以及蚌埠。圖1(d) 顯示了上班和非上班時間通話次數排名前10的社團成員,其中蔡月通話次數居首位。
3 數學模型建立
提出了多指標綜合排序模型。根據挖掘出的任意兩人上班、非上班時間通話次數和通話時長信息,分別獲得每個個體上班、非上班時間的通話總次數和總時長四項指標。初始化變量,分別對各指標進行排序,如圖2所示,得到社團成員各指標排名,求和獲得綜合名次,綜合名次的數值越小,影響力越大。調用networkx,繪制社團成員影響力網絡圖,如圖3所示,圖中粉紅色表示影響力前10名的社團成員。
社交網絡能夠描述現實社會中人與人之間的社會關系,其中社團結構是表征社交網絡結構特征的因素之一。采用了檢測社團結構的經典算法——Girvan-Newman(GN)算法,其基本流程是首先計算網格中所有邊介數,即計算經過網絡中每一條邊的最短路徑數目,其次需要找到邊介數最大的邊,從網絡中剔除,最后重新計算網絡中剩余邊的邊介數。重復上述兩個步驟,直至網絡中任一頂點作為一個退化的社區為止[6]。為把社團成員分為2個或3個小團體,調用GN算法,得到計算結果。部分程序如下:
from networkx.algorithms.community.centrality import girvan_newman
comp = girvan_newman(G)
comunities = tuple(c for c in next(comp))
comunities
print(comunities[0])
print(comunities[1])
comunity_list1 = []
comunity_list2 = []
names = adjacency_bool.index
for i in comunities[0]:
comunity_list1.append(names[i])
for j in comunities[1]:
comunity_list2.append(names[j])
print(comunity_list1)
print(comunity_list2)
計算結果表明,社團成員被分為2個小團體,畢婕靖、孟芳、凌慧雯、柯雅蕓、李熹俊、劉松荷、孫錦、林禮琴、高淼、駱嫻、劉菁蕓、康蕓晴、陳斕和鐘倩為一個團體,其余人為另一個團體。
針對社團調整組織架構,主要通過采用多次聚類分析將社團負責的139個城市分為3大區域。具體實現路徑為:首先分別提取出主叫地點“東經”“北緯”信息和各主叫地點的主叫次數,整合信息到一個工作表,并進行有無缺失值檢查,如果有缺失值,需進行數據清洗。確定沒有缺失值后進行第一次聚類分析,計算結果如圖4(a) 所示。
觀察圖4(a) 發現,區域分布點極不均勻,但存在明顯的分界線。為了保證區域分布的均衡性,對點密集區域進行第二次聚類分析,計算結果如圖4(b) 所示。如圖4(c) 所示,經過兩次聚類分析獲得了3大區域,分區1為含個舊的城市。最后,以主叫次數最多為依據設置了3大區域的總部城市所在地,分別為天水、白城和徐州。
根據任務均衡性和成員間的親密程度把該社團的所有成員配置到 3 個分區中,分別提名各分區的負責人各一名。構建36×139矩陣,獲得36名社團成員個體分別在139個城市的通話次數。程序如下:
import pandas as pd
import numpy as np
import networkx as nx
from sklearn.cluster import KMeans
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['STSong']
df = pd.read_excel("附件.xlsx")
counts_onwork = pd.read_excel("上班時間通話次數.xlsx", index_col=0)
citys = pd.read_excel('附件.xlsx', sheet_name="Sheet2", index_col=0)
locations = np.array(citys)
member_place = np.zeros((36, 139), dtype=int)
member_place = pd.DataFrame(member_place, index=counts_onwork.index, columns=citys.index)
for i in range(df.shape[0]):
row = df.loc[i, "主叫"]
col = df.loc[i, "主叫地點"]
member_place.loc[row, col] += 1
利用Excel分別統計各社團成員在3大分區的通話次數,篩選出各分區通話次數最多的成員作為分區負責人。潘立作為分區1(含個舊)負責人,蔡月和張培蕓作為另兩個分區負責人。
計算各分區負責人乘飛機遍歷所負責城市一遍花費的最小時間,提出了基于方位角的位置排序法,如圖5所示。找到分區中經度最小的城市,計算其他城市相對于該城市的北偏東方位角,對分區中所有點依據此方位角進行排序,按順序對該分區所有城市進行遍歷,形成一條閉合回路。
依據球面距離公式計算,得到分區1的路線為 ['喀什', '塔城', '阿勒泰', '阿克蘇', '烏魯木齊', '哈密', '玉門', '敦煌', '張掖', '銀川', '青銅峽', '德令哈', '西寧', '蘭州', '格爾木', '寶雞', '天水', '漢中', '綿陽', '成都', '重慶', '宜賓', '遵義', '貴陽', '都勻', '西昌', '六盤水', '攀枝花', '昆明', '憑祥', '大理', '個舊', '和田', '拉薩', '畹町', '日喀則'],用時為26.1小時。
分區2的路線為['呼和浩特', '哈爾濱', '鞍山', '青島', '二連浩特', '同江', '牡丹江', '濟南', '大連', '長春', '雞西', '天津', '秦皇島', '保定', '濰坊', '大同', '四平', '煙臺', '石家莊', '張家口', '錦州', '圖們', '通化', '營口', '錫林浩特', '榮成', '佳木斯', '沈陽', '滿洲里', '包頭', '唐山', '丹東', '北京', '承德', '白城', '海拉爾'],用時32.7小時。
分區3的路線為['南京', '南寧', '汕頭', '武漢', '上海', '十堰', '徐州', '岳陽', '太原', '榆林', '沙市', '寧波', '無錫', '九江', '延安', '合肥', '南陽', '開封', '揚州', '安慶', '椒江', '廈門', '柳州', '杭州', '桂林', '景德鎮', '臨汾', '宜昌', '廣州', '信陽', '南昌', '三明', '北海', '安陽', '懷化', '常德'],用時34.1小時。
針對新政策信息在該社團網絡中的傳播機制,以建立的社團成員影響力排名的數學模型為基礎,確定社團成員的影響力,計算結果為:['蔡月', '張培蕓', '潘立', '畢婕靖', '張荊', '曾帥', '陳斕', '孫翼茜', '梁茵', '鐘倩', '易貞', '劉松荷', '李熹俊', '吳宇曉', '吳霄', '高淼', '柯雅蕓', '彭荃', '潘瀾巧', '康蕓晴', '謝斑尚', '文芝', '張庭琪', '童豫', '林禮琴', '王蘊姣', '陸盈', '涂蘊知', '孫怡毓', '孫錦', '孟芳', '凌慧雯', '劉菁蕓', '廖顏翠', '柳謂', '駱嫻']。以除去總部負責人以外的社團成員的影響力順序通過任務均衡性和成員間的親密程度的解決思路確定分管城市的負責人。
4 結束語
本文通過建立數學模型研究成員的影響力和親密程度,為將來社團的工作安排提供依據,通過對信息的挖掘,建立數學模型對社團成員影響力進行排名并將成員劃分為小團隊。將社團調整組織架構,把負責的城市分為大區域并設置該分區的總部城市所在地。根據任務均衡性和成員間的親密程度把該社團的所有成員配置到分區中,分別提名各分區的負責人各一名。計算各分區負責人乘飛機遍歷所負責城市一遍花費的最小時間。研究新政策信息在該社團網絡中的傳播機制,在新政策正式公布后,能使得新政策得到全面貫徹和執行。
參考文獻
[1] Kernighan B W, Clauset A, Leicht E.Mixture models and exploratory analysis in networks[J].Proc Natl Ac ad Sci,2014,15(23):64-68.
[2] Newman M E J,Girvan M,Leicht E.The structure and function of complex networks[J].SIAM Review,2013,45(2):167-256.
[3] Guimera D A,Newman M E J,Derenyi.Detection community struction in netuorks[J].European Systems,2015,38(2):321-330.
[4] Newman M E J.Structure and tie strengths in mobile communication networks[J].Proceedings of the National Academy of Sciences,2012,104(18):32-73.
[5] Newman M E J.The large-scale organization of metabol-ic net-works[J].Nature,2016,407(6804):651-654.
[6] 馬靜.基于社交網絡的社團劃分算法研究[D].濟南:山東師范大學,2011.
【通聯編輯:謝媛媛】