Qua môn học này, chúng em đã nắm được các khái niệm cơ bản liên quan đến mạng xã hội, các đặc trưng mạng, một số nguyên tắc xã hội và ứng dụng của mạng xã hội trong thực tế cũng như mô hình hóa và biểu diễn mạng, tính các độ đo và ứng dụng các độ đo này tìm tác nhân có tầm ảnh hưởng, vận dụng các phương pháp trích xuất thông tin chứa trong một mạng xã hội để đo lường và mô tả mạng, phân tích thống kê và đại diện trực quan, dự đoán hành vi của mạng các ứng dụng cụ thể của việc phân tích mạng trong quản lý, chiến lược phát triển, sự lan truyền những ý tưởng mới, sự đổi mới và khám phá cộng đồng mạng xã hội. Chúng em được cô trang bị cho một nền tảng để định hướng cho công việc sau này trong tương lai.
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THỐNG THÔNG TIN
ĐỒ ÁN CUỐI KÌ MẠNG XÃ HỘI
TÊN ĐỀ TÀI: MẠNG LIÊN KẾT GIỮA CÁC MÓN
ĂN ẤN ĐỘ DỰA TRÊN THÀNH PHẦN NGUYÊN
LIỆU
Thành phố Hồ Chí Minh, ngày 09, tháng 12 , năm 2020
Trang 2LỜI CÁM ƠN
Lời nói đầu tiên này cho phép chúng em gửi lời cảm ơn sâu sắcnhất đến với cô Nguyễn Thị Kim Phụng Cảm ơn cô trong suốt thờigian qua đã tận tình giảng dạy, truyền đạt cho chúng em những kiếnthức hữu ích trong môn Mạng xã hội
Qua môn học này, chúng em đã nắm được các khái niệm cơ bảnliên quan đến mạng xã hội, các đặc trưng mạng, một số nguyên tắc
xã hội và ứng dụng của mạng xã hội trong thực tế cũng như mô hìnhhóa và biểu diễn mạng, tính các độ đo và ứng dụng các độ đo nàytìm tác nhân có tầm ảnh hưởng, vận dụng các phương pháp tríchxuất thông tin chứa trong một mạng xã hội để đo lường và mô tảmạng, phân tích thống kê và đại diện trực quan, dự đoán hành vicủa mạng các ứng dụng cụ thể của việc phân tích mạng trong quản
lý, chiến lược phát triển, sự lan truyền những ý tưởng mới, sự đổi mới
và khám phá cộng đồng mạng xã hội Chúng em được cô trang bịcho một nền tảng để định hướng cho công việc sau này trong tươnglai
Cuối lời, chúng em kính chúc cô cùng gia đình thật nhiều sứckhoẻ, hạnh phúc và riêng cô sẽ đạt thêm nhiều thành công, tâmhuyết trên con đường sự nghiệp
Thành phố Hồ Chí Minh, ngày 09 tháng 12 năm 2020
Nhóm sinh viên thực hiện
Trang 3NHẬN XÉT CỦA GIÁO VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
…………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4MỤC LỤC
I Tổng quan đề tài 6
1.1 Ý tưởng 6
1.2 Dữ liệu 6
1.2.1 Mô tả bộ dữ liệu gốc 6
1.2.2 Xử lý dữ liệu 7
1.2.3 Kết quả 9
II Thể hiện mạng lưới liên kết tổng quan giữa các node 10
2.1 Hiển thị sơ đồ kết nối tổng quan với Python 10
2.2 Hiển thị graph trên Gephi 15
III Tính và visualize các độ đo bằng Python và Gephi 16
3.1 Degree Centrality (độ đo trung tâm dựa trên bậc của nút) 16
3.1.1 Sử dụng Python 16
3.1.2 Sử dụng Gephi 18
3.2 Closeness Centrality (độ đo trung tâm dựa trên sự gần gũi) 20
3.2.1 Sử dụng Python 20
3.2.2 Sử dụng Gephi 22
3.3 Betweeness Centrality (độ trung tâm ở giữa) 24
3.3.1 Sử dụng Python 24
3.3.2 Sử dụng Gephi 26
3.4 Eigenvector Centrality 27
3.4.1 Sử dụng Python 28
3.4.2 Sử dụng Gephi 29
3.5 Pagerank 31
3.5.1 Sử dụng Python 31
3.5.2 Sử dụng Gephi 33
3.6 Harmonic (số bình quân điều hòa) 35
3.6.1 Harmonic Mean với Python 35
3.6.2 Harmonic Closeness Centrality với Gephi 37
Trang 5IV Thuật toán gom cụm, chia cộng đồng 38
4.1 Thuật toán Louvain 38
4.1.2 Chia cộng đồng với Python 38
4.1.2 Chia cộng đồng với Gephi 39
4.1.3 Nhận xét các cộng đồng 40
4.2 Thuật toán Girvan-Newman 42
4.2.1 Chia cộng đồng với Python 42
4.2.2 Chia cộng đồng với Gephi 43
4.2.3 Nhận xét các cộng đồng 46
V Bảng phân công công việc và đánh giá thành viên 47
VI TÀI LIỆU THAM KHẢO 47
Trang 6I Tổng quan đề tài
1.1 Ý tưởng
Nhóm chúng em sẽ đi tìm mạng lưới mối liên hệ giữa các món ăn(Name) dựa trên thành phần nguyên liệu (Ingredients) của chúng.Nhóm sử dụng các độ đo Closeness Centrality, Harmonic Means,Page Rank, Hub, Betweenness Centrality, Eigenvector-Centrality,Edges Betweenness Centrality để biểu diễn các mối quan hệ, từ đó,tìm ra món ăn có số mối liên hệ về nguyên liệu nhiều nhất
Ấn Độ giáo, các lựa chọn văn hóa và truyền thống Tập dữ liệunày bao gồm thông tin về các món ăn Ấn Độ khác nhau , thànhphần của chúng , xuất xứ của chúng , v.v
prep_time : thời gian chuẩn bị
cook_time : thời gian nấu
flavour_profile : hồ sơ hương vị bao gồm xemmón ăn có vị cay, ngọt, đắng, v.v
Trang 7 course : món ăn - món khai vị, món chính, móntráng miệng, v.v.
state : nơi nổi tiếng với món ăn đó hoặc nguồngốc món ăn
region : khu vực mà bang thuộc về
- Nhận xét: Dữ liệu đầy đủ, không xuất hiện giá trị nào bị thiếu
1.2.2 Xử lý dữ liệu
Hai thuộc tính nhóm chúng em chọn để phân tích là “Name” và
“Ingredients” Chúng em sẽ sử dụng thuộc tính “Name” làmnút/nodes cho sơ đồ Cạnh/edges được hình thành dựa trên các món
ăn có cùng 1 trong những nguyên liệu giống nhau
Trang 8- Các bước thực hiện để tạo ra 2 tập tin nodes.csv và edges.csv
Bước 1: Cài đặt và gọi các thư viện cần thiết
Bước 2: Upload tệp dữ liệu vào google colab
Bước 3: Gán tệp dữ liệu excel vào tên df và đọc file df
Bước 4: Tách nguyên liệu ra riêng lẻ bằng hàm split
Trang 9 Bước 5: Gom nhóm các món ăn có cùng nguyên liệu.
Bước 6: Hình thành các cạnh dựa trên các món có cùng 1 trongnhững nguyên liệu giống nhau
1.2.3 Kết quả
- File Nodes.csv với 253 nodes
Trang 10- File Edges.csv với 3837 cạnh.
Trang 11II Thể hiện mạng lưới liên kết tổng quan giữa các node 2.1 Hiển thị sơ đồ kết nối tổng quan với Python
- Bước 1: import các thư viện cần thiết và đọc file nodes và
edges vào colab
Trang 12- Bước 2: gọi graph và gán tên cho graph.
- Bước 3: sử dụng Networkx để xem mạng lưới kết nối tổng quát giữa các món ăn
Kết quả:
Trang 13 Nhận xét: Biểu đồ cho chúng ta thấy mạng lưới được chia
thành 2 kết nối lớn và một số cụm nhỏ
- Bước 4: cài đặt thư viện plotly để hiển thị sơ đồ mạng lưới qua plotly
Trang 14- Bước 5: gán list Source và Target từ file Edges.csv cho 2 biến
A, B và gọi vòng lặp for
- Bước 6: Lấy vị trí cho từng node
- Bước 7: thêm vị trí cho node vào graph
- Bước 8: Thêm node và edges vào plotly API
Trang 15- Bước 9: Tô màu node và hiển thị plot qua Plotly Chart-studio.
Kết quả:
Trang 16 Nhận xét: các nodes được liên kết với nhau, trong đó món
“Upma” là node có nhiều liên kết nhất: 102 Tiếp đến là Sev Tameta với 79 kết nối Mức độ phân cấp kết nối các node trải dài từ 0-100 (từ màu xanh-thấp nhất đến đỏ đậm-cao nhất)
Link kết quả: https://chart-studio.plotly.com/~khanhle/23/
#/
2.2 Hiển thị graph trên Gephi
Đọc tập dữ liệu:
- Tập dữ liệu đã được xử lý “Indian.edges.csv” chứa các dữ liệu về cạnh (edges)
- Mở Gephi, chọn Import Spreadsheet và chọn file “Indian_edges.csv” để đưa vàoGephi
- Chọn tab Data Laboratory để xem dữ liệu đã được đọc vào Gephi
+ Dữ liệu các nút (nodes)
+ Dữ liệu các cạnh (edges):
Trang 17Xem visualize graph
- Chọn tab Overview để xem hình ảnh visualize của đồ thị
III Tính và visualize các độ đo bằng Python và Gephi
3.1 Degree Centrality (độ đo trung tâm dựa trên bậc của nút
)3.1.1 Sử dụng Python
- Chạy câu lệnh Python
Trang 18- Kết quả câu lệnh hiển thị bậc của các nút:
- Trực quan hóa Degree qua hình ảnh:
- Kết quả trực quan Degree Centrality được biểu diễn theo thứ tự tăng dần với sựthay đổi các màu sắc tương ứng trong colorbar
Trang 193.1.2 Sử dụng Gephi
- Trong mục Statistics, click “Run” Average Degree
- Biểu đồ thể hiện sự phân bố Degree:
Trang 20- Xem chi tiết Degree của từng nút.
- Kết quả trực quan theo Degree Centrality trong gephi với colorbar tương ứng bên trái
Trang 21- Thống kê 10 nút có bậc cao nhất:
3.2 Closeness Centrality (độ đo trung tâm dựa trên sự gần gũi)
- Closeness Centrality: Là độ đo dựa trên sự gần gũi, chỉ ra một nút trong mạng cóthể truy cập nhanh tới nhiều nút khác trong mạng
- Ở đây, Closeness centrality cho biết món ăn có nguyên liệu gần với các món ănkhác nhất, là món ăn có mối liên kết cho phép nó truy cập đến tất cả các node kháctrong mạng nhanh hơn bất kỳ nút nào khác
3.2.1 Sử dụng Python
- Dựa vào thuật toán của độ đo, ta có đoạn code chi tiết như sau:
Trang 22- Tuy nhiên, Python hỗ trợ các thư viện độ đo được cài đặt sẵn Ta chỉ cần viết 1 câulệnh đơn giản:
- Kết quả ở cả 2 cách đều giống nhau:
- Trực quan hóa độ đo Closeness Centrality bằng câu lệnh:
Trang 23- Kết quả trực quan hóa độ đo Closeness Centrality được biểu diễn theo thứ tự tăng dần với sự thay đổi các màu sắc tương ứng trong colorbar.
- Chạy đoạn code như sau để thống kê 10 nút có Closeness Centrality lớn nhất:
- Kết quả 10 nút có closeness lớn nhất:
3.2.2 Sử dụng Gephi
- Ở Statistics, click Run Network Diameter Trong Network Diameter sẽ cho chúng
ta 3 độ đo gồm Betweeness Centrality, Closeness Centrality và Eccentricity
Trang 24- Sự phân bố của Closeness Centrality:
- Chi tiết độ đo Closeness Centrality của các nút:
- Kết quả trực quan độ đo Closeness Centrality với colorbar tương ứng
Trang 25- Thống kê 10 nút có Closeness cao nhất:
3.3 Betweeness Centrality (độ trung tâm ở giữa)
- Betweeness Centrality: Chỉ số này thể hiện mức độ 1 nút i nằmtrên đường truyền thông tin giữa các nút khác trong mạng, và khiloại bỏ nút này sẽ làm cho mạng bị tách nhiều phần
- Ở đây, Betweeness Centrality cho biết món ăn có vị trí trung tâmtrong mạng, nắm vai trò môi giới trong mạng, có tính trung giancao, ảnh hưởng cao nhất đến sự kết nối của mạng
3.3.1 Sử dụng Python
- Sử dụng câu lệnh để tính Betweeness Centrality bằng thư viện có sẵn trong python
Trang 26- Để trực quan hóa Betweeness Centrality:
- Kết quả trực quan hóa bằng độ đo betweenness centrality:
- Thống kê 10 nút có betweenness centrality cao nhất
Trang 27- Kết quả 10 nút có độ đo betweenness lớn nhất.
3.3.2 Sử dụng Gephi
- Betweeness Centrality đã được chạy trong Network Diameter ở bước trên
- Kết quả betweenness centrality của các nút:
- Trực quan hóa độ đo Betweeness Centrality với colorbar tương ứng:
Trang 28- Thống kê 10 nút có betweenness centrality lớn nhất:
3.4 Eigenvector Centrality
- Eigenvector Centrality (độ đo trung tâm còn được gọi là điểm uytín): Là thước đo ảnh hưởng của một nút trong mạng Điểm sốtương đối được gán cho tất cả các nút trong mạng dựa trên kháiniệm rằng các kết nối đến các nút có điểm số cao đóng góp nhiềuhơn vào điểm số của nút được đề cập hơn là các kết nối bằngnhau đến các nút có điểm số thấp Điểm eigenvector cao có nghĩa
là một nút được kết nối với nhiều nút mà bản thân nó có điểmcao
- Với 2 node có cùng độ đo trung tâm (Degree Centrality) nếu mộtnút được kết nối với nhiều nút quan trọng, nó cũng sẽ là một nút
Trang 29quan trọng, và nếu nó chỉ được kết nối với một vài nút khôngquan trọng thì nó sẽ không quan trọng Nếu A và B có cùng mức
độ trung tâm, nhưng A gắn với tất cả những người có trình độ cao
và B gắn với tất cả những người có trình độ thấp, thì bằng trựcgiác chúng ta muốn thấy A có điểm cao hơn B
3.4.1 Sử dụng Python
- Sử dụng câu lệnh để tính Eigenvector Centrality bằng thư viện có sẵn trong python:
- Kết quả eigenvector centrality của từng nút:
- Để trực quan hóa độ đo eigenvector centrality:
- Kết quả trực quan hóa Eigenvector Centrality với colorbar tương ứng:
Trang 30- Thống kê 10 nút có Eigenvector Centrality cao nhất:
3.4.2 Sử dụng Gephi
- Trong Statistics, click Run vào Eigenvector Centrality
- Sự phân bố giá trị của Eigenvector Centrality
- Xem Eigenvector Centrality của từng nút:
Trang 31- Trực quan hóa Eigenvector Centrality với colorbar tương ứng:
Trang 32- Thống kê 10 nút có Eigenvector Centrality lớn nhất:
Trang 33- Đề trực quan hóa pagerank:
- Hình ảnh trực quan pagerank:
Trang 35- Xem pagerank của từng nút:
- Trực quan hóa Pagerank với colorbar tương ứng:
Trang 36- Thống kê 10 nút có Pagerank lớn nhất:
Trang 373.6 Harmonic (số bình quân điều hòa)
- Số bình quân điều hoà giúp tìm mối quan hệ nhân hoặc chia giữacác phân số mà không phải quan tâm đến mẫu số chung
3.6.1 Harmonic Mean với Python
- Tính harmonic mean sử dụng thư viện có sẵn trong python, có kếtquả:
- Trực quan hóa Harmonic Mean với colorbar tương ứng:
Trang 38- Thống kê 10 nút có Harmonic Mean cao nhất:
3.6.2 Harmonic Closeness Centrality với Gephi
- Độ đo Harmonic Closeness Centraltity đã được Run trong NetworkDiameter ở những bước trên
- Kết quả Harmonic của từng nút:
Trang 39- Trực quan hóa Harmonic Closeness Centrality với color bar tương ứng:
Trang 40- Thống kê 10 nút có Harmonic Closeness Centrality lớn nhất:
IV Thuật toán gom cụm, chia cộng đồng
4.1 Thuật toán Louvain
4.1.2 Chia cộng đồng với Python
- Import các thư viện cần thiết
Trang 41- Phân cụm theo thuật toán Louvain:
- Kết quả phân cụm bằng Louvain: Cộng đồng món ăn Ấn Độ được chia ra thành 5 cụm
4.1.2 Chia cộng đồng với Gephi
- Trong Statistics, click Run Modularity để tiến hành phân cụm
- Kết quả cộng đồng món ăn được chia thành 5 cụm với các tỉ lệ tương ứng 24.9%, 21.34%, 20.55%, 18.97%, 14.23%
Trang 424.1.3 Nhận xét các cộng đồng
- Ở cộng đồng tím, chúng ta có các món: Pani Pitha, Pesarattu,Til Pitha, Churma Ladoo, Bhakri, Patra, Chapati, Panjeeri,Khakhra, Pattor,…
- Ở cộng đồng xanh đậm, chúng ta có các món: Qubani kameetha, Copra paak, Kuzhi paniyaram, Chhena poda, Lyang
Trang 43cha, Coconut vadi, Dharwad pedha, Rasabali, Basundi, Double
ka meetha,…
- Ở cộng đồng xanh nhạt, chúng ta có các món: Luchi, Shukto,Tandoori Fish Tikka, Papadum, Chikki, Kansar, Misti doi,Pongal, Pithe, Modak,……
- Ở cộng đồng xanh lá cây, chúng ta có các món: Undhiyu,Sambar, Pani puri, Halvasan, Bisi bele bath, Upma, Poriyal,Kombdi vade, Keerai poriyal, Sandige,…
- Ở cộng đồng vàng, chúng ta có các món: Red Rice, Sattu kiroti, Alu Pitika, Konir Dom, Masor tenga, Aloo gobi, Beef Fry,Mishti Chholar Dal, Chingri malai curry, Vindaloo,……
1) Xét nguyên liệu 10 món ở cộng đồng xanh lá cây ở trên:
Chúng ta thấy nguyên liệu của các món ăn trong cộng đồngxanh lá cây có ít nhất 1 nguyên liệu là giống nhau với 1 trongnhững nguyên liệu của các món ăn còn lại ( vd: món Kombdi
vade có nguyên liệu red chili giống với món Sandige).
2) Xét nguyên liệu 10 món ở cộng đồng xanh nhạt ở trên:
Chúng ta thấy nguyên liệu của các món ăn trong cộng đồng
xanh nhạt có ít nhất 1 nguyên liệu là giống nhau với 1 trongnhững nguyên liệu của các món ăn còn lại ( vd: món Pithe có
Trang 443) Tương tự với các món ở cộng đồng tím , xanh đậm , vàng,
nhóm đã đối chiếu và chứng minh được nguyên liệu của cácmón ăn trong cộng đồng của nó có ít nhất 1 nguyên liệu làgiống nhau với 1 trong những nguyên liệu của các món ăn cònlại
Chúng ta thấy nguyên liệu các món ăn ở cộng đồng xanh lácây không có nguyên liệu nào giống với cộng đồng xanh nhạt,
vì vậy chúng ta có thể tái khẳng định rằng đây là 2 cộng đồngkhác nhau và cách phân chia thành 5 cộng đồng khác nhaucủa phân cụm Louvain là chính xác
4) Tần suất xuất hiện phân cụm Louvain:
- Cộng đồng tím: curry leaves (25 lần), rice flour (21 lần),
4.2 Thuật toán Girvan-Newman
4.2.1 Chia cộng đồng với Python
- Tìm số components được kết nối với nhau bằng thuật toán Girvan
- Newman
- Tìm các cộng đồng trong graph và các nút hình thành cộng đồng:
Trang 45- In ra các nút hình thành cộng đồng:
- Để vẽ ra các cộng đồng được phân biệt bằng 2 loại màu nút
- Hình ảnh 2 cộng đồng được visualize:
Trang 464.2.2 Chia cộng đồng với Gephi
- Cài đặt plugin Newman-Girvan tại website gephi.org
- Vào Tool → Plugin trong Gephi để add plugin Newman-Girvan Clustering vào Gephi
- Trong Statistics, click Run Girvan-Newman Clustering:
- Sự phân bố các cụm được biểu diễn:
Trang 47- Kết quả gom cụm bằng Gephi:
Trang 48Nhìn chung: Dù Gephi chia ra thành 25 cụm, nhưng cơ bản ta thấy
có 2 cụm chính chiếm đa phần một cách rõ ràng (các tỉ lệ còn lạikhông đáng kể vì rất nhỏ chỉ có 1 phần tử)
4.2.3 Nhận xét các cộng đồng
Trang 49- Chúng ta có 2 cộng đồng:
+ Cộng đồng 1: Gồm 2 món ăn là Qubani ka meetha (Nguyênliệu: Apricots, sugar syrup) và Lyangcha ( Flour, fried milkpower, sugar syrup)
+ Cộng đồng 2: Các món ăn còn lại
1) Xét món ăn Qubani ka meetha, ta thấy chỉ có nguyên
liệu sugar syrup là trùng với nguyên liệu món ăn Lyangcha.
2) Xét món ăn Lyangcha, ta thấy món này có trùng được với
2 món ăn khác (nguyên liệu sugar syrup với món Imarti và
món Qubani ka meetha)
Từ 1 và 2, ta thấy món Qubani ka meetha và Lyangcha đượcphân thành 1 cộng đồng riêng là chính xác
3) Xét các món ăn còn lại, ta thấy mỗi món ăn ít nhiều đều
có ít nhất 1 nguyên liệu là giống với các món ăn khác vì vậychúng được phân thành một cộng đồng riêng
Ví dụ:
+ Món Chikki có nguyên liệu là jaggery giống với món
Ariselu, Mysore pak,…
+ Món Copra paak có nguyên liệu Condensed milk giống với
món Rabri, Kheer sagar, Coconut vadi,…
4) Tần suất xuất hiện phân cụm Girvan Newman:
- Cộng đồng 1: sugar syrup ( 2 lần )
- Cộng đồng 2: sugar ( 48 lần ), ginger ( 29 lần ), garam masala (
27 lần )