Nghiên cứu phương pháp lan truyền nhãn và ứng dụng đề tài phát hiện cấu trúc cộng đồng trên đồ thị mạng xã hội

90 2 0
Nghiên cứu phương pháp lan truyền nhãn và ứng dụng đề tài phát hiện cấu trúc cộng đồng trên đồ thị mạng xã hội

Đ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

TRƯỜNG ĐẠI HOC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN TÊN ĐỀ TÀI: NGHIÊN cúu PHƯƠNG PHÁP LAN TRUYỀN NHÃN VÀ ƯNG DỤNG ĐÈ TÀI PHÁT HIỆN CẤU TRÚC CỘNG ĐỔNG TRÊN ĐỒ THỊ MẠNG Xà HỘI Họ tên học viên: Nguyễn Trung Kiên Chuyên ngành: CNTT Mã số: 8480201 Giảng viên hướng dẫn: PGS.TS Đoàn Văn Ban Hà nội, tháng 12 năm 2022 LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu khoa học riêng hướng dẫn khoa học PGS.TS Đoàn Văn Ban Các nội dung nghiên cứu, kết đề tài trung thực chưa cơng bố hình thức trước Những số liệu bảng biếu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham kháo Ngoài ra, luận văn sử dụng số nhận xét, đánh số liệu cùa tác già khác, quan tố chức khác có trích dẫn thích nguồn goc Neu phát có gian lận tơi xin hồn tồn chịu trách nhiệm nội dung luận văn Tác giả luận văn Nguyễn Trung Kiên LỜI CẢM ƠN Lời đầu tiên, xin gửi lời biết ơn sâu sắc đến PGS.TS Đồn Văn Ban người tận tình hướng dẫn, chì bảo, giúp đỡ tơi suốt q trình làm luận văn Tôi giri lời cảm ơn đen thầy cô giảng dạy thầy cô Khoa Công nghệ Thông tin Trường Đại Học Mờ Hà Nội truyền đạt giúp đờ suốt trình học tập Và cuối gửi lời cảm ơn đen đồng nghiệp, bạn bè gia đỉnh, người úng hộ, động viên tạo điều kiện giúp đỡ đế tơi có kết học tập ngày hôm Tôi xin chân thành cảm ơn! II Contents LÒĨ CAM ĐOAN I LỜI CAM ON II DANH MỰC TỪ VIẾT TẲT V DANH MỤC CÁC BẢNG VII DANH MỤC CÁC HÌNH VIII LỜI MỞ ĐẦU IX CHU ÔNG 1: MẠNG Xà HỘI VÀ CỘNG ĐỒNG TRONG MẠNG Xà HỘI 1.1 Mạng xã hội 1.2 Đồ thị mạng xã hội 1.3 Các độ đo hệ số đo đồ thị mạng xã hội 1.4 Cấu trúc cộng đồng đồ thị mạng xã hội 28 1.5 Kết luận chương 31 CHNG 2: PHÁT HIỆN CỘNG ĐỊNG MẠNG Xà HỘI THEO PHUONG PHÁP LAN TRUYỀN NHÃN ’ 32 2.1 Nhóm thuật tốn phát cộng đồng mạng xã hội 32 2.2 Thuật toán Lan truyền nhãn Label Propagation Algorihm (LPA) 43 2.3 Độ đo đánh giá thuật toán phát cộng đồng mạng xã hội 53 2.4 Độ đo trung gian phát cấu trác cộng đồng 56 III 2.5 Kết luận chương 60 CHƯƠNG 3: CHƯƠNG TRÌNH CÀI ĐẬT THUẬT TOÁN PHÁT HIỆN CÁU TRÚC CỘNG ĐỒNG 61 3.1 Mơ tà tốn 61 3.2 Thuật toán GN LPA 64 3.3 Công cụ xây dựng chương trình 67 3.4 Triển khai chương trình với liệu 72 3.5 Kết luận chương 74 KÉT LUẬN VÀ KIÉN NGHỊ 75 4.1 Kết luận 75 4.2 Kiến nghị 76 4.3 Ý nghĩa thực tiễn hướng phát triển đề tài 76 DANH MỤC TÀI LIỆU THAM KHẢO 78 IV DANH MỤC TÙ VIẾT TÁT STT Ý nghĩa đầy đu Từ viết tắt Thuật toán cân phân cụm sứ dụng thuật B1RCH toán phân cấp (Balanced iterative regucing and clustering using hierarchies) Thuật toán lan truyền nhãn chồng chéo cộng COPRA đồng (Community Overlap Label Propagation Algorithm) Thuật toán phân cụm phân cấp dựa tối đa EAGLE hóa đồ thị đầy đù (Agglomerative hierarchical clustering based on maximal clique) Lan truyền đa nhãn cân bang (Balanced multi­ EMLPA label propagation) Mạng lưới đối thủ chung (Generative adversarial GANs networks) Đồ thị mạng tích chập (Graph convolutional GCNs networks) GN GNN LPA 10 MXH Thuật toán Girvan-Newman Đồ thị mạng nơron (Graph neural networks) Thuật toán lan truyền nhãn (Label propagation algorithm) Mạng xã hội V 11 NMF Phân tích ma trận khơng âm sâu (Deep nonnegativc matrix factorization) 12 OLP Tối ưu hóa lan truyền nhãn (Optimized label propagation) 13 SFI 14 SNAP Viện Santa Fe Tập liệu mạng Sanford (Stanford large networks dataset collection) VI DANH MỤC CÁC BẢNG Bàng 2.1: Nhóm thuật toán phát cộng đồng 41 Báng 2.2: Kết thuật toán LPA với kích thước giã định .50 Bảng 2.3: Kct thực nghiệm ví dụ 2.1 b 51 Báng 3.1: cấu hình thực nghiệm phần cứng 66 Báng 3.2: Kết quà so sánh chất lượng cộng dồng phát từ thuật tốn GN LPA73 VII DANH MỤC CÁC HÌNH Hình 1.1: Các trang Mạng xã hội Hình 1.2: Mạng xã hội Facebook Hình 1.3: Mạng xã hội Gapo Hình 1.4: Đồ thị có đinh cạnh 13 Hình 1.5: Những đồ thị hình sao, bánh xe có số đinh 3, 4, 5, 6, 15 Hình 1.6: Đồ thị mạng xã hội đơn giàn gồm nút 17 Hình 2.1: Mơ hình mạng lưới cộng tác cácnhà khoa học làm việc SF1 29 Hình 2.2: Thời gian thực thuật toán LPA 50 Hình 2.3: Thời gian thực ví dụ 2.1 b 51 Hình 2.4: Chất lượng cộng đồng ví dụ 2.1 b 51 Hình 2.5: Độ đo trung gian Hình 1.6 56 Hình 2.6: Tính độ đo trung gian cạnh .57 Hình 3.1: Cộng đồng mạng xã hội Dolphins 60 Hình 3.2: Thống kê liệu mạng ban đầu mạng Dolphins 61 Hình 3.3: Network Data Preview mạng Dolphins 61 Hình 3.4: Thống kê liệu mạng ban đầu mạng Karate 62 Hình 3.5: Network Data Preview mạng Karate 63 Hình 3.6: Trực quan liệu với Matplotlib 68 Hình 3.7: Kết phát cộng đồng mạng Dolphins 72 Hình 3.8: Kết phát cộng đồng mạng Karate 72 VIII LỜI MỞ ĐẦU Phát cộng đồng mạng xã hội trinh tim cấu trúc cộng đồng tồn mạng hiểu mối quan hệ chúng Các cộng đồng thường xác định dựa mối quan hệ chặt chẽ thành viên cộng đồng mối quan hệ yếu liên kết với cộng đong khác Phát cấu trúc cộng đồng mạng xã hội đóng vai trò quan trọng nhiều lĩnh vực phân tích mạng xã hội, truy vấn thơng tin, xác định vai trò tầm quan trọng cúa thành viên mạng, marketing xã hội, nhiều ứng dụng khác Trong toán phát cộng đồng, số phương pháp thơng dụng bao gồm thuật tốn Girvan-Newman, thuật tốn Louvain, thuật toán Label Propagation, thuật toán Spectral Clustering Những phương pháp sử dụng kỹ thuật phân tách đồ thị phân nhóm để tìm cấu trúc cộng đồng mạng xà hội Việc phát khám phá cấu trúc cộng đồng mạng xã hội giúp hiếu rõ tương tác tô chức xà hội, đồng thời cung cấp thơng tin hữu ích cho việc đánh giá qn lý kiện, tượng xã hội Nham giải van đề nêu em lựa chọn đề tài “Nghiên cứu phương pháp lan truyền nhãn ứng dụng dề tài phát cấu trúc cộng dồng dồ thị mạng xã hội” đề tài nghiên cứu Luận văn cao học Những mục tiêu nghiên cứu luận văn: - Tìm hiểu kiến thức ban mạng xã hội, cấu trúc cộng đồng đồ thị mạng xã hội, phương pháp tìm kiểm cấu trúc cộng đồng mạng xã hội - Nghiên cứu độ đo đồ thị mạng xã hội tìm hiểu thuật tốn phát cấu trúc cộng đồng mạng xã hội - Xây dựng ứng dụng phát cộng đồng mạng xã hội tập dừ liệu công bố mạng - Vận dụng sử dụng độ đo khoảng cách đồ thị đế tìm cấu trúc cộng đồng đo thị mạng xã hội IX Thuật toán GN bao gồm bước sau [2]: Thư viện Trường Đại học Mở Hà Nội Hình 3.6: Sư đồ thuật tốn GN Đối với đồ thị liên thông, vô hướng không trọng số G = (V, E) với m = |E|, n = |V| Đồ thị ban đầu G = (V, E) sau rút gọn đồ thị G1 =(V1, E1) với mi = |E|, m = |V| niỊ < m, 72 ] < n [1], [2], - Độ phức tạp bước rút gọn đồ thị (thuật toán REG) O(n) - Độ phức tạp cua bước phát cộng đồng đồ thị rút gọn ơ(mi2 ni) trường hợp đồ thị thưa OCnj3) Như độ phức tạp thuật toán GN ơ(mi2 ni) trường hợp đồ thị thưa ỡ( m3) Độ phức tạp cửa thuật tốn GN m cạnh cần loại bị với mồi bước lặp có độ phức tạp O(w«) cần thời gian ơ(m2n) trường hợp đồ thị thưa 0(n3) 65 3.2.2 Thuật toán LPA Thuật toán LPA triển khai [2], [9] Hình 3.7: Sư đồ thuật toán LPA LPA hoạt động theo bước sau: Xác định đại diện cùa mạng xã hội Đại diện cửa mạng xã hội người có ánh hưởng lớn đến cộng đồng mạng xã hội Họ có thề người nồi tiếng, người có tầm ảnh hưởng lĩnh vực đó, người có nhiều người theo dõi mạng xã hội Tạo mạng lưới đại diện Các đại diện kết nối với thông qua mối quan hệ bạn bè, đồng nghiệp, mối quan hệ khác mạng xã hội Tạo cụm Các đại diện phân chia thành cụm dựa mức độ liên kết cúa họ với Các đại diện cụm có mức độ liên kết cao với 66 so với đại diện cụm khác Độ phức tạp mơ hình xử lý thuật tốn LPA tính sau: Độ phức tạp bước khới tạo: Độ phức tạp cùa bước khới tạo O(n), • n số lượng đại diện mạng xã hội Độ phức tạp bước lặp: Độ phức tạp bước lặp O(m * k), • m số lượng cạnh mạng xã hội k số lượng cụm Độ phức tạp mơ hình xử lý: Độ phức tạp mơ hình xử lý O(n * m * • k), n số lượng đại diện mạng xã hội, m số lượng cạnh mạng xã hội k số lượng cụm 3.2.3 Cấu hình thực nghiệm Bảng 3.1: cấu hình thực nghiệm phần cúng Thơng số kĩ thuật Chi tiết phần cứng Thư viên Trườnc E hnp Mờ Hà Npi 'CÍ»Ư Apple Mì RAM 8Gb SSD 256Gb OS MacOS 3.2.4 Dữ liệu thực nghiệm STT Mạng Dolphins Nguon https://nctworkrcpository.com/soc- dolphins.php Karate https://nctworkrcpository.com/soc- karatc.php 3.3 3.3.1 Cơng cụ xây dựng chương trình Ngơn ngữ lập trình Python ngơn ngừ lập trinh bậc cao cho mục đích lập trình đa năng, 67 Guido van Rossum tạo lần đầu mắt vào năm 1991 Python thiết kế với ưu điếm mạnh dề đọc, dề học dễ nhớ Python ngơn ngữ có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người học lập trinh ngôn ngữ lập trinh dễ học; dùng rộng rãi phát triển trí tuệ nhân tạo cấu trúc Python cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiếu Vào tháng năm 2018, van Rossum từ chức lãnh đạo cộng đồng ngôn ngữ Python sau 30 năm làm việc [2], Python hoàn toàn tạo kiêu động dùng chế cấp phát nhớ tự động; tương tự Perl, Ruby, Scheme, Smalltalk, Tel Python phát triển dự án mã mở, tố chức phi lợi nhuận Python Software Foundation quản lý Ban đầu Python phát triển đế chạy Unix Nhưng theo thời gian, Python dần mở rộng sang hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux hệ điều hành khác thuộc họ Unix Mặc dù phát triền cúa Python có đóng góp nhiều cá nhân, Guido van Rossum tác giả chủ yếu cùa Python Ông giữ vai trò chù chốt việc định hướng phát triền Python Python xếp hạng vào ngôn ngữ lập trình phố biến Thư viện Trường Đại học Mở Hà Nội 3.3.2 Các thư viện sử dụng 3.3.2.1 NctworkX NetworkX thư viện Python đế nghiên cứu đồ thị mạng NetworkX phan mềm miễn phí phát hành theo giấy phép BSD-new NetworkX có tính nối bật như: • Các lớp cho đồ thị chữ ghép • Chuyền đối đồ thị sang từ số định dạng • Khâ xây dựng đồ thị ngẫu nhiên xây dựng chúng tăng dần • Khả tìm đồ thị , cụm , k-lơi • Khám phá liền kề, độ, đường kính, bán kính, tâm, khoảng cách , v.v • Vẽ mạng dạng 2D 3D NetworkX phù hợp đe hoạt động biểu đồ lớn giới thực: ví dụ: biêu đồ vượt 10 triệu nút 100 triệu cạnh Do phụ thuộc vào cấu trúc liệu "từ dien 68 từ điến" Python, NetworkX khung có tính di động cao, hiệu hợp lý, có thề mớ rộng đế phân tích mạng mạng xã hội 3.3.2.2 Matplotlib Python sử dụng nhiều lĩnh vực phân tích dừ liệu, mà khoa học dừ liệu, cơng việc trực tiếp hóa thơng tin qua thị đồ, biếu đồ giúp hiểu mối quan hệ liệu dễ dàng nhiều Matplotlib thư viện sử dụng để vè thị đồ Python Matplotlib thư viện trực quan hóa liệu kết hợp Python Nó tạo John Hunter Đây thư viện đồ họa 2D 3D tuyệt vời đế tạo số liệu khoa học 3.3.3 Các mô đun chương trình 3.3.3.1 Khai báo số nút def _ ỉnỉt_ (self, self._G = self._n = self.max G, max_ỉter=20): G len(G.nodes(False)) iter = maxiter 69 # Số nút 3.3.3.2 Kiểm tra điểm hội tụ # Xét xem có hội tụ khơng? def can_stop(self): # Nhãn nút giống với nhãn nút lân cận for i in range(self._n): node = self._G.nodes[i] label = node["label"] max_labels = self.get_max_neighbor_label(i) if label not in max_labels: return False return True 3.3.3.3 Phát nhãn với nút lân cận lf Phát nhãn với nút lân cận def get_max_neighbor_label( , node_index): m = collections.defaultdict(int) for neighbor_index in sel.! ,_G.neighbors (node_index) : neighbor_label = seif._G.nodes[neighbor_index]["label"] m[neighbor_label] += max_v = max(m.values 0) # có nhiều thè có số, tất cà trả return [item[0] for item in m.items if item[l] == maxv] 3.3.3.4 Cập nhật không đồng _ , # cập nhật không đồng def populate_label( ! ): # Truy cập ngẫu nhiên visitsequence - random.sample ( _G.nodes(), len( : _G.nodes () ) ) for i in visitsequence: node = self._G.nodes[i] label = node["label”] max_labels = ;elf get_max_neighbor_label (i) í Nều nhàn không cập nhặt tập họp nhàn tối đa, không, lựa chọn ngẫu nhiên tương tụ vơ nghía if label not in max_labels: newLabel = random.choice(max_labels) node["label"] = newLabel 3.3.3.5 Phát cấu trúc cộng đồng theo nhãn # Nhận câu trúc cộng đồng theo nhãn def get_communities( ): communities = collections.defaultdict(lambda: listO) for node in self._G.nodes(True) : label = node[1]["label"] communities[label].append(node[0]) return communities.values() 70 3.3.3.6 Hàm trực quan hóa kết # Trục quan hóa kêt quà def showcommunity(G, partition, pos) : # Các phân vùng cộng đồng đuợc biểu thị bẳng biểu tuợng cạnh cộng đồng khác duợc in dậm mâu đen cluster = () labels - (} for index, item in enumerate(partition): for nodelD in item: labels [nodelD] = t + str(nodelD) + If Đặt nhân trực quan hỏa cluster[nodelD] = index a số phân vùng nút # nút trực quan hóa colors = ['r', 'g', 'b', 'y', 'm'] shapes = ['v', 'D', o', 'A', '

Ngày đăng: 28/10/2023, 20:27

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

Tài liệu liên quan