1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Phân Tích Và Khai Phá Dữ Liệu Mạng Xã Hội Bằng Ngôn Ngữ Python
Tác giả Lê Tuấn Cường
Người hướng dẫn ThS. Bảo Trân
Trường học Đại Học Quốc Gia Tp Hcm
Chuyên ngành Mạng Xã Hội
Thể loại seminar
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 31
Dung lượng 2,47 MB

Cấu trúc

  • Chương 2: CÁC ĐẶC TRƯNG CỦA MẠNG (15)
    • 1. Degree distribution P(k) (15)
    • 2. Path distance Distribution (15)
    • 3. Clustering coefficient distribution (15)
    • 4. Community structure (15)
    • 5. Biểu diễn các đă 9c trưng b%ng Python (0)
  • Chương 3: ĐỘ ĐO TRUNG TÂM (CENTRAILITY MEASURES) & TẦM ẢNH HƯỞNG (KEY PLAYERS) (19)
    • 1. Degree centrality (19)
    • 2. Betweenness centrality (19)
    • 3. Closeness centrality (20)
    • 4. Eigenvector (20)
    • 5. Pagerank (20)
    • 6. T?nh toán các thuâ 9t toán và so sánh b%ng python (0)
  • Chương 4: KHÁM PHÁ CỘNG ĐỒNG(COMMUNITY DETECTION) (24)
    • 1. Girvan-Newman Algorithm (24)
    • 2. Computing Edge Betweenness Efficiently (24)
    • 3. Phân cDm b%ng python (0)

Nội dung

CÁC ĐẶC TRƯNG CỦA MẠNG

Degree distribution P(k)

Định nghĩa: Phân phei bậc (Degree distribution) là xác suất đX chọn được node cV bậc là k.

Bậc (k) c_a node i được xác định bằng tổng se cạnh cV một đru là node i.

N k : se node cV bậc là kN: tổng se node cV trong đồ thị

Path distance Distribution

Định nghĩa:Đưbng dẫn (Path distance) là dãy thứ tự các node hoặc cạnh đi tT node này sang node khác.

Trong các bài toán, ngưbi ta thưbng ss dfng đưbng đi ngcn nhất (Shortest path) đX tính toán chi phí

Clustering coefficient distribution

Định nghĩa:Hệ se phân cfm (Clustering coefficient) là se lượng liên kết trong một khu vực nút trên tổng se liên kết cV thX.

Hệ se phân cfm C luôn nằm trong đoạn [0,1] i

Hệ se phân cfm cho node i được tính như sau:

Trong đV: e i : Se cạnh nei giữa các node liUn kU c_a node i k i : Bậc c_a node i

Community structure

Cấu trúc cộng đồng trong mạng đU cập tới sự xuất hiện c_a các nhVm nút liên kết chặt ch` hơn giữa các phrn còn lại trong mạng

5 Biểu diễn các đă :c trưng b*ng Python Đồ thị G: Đồ thị G2:

-Đei với đồ thị vô hướng:

-Đei với đồ thị cV hướng:

G2.in_degree() # tinh b c đi vao c a node â u  G2.out_degree() #tinh b c đi ra c a node â u  Áp dfng:

G_degree =pd DataFrame (sorted( degree()), columns=['Node' G , 'Degree' ])

The results show the in-degree and out-degree of nodes in a graph, with in-degrees sorted and stored in a dictionary, followed by extracting their values into a list Similarly, the out-degrees are sorted and stored, with their values also compiled into a list Finally, a pandas DataFrame is created to present the nodes alongside their corresponding in-degree and out-degree values.

The degree histogram is a crucial tool for analyzing the distribution of node connections in a graph To create a degree histogram, we first calculate the degree histogram list using `nx.degree_histogram(G)`, followed by normalizing it to obtain the degree distribution This is done by dividing each value in the degree histogram list by the total number of nodes in the graph We then visualize the results using Matplotlib, with two subplots: the first showing the standard degree histogram in blue, indicating the number of nodes for each degree, and the second displaying the normalized degree histogram in maroon, representing the probability distribution P(k) against the degree k Each subplot is clearly labeled for easy interpretation, enhancing the understanding of the graph's structural properties.

Trong python thuâ Yt toán tam đưbng ngcn nhất cV 2 phương pháp (method=[‘dijkstra’,

The Bellman-Ford algorithm is utilized for calculating the shortest path lengths in a graph Depending on the chosen method, the appropriate value can be assigned to the 'method' parameter To implement this, use the `shortest_path_length` function with specified parameters such as source, target, weight, and method set to 'bellman-ford'.

 Tính hê R sa phân ccm:

Hê Y se phân cfm cho tTng node được tính như sau: cluster_coef =nx.clustering( , nodes None G = , weight None = )

Ngoài ra, ta cV thX tính hê Y se phân cfm trung banh: avg_cluster_coef =nx.average_clustering( ) G

Biểu diễn các đă 9c trưng b%ng Python

Degree centrality c_a một đ†nh chính là tổng se các liên kết tới đ†nh đV trong đồ thị (tổng se cạnh kU c_a một đ†nh).

Trưbng hợp đồ thị cV hướng, degree centrality được tính bởi 2 giá trị: in-degree và out-degree.

In-degree: tổng se liên kết tT các node khác đến node đang xét.

Out-degree: tổng se liên kết tT node đang xét đến các node khác.

Ta cV công thức tổng quát:

Trong đV: u: đ†nh đang xét V: tập đ†nh E: tập cạnh: n: se đ†nh c_a đồ thị

Degree centrality được dùng đX xác định node nào cV thX lan truyUn thông tin nhanh, cV khả năng gây ảnh hưởng trực tiếp đến các node xung quanh

Một thực thX cV giá trị degree centrality cao :

Là ngưbi hoạt động tích cực hoặc nổi tiếng nhất

Là một đru nei quan trọng

CV một vị trí thuận lợi

Độ trung tâm giữa (Betweenness Centrality) của một đỉnh, ký hiệu là C(u), được tính bằng tổng số đường đi ngắn nhất qua đỉnh đó chia cho tổng số đường đi ngắn nhất trong toàn mạng Đo lường này giúp đánh giá khả năng kết nối và vai trò của đỉnh trong việc duy trì các mối quan hệ giữa các nút khác trong mạng.

Khả năng u tham gia vào mei liên lạc hay các đưbng đi giữa s và t được tính như sau:

Trong đV: σ st (u): se đưbng đi ngcn nhất giữa và cV chứa s t u (s≠u≠ t) σ st : tổng se đưbng ngcn nhất giữa và 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:

ĐỘ ĐO TRUNG TÂM (CENTRAILITY MEASURES) & TẦM ẢNH HƯỞNG (KEY PLAYERS)

Degree centrality

Degree centrality c_a một đ†nh chính là tổng se các liên kết tới đ†nh đV trong đồ thị (tổng se cạnh kU c_a một đ†nh).

Trưbng hợp đồ thị cV hướng, degree centrality được tính bởi 2 giá trị: in-degree và out-degree.

In-degree: tổng se liên kết tT các node khác đến node đang xét.

Out-degree: tổng se liên kết tT node đang xét đến các node khác.

Ta cV công thức tổng quát:

Trong đV: u: đ†nh đang xét V: tập đ†nh E: tập cạnh: n: se đ†nh c_a đồ thị

Degree centrality được dùng đX xác định node nào cV thX lan truyUn thông tin nhanh, cV khả năng gây ảnh hưởng trực tiếp đến các node xung quanh

Một thực thX cV giá trị degree centrality cao :

Là ngưbi hoạt động tích cực hoặc nổi tiếng nhất

Là một đru nei quan trọng

CV một vị trí thuận lợi

Betweenness centrality

Độ đo trung tâm giữa (Betweenness Centrality) của một đỉnh \( c_a \) được tính bằng tổng số đường đi ngắn nhất qua đỉnh đó chia cho tổng số đường đi ngắn nhất của toàn mạng Ký hiệu là \( C(u) \), độ đo này giúp đánh giá khả năng chi phối các mối quan hệ giữa các nút khác trong mạng.

Khả năng u tham gia vào mei liên lạc hay các đưbng đi giữa s và t được tính như sau:

Trong đV: σ st (u): se đưbng đi ngcn nhất giữa và cV chứa s t u (s≠u≠ t) σ st : tổng se đưbng ngcn nhất giữa và 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:

Một node cV độ đo Betweenness Centrality càng cao tha:

Giữ một vị trí đặc biệt quan trọng và một trm ảnh hưởng rất lớn trong mạng

Nếu node này bị loại bỏ, sẽ dẫn đến sự tan rã cấu trúc của mạng, khiến cho các node không còn khả năng trao đổi thông tin liên lạc với nhau.

Closeness centrality

Closeness centrality là độ đo khoảng cách tT một đ†nh đến các đ†nh còn lại trong đồ thị.

Cách 1: Closeness centrality được tính bằng trị nghịch đảo c_a tổng se khoảng cách ngcn nhất tT một đ†nh đến tất cả các đ†nh còn lại c_a đồ thị.

Trong đV: d(u,v) là đưbng đi ngcn nhất tT u tới v

Cách 2:Closeness centrality được tính bằng banh quân c_a tổng se khoảng cách ngcn nhất tT một đ†nh đến tất cả các đ†nh còn lại.

Trong đV: d(u,v) là đưbng đi ngcn nhất 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 các thực thX khác trong mạng

CV một đưbng đi ngcn nhất đến nhiUu thực thX khác.

Eigenvector

Eigenvector cho biết mức độ kết nei c_a nút đV với các nút được kết nei dày đặc khác Cách tính eigenvector [x]:

Gọi A là ma trận được tạo ra tT đồ thị G = (V, E) Tam eigenvalue λ bằng cách giải det (A-λI) = 0 Thay λ vTa tam được vào A-λI = B

Giải: B x [x]=[0] Ta tam được eigenvector [x]

Ss dfng công thức: AD x = x -1 Tiến hành chạy vòng lặp: AD -1 x =x i-1 i cho đến khi x = x tha dTng i-1 i

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 một đưbng dẫn (tự nhiên) và tới trang fanpage.

Công thức tính pagerank cho node A:

Trong đV: d: là hệ se giảm chấn (damping factor) T: là node trỏ tới A

PR(T) : t† lệ trước c_a node trỏ tới A C(T): se node mà node T trỏ đi

6 T?nh toán các thuâ :t toán và so sánh b*ng python

To calculate degree centrality in a network, use the function `nx.degree_centrality()` Next, sort the results by degree centrality in descending order with `sorted(deg_cen.items(), key=lambda x: x[1], reverse=True)` Finally, convert the sorted data into a DataFrame using `pd.DataFrame(deg_cen_sorted, columns=['node', 'degree_centrality'])` to present the results clearly.

To calculate betweenness centrality in a graph, use the function `nx.betweenness_centrality(G, normalized=True, weight=None, endpoints=False, seed=None)` After obtaining the betweenness centrality values, sort them in descending order with `sorted(bet_cen.items(), key=lambda x: x[1], reverse=True)` Finally, create a DataFrame to display the results using `pd.DataFrame(bet_cen_sorted, columns=['node', 'betweenness_centrality'])`.

To calculate closeness centrality in a network using Python's NetworkX library, use the function `nx.closeness_centrality()` with the parameters for the graph and optional settings The results can be sorted in descending order by applying the `sorted()` function, and then you can create a DataFrame with Pandas to display the nodes alongside their closeness centrality values.

To calculate eigenvector centrality in a network using Python, use the following code: `eig_cen = nx.eigenvector_centrality(G, max_iter=100, tol=1e-06, nstart=None, weight=None)` After obtaining the eigenvector centrality values, sort them in descending order with `eig_cen_sorted = sorted(eig_cen.items(), key=lambda x: x[1], reverse=True)` Finally, create a DataFrame to store the results with `eig_cen_df = pd.DataFrame(eig_cen_sorted, columns=['node', 'eigenvector_centrality'])`.

To implement PageRank with a damping factor of 0.85, use the following code: `page_r = nx.pagerank(G, alpha=0.85, personalization=None, max_iter=100, tol=1e-06, nstart=None, weight='weight', dangling=None)` Next, sort the PageRank results using `page_r_sorted = sorted(page_r.items(), key=lambda x: x[1], reverse=True)` Finally, convert the sorted results into a DataFrame with `page_r_df = pd.DataFrame(page_r_sorted, columns=['node', 'pagerank'])`.

 So sánh gila các thuâ R t toán:

The code snippet creates a dictionary named `compare_data` that aggregates centrality measures from various data frames, including degree centrality, betweenness centrality, closeness centrality, eigenvector centrality, and PageRank It then converts this dictionary into a pandas DataFrame called `compare_df`, allowing for a structured comparison of the centrality metrics associated with each node.

Kết quả: ð Như vâ 9y, key player cho đL thị G là node A.

T?nh toán các thuâ 9t toán và so sánh b%ng python

Cộng đồng được định nghĩa là một tập hợp các thực thể có những đặc điểm tương đồng và/hoặc đảm nhận vai trò giống nhau trong một mạng xã hội.

Việc phân tích các mạng xã hội cho phép chúng ta nhận diện cấu trúc cộng đồng và mối liên hệ giữa các cộng đồng, cũng như giữa các cá nhân trong từng cộng đồng Những mối liên hệ này có ảnh hưởng đáng kể đến cấu trúc tổng thể của mạng xã hội.

Edge betweenness:Se đưbng đi ngcn nhất đi qua cạnh đV.

-Tính edge betweenness c_a tất cả các cạnh.

-Loại bỏ cạnh cV edge betweenness cao nhất.

-Lặp lại 2 bước trên cho đến khi biXu đồ được phân chia thành nhiUu vùng như mong muen.

2 Computing Edge Betweenness Efficiently Đei với mỗi nút N trong biXu đồ:

-Thực hiện tam kiếm theo chiUu rộng c_a đồ thị bct đru tT nút N.

-Xác định se lượng đưbng đi ngcn nhất tT N đến mọi nút khác.

-Dựa trên những con se này, xác định lượng luồng tT N đến tất cả các nút khác ss dfng mỗi cạnh.

Chia tổng lưu lượng c_a tất cả các cạnh cho 2

The Girvan-Newman algorithm operates by utilizing a graph structure to identify community structures within networks This method focuses on removing edges with the highest betweenness centrality, effectively revealing the underlying connections between nodes By systematically applying this algorithm, it becomes possible to uncover distinct clusters within the graph, enhancing the understanding of complex network dynamics.

Cài đă Yt thuâ Yt toán:

KHÁM PHÁ CỘNG ĐỒNG(COMMUNITY DETECTION)

Girvan-Newman Algorithm

Edge betweenness:Se đưbng đi ngcn nhất đi qua cạnh đV.

-Tính edge betweenness c_a tất cả các cạnh.

-Loại bỏ cạnh cV edge betweenness cao nhất.

-Lặp lại 2 bước trên cho đến khi biXu đồ được phân chia thành nhiUu vùng như mong muen.

Computing Edge Betweenness Efficiently

Đei với mỗi nút N trong biXu đồ:

-Thực hiện tam kiếm theo chiUu rộng c_a đồ thị bct đru tT nút N.

-Xác định se lượng đưbng đi ngcn nhất tT N đến mọi nút khác.

-Dựa trên những con se này, xác định lượng luồng tT N đến tất cả các nút khác ss dfng mỗi cạnh.

Chia tổng lưu lượng c_a tất cả các cạnh cho 2

The Girvan-Newman algorithm is utilized in this method, which involves analyzing a graph to identify communities This approach focuses on removing edges with the highest betweenness centrality to effectively detect and separate clusters within the network.

The edge betweenness centrality of a graph can be calculated using the function `nx.edge_betweenness_centrality(G5, k=None, normalized=True, weight=None, seed=None)` This function returns a dictionary of edge centrality values, which can be extracted into a list of values and keys To identify the edges with the highest centrality, the algorithm iterates through the values, maintaining a list of maximum values and their corresponding indices When a new maximum is found, the previous maximum list is cleared, and the new index is appended If a value matches the current maximum, its index is added to the list Finally, the indices of the edges to be removed are printed, providing a clear output of the edges with the highest betweenness centrality.

G5 remove_edge(* keys i [ ]) nx.draw( G5, with_labels True = )

Thuật toán phân chia đồ thị theo thành phần liên thông là một phương pháp quan trọng trong lý thuyết đồ thị Phương pháp này cho phép chia đồ thị đã cho thành các thành phần nhỏ hơn, mỗi thành phần liên thông có kích thước không vượt quá một giá trị nhất định (n) Điều này giúp tối ưu hóa việc xử lý và phân tích các đồ thị phức tạp, nâng cao hiệu suất trong các ứng dụng thực tiễn.

-B1:Lâ Yp danh sách S lưu các đồ thị liên thông cV trong G.

Nếu trong danh sách không có đồ thị nào có số đỉnh lớn hơn n, chuyển đến B5 Đối với đồ thị liên thông nhỏ S trong đồ thị lớn G, nếu S có số đỉnh lớn hơn n, thực hiện thuật toán Girvan-Newman.

-B4:Câ Yp nhâ Yt lại danh sách S Sau đV, quay lại bước 2.

Cài đă Yt thuâ Yt toán: def cond( list a , ): for i in list : if(i > a): return True return False devide_val=4 # gia tr s ph n t (n) i ô â ư

The article discusses the process of analyzing connected components within a graph using NetworkX It begins by identifying subgraphs from a main graph, G6, and calculating their lengths A conditional loop is employed to examine each subgraph, focusing on those that exceed a specified threshold, devide_val The edge betweenness centrality is then computed for these subgraphs, allowing for the identification of key edges based on their centrality values The algorithm tracks the maximum centrality values and their corresponding keys, ultimately printing out the edges that are candidates for removal based on their centrality metrics.

[ S = G6 subgraph( ) copy() c for c in nx connected_components( G6 ) ] len_S =[len( )for m m in ] S nx.draw( G6, with_labels True = )

Ngày đăng: 02/11/2023, 01:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN