(Tiểu luận) seminar môn học mạng xã hội phân tích và khai phá dữ liệu mạng xã hội bằng ngôn ngữ python

31 120 0
(Tiểu luận) seminar môn học mạng xã hội phân tích và khai phá dữ liệu mạng xã hội bằng ngôn ngữ python

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THƠNG TIN Seminar Mơn học: MẠNG Xà HỘI Phân tích khai phá liệu mạng Xã Hội ngôn ngữ Python Giảng viên : Thái Bảo Trân Sinh viên thực hiện: Lê Tuấn Cường-20520146 TP Hồ Chí Minh tháng năm 2023 MỤC LỤC: LỜI MỞ ĐẦU Chương 1: MƠ HÌNH HBA VÀ BIỂU DIỄN Xác định mô hình mạng xã hội a Các cấu trúc danh sách b Các cấu trúc ma trận .5 Biểu diễn mạng xã hội b%ng python  Tạo đồ thị vô hướng tT danh sách kU:  Tạo đồ thị cV hướng tT danh sách kU:  Xem danh sách node:  Xem danh sách cạnh:  ChuyXn tT đồ thị sang ma trân:Y  ChuyXn tT đồ thị sang danh sách kU (dạng dictionary):  Tạo đồ thị vô hướng tT ma trân:Y 10  Tạo đồ thị cV hướng tT ma trân:Y .11  ChuyXn tT đồ thị sang danh sách cạnh: 11  ChuyXn tT đồ thị sang danh sách kU (dạng list): .12 Chương 2: CÁC ĐẶC TRƯNG CỦA MẠNG 13 Degree distribution P(k) 13 Path distance Distribution 13 Clustering coefficient distribution 13 Community structure 13 Biểu diễn đăc9 trưng b%ng Python 13  BâcYc_a node: 14  V` histogram tT degree: 14  Tam đưbng ngcn nhất: 15  Tính Yse phân cfm: 15 Chương 3: ĐỘ ĐO TRUNG TÂM (CENTRAILITY MEASURES) &TẦM ẢNH HƯỞNG (KEYPLAYERS) 17 Degree centrality 17 Betweenness centrality 17 Closeness centrality 18 Eigenvector 18 Pagerank .18 T?nh toán thuât9toán so sánh b%ng python .19  Tính Degree centrality: 19  Tính Betweenness centrality: 19  Tính Closeness centrality: 20  Tính Eigenvector: 20  Tính Pagerank: 20  So sánh thuâtYtoán: 21 Chương 4: KHÁM PHÁ CỘNG ĐỒNG(COMMUNITYDETECTION) .22 Girvan-Newman Algorithm 22 Computing Edge Betweenness Efficiently 22 Phân cDm b%ng python 22  ThuâtYtoán Girvan-Newman theo se lrn: 22  ThuâtYtoán phân cfm theo se phrn ts cho trước: .25 LỜI MỞ ĐẦU Phân tích khai phá liệu mạng xã hội lĩnh vực phát triXn nhanh thbi gian grn Với phát triXn c_a mạng xã hội, lượng liệu sinh ngày lớn đa dạng Việc phân tích khai phá liệu mạng xã hội giúp hiXu rõ vU xu hướng, thVi quen c_a ngưbi dùng mạng xã hội Đồng thbi, nV giúp doanh nghiệp hiXu rõ vU khách hàng c_a manh tT đV đưa chiến lược kinh doanh phù hợp Python ngôn ngữ lập tranh phổ biến ss dfng rộng rãi phân tích liệu mạng xã hội ĐX bct đru phân tích khai phá liệu mạng xã hội Python, ngưbi crn cV kiến thức vU Python thư viện phổ biến NetworkX, Pandas Matplotlib Một ví df vU cách ss dfng Python đX phân tích liệu mạng xã hội ss dfng thư viện NetworkX đX tạo đồ thị mạng xã hội tT tệp CSV chứa thông tin vU liên kết ngưbi dùng mạng xã hội Sau đV, ngưbi cV thX ss dfng cơng cf khác đX phân tích đồ thị tam thông tin quan trọng vU mạng xã hội Báo cáo vU seminar s` giúp ngưbi cV thêm thông tin chi tiết hiXu thực việc phân tích liệu Mạng xã hội ngôn ngữ Python Cf thX thư viện NetworkX Nguồn tham khảo trang: https://networkx.org/ Chương 1: MƠ HÌNH H6A VÀ BIỂU DIỄN Xác định mơ hình mạng xã hội Cho đồ thị G: Trong lý thuyết đồ thị, đồ thị cV thX biXu diễn cách chính: a Các cấu trúc danh sách -Danh sách cạnh (Edge list) - Mỗi cạnh c_a đồ thị lưu danh sách dạng căpY đ†nh (gồm đ†nh bct đru đ†nh tới ).Các cạnh c_a đồ thị cV thX lưu danh sách riêng (cV thX cài đặt mảng (array)) Danh sách cạnh cho G: Egde e1 e2 e3 e4 e5 Src_node 2 -Danh sách kU (Adjacency list) - Mỗi đ†nh c_a đồ thị cV danh sách đ†nh kU nV (nghĩa cV cạnh nei tT đ†nh đến đ†nh đV) Danh sách kU cho G: Node Adjacence 3,4 41 Targt_node 3 b Các cấu trúc ma trận Ma trận liên thuộc (Incidence matrix) - Đồ thị biXu diễn ma trận [b ij] kích thước p × q, đV p se đ†nh q se cạnh, bij={-1/0/1} chứa liệu vU quan hệ đ†nh vi cạnh ej Đơn giản nhất: bij=1 cạnh ej hướng khỏi đ†nh vi , bij= -1 cạnh ej hướng vào đ†nh vi , trưbng hợp khác Ma trânY liên thuôcYcho G: e1 -1 e2 -1 e3 -1 e4 -1 0 e5 -1 0 0 0 -Ma trận kU (Adjacency matrix) - ma trận N × N, đV N se đ†nh c_a đồ thị Nếu cV cạnh đV nei đ†nh vi với đ†nh vj tha phrn ts Mij 1, không, nV cV giá trị Cấu trúc tạo thuận lợi cho việc tam đồ thị đX đảo đồ thị Ma trânY kU cho G: 0 1 0 -Ma trận dẫn nạp (Admittance matrix) ma trận Kirchhoff (Kirchhoff matrix) hay ma trận Laplace (Laplacian matrix) - định nghĩa kết thu lấy ma trận bậc (degree matrix) trừ ma trận kề Do đV, ma trận chứa thông tin vU quan hệ kU (cV cạnh nei hay không) đ†nh lẫn bậc c_a đ†nh đV Ma trânY dẫn nạp cho G: 1 -1 -1 -1 0 Trong đồ thị, ta cần xác định: V: ▪ Tập đỉnh (nodes, vertices, agents, actors, players, …) Trong lý thuyết đồ thị, tập đ†nh gọi tập nút (nodes) -1 -1 ▪ Trong phân tích mạng xã hội, nV cịn biết tập tác nhân (actors) hay tập thực thX (entities),… ▪ Trong mạng xã hội, tập đ†nh đặc trưng cho cấu trúc c_a mạng xã hội, thành viên hay cộng đồng nhVm ngưbi, tổ chức hay quec gia, trang web, nhãn tT khoá hay hanh ảnh, video,… E: Tập cạnh, liên kết (edges, links, ties) ▪ Trong MXH, tập cạnh đặc trưng cho mei liên kết (Link) hay mei quan hệ tập đ†nh mạng Mỗi cạnh ta cV thX hiXu đưbng nei hai đ†nh với ▪ Dựa sở lý thuyết đồ thị, ta chia tập cạnh loại: Đei với đồ thị cV hướng: Tập cạnh dạng trực tiếp, biXu diễn đưbng thẳng cV hướng (xác định hướng theo chiUu mũi tên) Đei với đồ thị vô hướng: Tập cạnh dạng gián tiếp, biXu diễn đưbng thẳng vô hướng (không cV chiUu mũi tên) Biểu diễn mạng xã hội b*ng python Ở ta ch† tâpY trung vào ss dfng ma trâ Yn kU danh sách cạnh đX xây dựng đồ thị Cho danh sách cạnh sau: Src_node Targt_node A A B B C C D D E E F G H B C D E G F A H A H A A A df= pd.read_csv('input1.csv',header=None) df.columns =['source','target','weight'] Ta df: Weight 12 27 TGo đồ thị vô hướng tM danh sách cGnh: G=nx.from_pandas_edgelist(df, source='source', target='target', edge_attr='weight', create_using=None, edge_key=None) nx.draw(G, with_labels=True) TGo đồ thị cN hướng tM danh sách cGnh: G=nx.from_pandas_edgelist(df, source='source', target='target', edge_attr='weight', create_using=nx.DiGraph(), edge_key=None) nx.draw(G, with_labels=True) Xem danh sách node: node_list=sorted(list(set(G.nodes))) Kết quả: Xem danh sách cGnh: edge_list=sorted(list(set(G.edges))) Kết quả: ChuyQn tM đồ thị sang ma trân:R plt.subplot(1, 2, 2) plt.title('Normalized degree histogram G') plt.bar(list(range(len(deg_his_per_lst))),deg_his_per_lst,color ='maroon', width = 0.3) plt.xlabel("k") plt.ylabel("P(k)") plt.xticks(list(range(len(deg_his_per_lst)))) plt.subplot(1, 2, 1) plt.title('Degree histogram G') plt.bar(list(range(len(deg_his_lst))),deg_his_lst,color ='blue', width = 0.3) plt.xlabel("degree") plt.ylabel("Nums of Node") plt.xticks(list(range(len(deg_his_lst)))) plt.show() Kết quả: T_m đường ng`n nhất: Trong python thuâtYtoán tam đưbng ngcn cV phương pháp (method=[‘dijkstra’, ‘bellman-ford’].Tùy thuôcYvào phương pháp muen ss dfng mà gán giá trị method phù hợp short_part=dict(nx.shortest_path_length(G, source=None, target=None, weight=None, method='bellman-ford')) Kết quả: Tính Rsa phân ccm: Hê Yse phân cfm cho tTng node tính sau: cluster_coef=nx.clustering(G, nodes=None, weight=None) Kết quả: Ngồi ra, ta cV thX tính hêseY phân cfm trung banh: avg_cluster_coef=nx.average_clustering(G) Kết quả: Chương 3: ĐỘ ĐO TRUNG TÂM (CENTRAILITYMEASURES) & TẦM ẢNH HƯỞNG (KEY PLAYERS) Degree centrality Degree centrality c_a đ†nh tổng se liên kết tới đ†nh đV đồ thị (tổng se cạnh kU c_a đ†nh) Trưbng hợp đồ thị cV hướng, degree centrality tính giá trị: in-degree out-degree In-degree: tổng se liên kết tT node khác đến node xét Out-degree: tổng se liên kết tT node xét đến node khác Ta cV công thức tổng quát: Trong đV: đ†nh xét V: tập đ†nh E: tập cạnh: n: se đ†nh c_a đồ thị u: Degree centrality dùng đX xác định node cV thX lan truyUn thông tin nhanh, cV khả gây ảnh hưởng trực tiếp đến node xung quanh Một thực thX cV giá trị degree centrality cao: Là ngưbi hoạt động tích cực tiếng Là đru nei quan trọng CV vị trí thuận lợi CV trm ảnh hưởng Betweenness centrality Betweenness centrality c_a đ†nh tính tổng se đưbng ngcn ngang qua đ†nh xét chia cho tổng se đưbng ngcn c_a toàn mạng Betweeness Centrality c_a đ†nh u, ký hiệu C B(u), độ đo dùng đX xem xét khả chi phei quan hệ nút khác mạng Khả u tham gia vào mei liên lạc hay đưbng s t tính sau: Trong đV: σst(u): se đưbng ngcn s t cV chứa u (s≠u≠ t) σst : tổng se đưbng ngcn s t (s ≠ u ≠ t) Cơng thức tính Betweenness Centrality c_a đ†nh u: Cho đồ thị G = (V, E) cV n đ†nh: Theo dạng chuẩn: Một node cV độ đo Betweenness Centrality cao tha: Giữ vị trí đặc biệt quan trọng trm ảnh hưởng lớn mạng Nếu node bị loại bỏ tha s` gây tan rã cấu trúc c_a mạng, tức node s` khơng cịn cV thX trao đôi thông tin liên lạc với Closeness centrality Closeness centrality độ đo khoảng cách tT đ†nh đến đ†nh lại đồ thị Cách 1: Closeness centrality tính trị nghịch đảo c_a tổng se khoảng cách ngcn tT đ†nh đến tất đ†nh lại c_a đồ thị Trong đV: d(u,v) đưbng ngcn tT u tới v Cách 2:Closeness centrality tính banh quân c_a tổng se khoảng cách ngcn tT đ†nh đến tất đ†nh lại Trong đV: d(u,v) đưbng ngcn tT u tới v Một thực thX cV giá trị closeness centrality tet nhất(cao nhất): CV thX truy xuất nhanh chVng đến thực thX khác mạng CV đưbng ngcn đến nhiUu thực thX khác Eigenvector Eigenvector cho biết mức độ kết nei c_a nút đV với nút kết nei dày đặc khác Cách tính eigenvector [x]: Gọi A ma trận tạo tT đồ thị G = (V, E) Tam eigenvalue λ cách giải det (A-λI) = Thay λ vTa tam vào A-λI = B Giải: B x [x]=[0] Ta tam eigenvector [x] Cách khác: Ss dfng công thức: AD-1x = x Tiến hành chạy vòng lặp: AD-1xi-1=xi xi-1 = xi tha dTng Pagerank Page Rank (thứ hạng trang web): Xếp hạng trang fanpage dựa theo mức độ thưbng xuyên c_a user nhấp vào đưbng dẫn (tự nhiên) tới trang fanpage Cơng thức tính pagerank cho node A:

Ngày đăng: 20/09/2023, 15:29

Tài liệu cùng người dùng

Tài liệu liên quan