Chất lượng phân cụm

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu mô hình phân cụm có thứ bậc các đồ thị dữ liệu (Trang 68)

Do độ đo chất lượng phân cụm của thuật toán Rosvall-Bergstrom là chiều dài trung bình của mã miêu tả, khác với độ đo chất lượng modularity của hai thuật toán CNM và Girvan-Newman nên hình bên dưới em chỉ so sánh hai thuật toán sau:

Hình 3.9: Biểu đồ so sánh chất lượng phân cụm

3.4. Phân cụm đồ thị mạng xã hội dựa trên mối quan tâm của người dùng 3.4.1. Giới thiệu

Tại Việt Nam, trang mạng xã hội Facebook được sử dụng rộng rãi nhất. Thông qua trang mạng xã hội này, một lượng rất lớn các nội dung đã được người dùng tạo ra và trao đổi hàng ngày. Trước đây đã có một số công trình nghiên cứu liên quan đến việc phân cụm trong mạng xã hội Facebook dựa trên các mối quan hệ bạn bè (friend) và theo dõi (follow). Tuy nhiên, việc thiết lập một mạng xã hội dựa trên mối quan hệ bạn bè hay theo dõi như vậy mang tính động không cao do số lượng bạn bè cũng như

0 50 100 150 200 250 300 350 400 450 Th ời gian th c thi (giây) Bộ dữ liệu Clauset- Newman- Moore Girvan- Newman Rosvall- Bergstrom 0 0.2 0.4 0.6 0.8 1 1.2 Th ời gian th c thi (giây) Bộ dữ liệu Clauset- Newman- Moore Girvan- Newman

số người theo dõi trang facebook của một người thường khá ít biến động. Ngoài ra, với nhiều trang được thiết lập dưới dạng các nhóm, fanpage ... thì lại không quan tâm tới các mối quan hệ bạn bè. Các người dùng facebook có thể tự do bày tỏ quan điểm của mình trên tường (wall) của các trang facebook đó bằng cách bình luận (comments), thích (likes) hay viết hoặc chia sẻ lên tường facebook đó (post, share). Các hành động đó được gọi là mối quan tâm của người dùng.

Theo thống kê trên internet, trung bình một người dùng Facebook viết 25 bình luận và bấm nút thích 9 lần trong một tháng. Chính những hành động thể hiện mối quan tâm của người dùng sẽ tạo ra các kết nối mạng mà ở đó, số người cùng quan tâm (cùng comments, like, share, post) sẽ xác định độ mạnh của các kết nối này. Sử dụng mô hình dựa trên mối quan tâm của người dùng sẽ tạo ra các mạng với mức độ động cao vì gần như các hoạt động này diễn ra hàng ngày trên Facebook.

Theo một số báo cáo, các trang mạng xã hội có ảnh hưởng tới người tiêu dùng còn lớn hơn cả truyền hình và báo chí. Thêm nữa, các mạng xã hội được xây dựng giữa những người có sở thích tương tự nhau hoặc ngang hàng nhau. Bởi vậy, một trong những ứng dụng của việc phân cụm trong mạng xã hội dựa trên mối quan tâm của người dùng đó là trong lĩnh vực kinh doanh, tiếp thị, nó giúp cho các nhân viên tiếp thị tiếp cận đến đúng các đối tượng khách hàng cần quan tâm.

Theo nội dung nghiên cứu ở chương 2, có nhiều thuật toán được sử dụng cho việc phân cụm trong mạng xã hội, tiêu biểu có thuật toán CNM. Tuy nhiên, việc cực đại hóa giá trị mô đun hóa Q chưa hẳn đã phản ánh đúng việc một mạng có cấu trúc cụm. Trên thực tế, điều này chỉ đúng khi các cụm là các clique (giữa các đỉnh trong cụm đều phải có cạnh nối). Để nhận được giá trị Q cực đại, các thuật toán này kết thúc thường sinh ra nhiều cụm với kích thước rất lớn và chỉ một số cụm nhỏ.

Bởi vậy, cần đề xuất một cách tiếp cận lặp để trích xuất ra các cụm cần quan tâm. Trong cách tiếp cận này, thuật toán bắt đầu với toàn bộ mạng lớn và cho ra một số cụm con ở mỗi vòng lặp. Sau đó, ta sẽ loại bỏ các cụm này ra khỏi mạng và thực hiện thuật toán đệ quy cho các cụm lớn. Thuật toán thực hiện cho tới khi nào không thể chia nhỏ các cụm được nữa hoặc khi kích thước các cụm này thỏa mãn kích thước

cận trên mong muốn của người dùng. Kỹ thuật này sẽ được tác giả áp dụng cho bộ dữ liệu thực tế được thu thập trên mạng xã hội Facebook.

3.4.2. Mô hình hóa dữ liệu

Để xây dựng mạng xã hội dựa trên mối quan tâm của người dùng, ta tiến hành thu thập dữ liệu từ mạng xã hội Facebook. Các tường Facebook là phương tiện để các cá nhân, các nhóm hay các tổ chức, công ty đưa các nội dung như các thông điệp, các chiến dịch hoặc các quảng cáo, xúc tiến thương mại,... Các trang này được cung cấp để các người dùng khác tương tác và giao dịch bằng cách cho phép họ phản hồi hoặc bình luận trên các nội dung đã được đưa lên. Để thu được mối quan tâm của người dùng trên Facebook, em xem xét các bình luận của người dùng trên các nội dung được đăng lên các tường Facebook và sử dụng chúng để xây dựng mạng xã hội sẽ dùng cho việc thực nghiệm ở mục 3.4.5. Trong hình 3.10 là một ví dụ về một nội dung được đăng bởi "Vinamilk - Bí quyết ngon khỏe từ thiên nhiên" trên tường Facebook của công ty này và các bình luận được tạo ra bởi các người dùng quan tâm. Các bình luận và thông tin của người dùng (tên, facebook id...) tham gia bình luận trên tường của một Facebook cụ thể là công khai và có thể thu thập sử dụng Facebook API. Chi tiết cách thu thập dữ liệu được trình bày trong phần sau của luận văn.

Để xây dựng mạng xã hội dựa trên mối quan tâm của người dùng, ta thực hiện như sau:

- Từ dữ liệu thu thập được liên quan đến các bình luận của người dùng, tiến hành tách ra các người dùng phân biệt đơn nhất bằng cách trích rút theo tên và ID facebook của người dùng đó.

- Xác định các người dùng chung giữa hai tường Facebook bất kỳ là người có tham gia bình luận trên cả hai tường Facebook đó.

- Biểu diễn dữ liệu dưới dạng ma trận vuông đối xứng M, kích thước bằng với số lượng các tường Facebook cần xét. Mỗi đường chéo của M là các phần tử M[i,i] biểu diễn số lượng các người dùng đơn nhất bình luận trên tường i và các phần tử M[i,j] với i khác j biểu diễn số người dùng bình luận chung trên hai tường i và j. Nếu giá trị M[i,i] lớn thể hiện số lượng người tham gia bình luận trên tường i rất đông đảo. Giá trị M[i,j] lớn thể hiện nhiều người dùng quan tâm tới cả hai tường i và j. Ở đây ta cần phân biệt rõ: người dùng không phải là tường mà chỉ là người tham gia bình luận các tin, bài viết đăng trên tường đó.

- Tiến hành chuyển đổi dữ liệu này sang dạng đồ thị vô hướng G = (V, E), trong đó V biểu diễn các tường Facebook và E biểu diễn các cạnh nối giữa hai tường Facebook. Giữa hai tường Facebook có cạnh nối khi chúng có số người quan tâm chung lớn hơn 0. Do chúng ta cần tìm ra các cụm có cùng mối quan tâm nên các cạnh này sẽ được đánh trọng số để chỉ độ mạnh của kết nối. Trọng số giữa hai đỉnh i và j, được ký hiệu là w[i,j] và được tính theo chỉ số Jaccard như phương trình dưới đây:

𝑤[𝑖, 𝑗] = 𝑀[𝑖, 𝑗]

𝑀[𝑖, 𝑖] + 𝑀[𝑗, 𝑗] − 𝑀[𝑖, 𝑗] (3.5) Trong đó: M[i,j] là số người dùng cùng quan tâm tới tường i và j, M[i,i] là số người dùng đơn nhất tham gia bình luận tường i, M[j,j] là số người dùng đơn nhất tham gia bình luận tường j. Giá trị trọng số w[i,j] nằm trong khoảng 0 và 1, trong đó w[i,j] càng gần với 1 càng chứng tỏ hai tường này càng tương tự nhau tính theo mối quan tâm của người dùng.

3.4.3. Xây dựng dữ liệu

Để tiến hành thực nghiệm, ta đã thu thập dữ liệu từ 1500 tài khoản (tường) Facebook khác nhau, chủ yếu là Facebook của các nhóm, các fanpage và các Facebook thiết lập ở chế độ công cộng của các công ty, tổ chức, tập đoàn ... Các tài khoản này được thu thập theo cách thủ công (bao gồm tên và facebook id). Cơ sở dữ liệu sử dụng để lưu trữ tập dữ liệu này là MS SQL Server 2008.

Hình 3.11: Một phần danh sách tài khoản Facebook

Sau khi thu thập xong danh sách tài khoản Facebook, ta tiến hành thu thập danh sách các người dùng tham gia bình luận trên Facebook đó, tách ra từng ID người dùng đơn nhất. Cách thức thực hiện được trình bày ở mục dưới.

3.4.3.1. Thu thập dữ liệu mạng xã hội với Facebook API

Để xây dựng chương trình tự động thu thập các bình luận trên tường của một tài khoản Facebook, ta sử dụng công cụ Facebook API [26]. Trước tiên cần đăng ký một tài khoản facebook. Sau đó, truy cập vào liên kết https://developers.facebook.com để tạo một ứng dụng với Facebook API.

Hình 3.12: Giao diện đăng ký một ứng dụng trên Facebook API

Lúc này, ta đã có thể sử dụng các ngôn ngữ lập trình, cụ thể ở đây ta sử dụng Visual Studio 2012 (C#) để xây dựng ứng dụng sử dụng Facebook API để thu thập dữ liệu thông qua công cụ Graph API Explorer.

Một ví dụ thu thập thông tin các bình luận của người dùng trên tường của một Facebook khi dùng Graph API Explorer thủ công như sau:

Để thu thập tự động, ta sử dụng thư viện Facebook.dll với các tham số AppId, Access token của ứng dụng đã đăng ký. Riêng giá trị Access token phải truy cập vào ứng dụng để lấy lại mã vì mỗi giá trị này chỉ có giới hạn phiên làm việc là 2 giờ. Dữ liệu có thể thu thập theo năm, theo số bình luận tối đa trên một trang dữ liệu trả về. Vì thời gian thu thập dữ liệu rất lâu do số lượng bình luận trên các trang này là rất lớn nên ta thu thập dữ liệu theo từng khoảng khác nhau với nhiều ứng dụng cùng thực thi tại một thời điểm. Trong khuôn khổ luận văn này chỉ thu thập các dữ liệu bình luận tính từ năm 2016 trở đi. Bộ dữ liệu thu thập được lưu trữ trên SQL Server 2008 với dung lượng lên tới hơn 4.5 GB.

Hình 3.14: Thu thập dữ liệu tự động với Facebook API

Như ở hình 3.14, 3.15, dữ liệu trả về ở định dạng Json, tiến hành đọc định dạng này và tách ra danh sách ID và đếm số lượng của các người dùng đơn nhất đã bình luận trên các tường Facebook tương ứng.

Hình 3.16: Một phần dữ liệu về danh sách và số lượng ID người dùng đã bình luận trên các tường Facebook tương ứng.

3.4.3.2. Tiền xử lý dữ liệu, xây dựng cấu trúc mạng xã hội dựa trên mối quan tâm của người dùng

Với dữ liệu đã thu thập được, có một số tường Facebook không thu thập được dữ liệu do các tài khoản này đã thiết lập quyền không cho phép thu thập tự động thông qua Facebook API. Ta tiến hành loại bỏ các bản ghi này và một số bản ghi có ít người tham gia bình luận (dưới 100 người) để bộ dữ liệu có ý nghĩa.

Sau đó ta tiến hành xây dựng dữ liệu đồ thị mạng xã hội thu thập được theo mô hình đã giới thiệu ở 3.4.2, và tiến hành xuất ra file FacebookGraphWeight.txt để làm đầu vào cho thuật toán INC phân cụm.

Định dạng file FacebookGraphWeight.text gồm có các dòng là các cạnh của đồ thị với các thông số: đỉnh đầu, đỉnh cuối, số người bình luận chung, số người bình luận trên tường facebook đỉnh đầu, số người bình luận trên tường facebook đỉnh cuối.

Dựa trên các giá trị này, trong chương trình sẽ tính ra được trọng số của các cạnh của đồ thị theo công thức trong 3.4.2.

Sau khi tiền xử lý dữ liệu, bộ dữ liệu thu thập được gồm 1500 đỉnh (FacebookID), 109445 cạnh và 2.604.079 người dùng Facebook đơn nhất tham gia bình luận trên các tường này.

Hình 3.17: Một phần dữ liệu mạng xã hội dựa trên mối quan tâm của người dùng

3.4.4. Xây dựng ứng dụng

Dựa trên các nghiên cứu ở các chương trước, ta tiến hành cài đặt các ứng dụng để đánh giá kết quả đạt được trên bộ dữ liệu thực nghiệm. Các chức năng chính của ứng dụng demo như sau:

3.4.4.1. Tự động thu thập và xây dựng dữ liệu

Được phát triển trên ngôn ngữ C#.NET với bộ Visual Studio 2012 và hệ quản trị CSDL Microsoft SQL Server 2008, kết hợp với thư viện hỗ trợ lập trình Facbook API.

Người dùng nhập vào chuỗi Access Token của ứng dụng theo phiên làm việc của Facebook, nhập vào các tham số thời gian thu thập tính từ năm nào, số bình luận tối đa thu được trên một trang (nếu dữ liệu lớn Facebook sẽ phân trang kết quả trả về), thu thập cho các ID facebook nằm trong khoảng nào (áp dụng cho việc chạy nhiều tiến trình đồng thời - vì chạy một ứng dụng thu thập sẽ rất mất thời gian). Bấm nút "Thu thập comments" để tự động thu thập các bình luận và ghi vào cơ sở dữ liệu:

Hình 3.18: Giao diện tự động thu thập bộ dữ liệu

Sau khi thu thập xong các bình luận, bấm nút "Tách Facebook ID" để tách riêng các ID của người dùng đã bình luận tương ứng với các tường Facebook được lựa chọn. Sau khi tách xong, bấm nút "Xây dựng mạng cụm" để tạo ra file dữ liệu đầu vào cho việc phân cụm.

3.4.4.2. Phân cụm đồ thị mạng xã hội với CNM và INC

Ứng dụng được kế thừa từ bộ thư viện mã nguồn mở SNAP [23] viết trên Visual C++ Console phục vụ cho mục đích nghiên cứu các thuật toán phân cụm. Trong bộ thư viện này có cài đặt thuật toán CNM nhưng chỉ áp dụng cho đồ thị vô hướng không có trọng số. Tiến hành phát triển CNM cho đồ thị vô hướng có trọng số theo yêu cầu của thuật toán INC đã trình bày ở 2.6

Sau đó tiến hành cài đặt thuật toán INC dựa trên thuật toán CNM với tham số đầu vào là đồ thị mạng xã hội đã thu thập được và chỉ số s (cận trên của kích thước các cụm) nếu có. Kết quả xuất ra số lượng cụm, thời gian thực hiện thuật toán và độ đo chất lượng phân cụm của với các thuật toán INC và CNM để tiện theo dõi, so sánh kết quả.

Hình 3.19: Kết quả chạy chương trình phân cụm với INC và CNM.

Ngoài việc xuất ra kết quả chung trên màn hình, chương trình còn xuất ra file kết quả chi tiết (danh sách các cụm và các thành viên trong cụm) dưới định dạng file Json phục vụ cho việc biểu diễn trực quan biểu đồ dendrogram phân chia cụm.

3.4.4.3. Biểu diễn trực quan kết quả phân cụm với CNM cải tiến

Để biểu diễn trực quan kết quả phân cụm, em xây dựng ứng dụng ASP.NET với C# để vẽ biểu đồ dendrogram của file kết quả dưới định dạng Json, sử dụng phần mềm mã nguồn mở D3 [27]. Để việc biểu diễn được chính xác, định dạng file Json được nghiên cứu kỹ lưỡng và được xuất ra tương ứng ở từng vòng lặp đệ quy của thuật toán INC.

3.4.5. Thực nghiệm và đánh giá INC

Để đánh giá kết quả của thuật toán INC, tác giả tiến hành thực nghiệm trên bộ dữ liệu thu thập được ở 3.4.3. Cấu hình máy tính sử dụng để tiến hành thực nghiệm như sau:

- Hệ điều hành: Windows 8.1 64bit

- Processor: Intel(R) Celeron(R) CPU G1840 @2.80GHz - RAM: 8GB.

Kết quả thực thi 2 thuật toán INC và CNM được cho bởi bảng 3.2 dưới đây:

Bộ dữ liệu s Số cụm

Chất lượng phân cụm

(Modularity) Thời gian thực thi (giây)

INC CNM INC CNM INC CNM

Facebook Dataset (1500) 0 321 92 2480.094 1212.408 8.25 7.35 5 284 2651.66 10 224 2730.1 15 188 2785.667 20 168 2754.92 30 140 2713.86 40 137 2721.756 50 135 2719.86

Bảng 3.2: Kết quả thực thi thuật toán INC và CNM

3.4.5.1. Thời gian thực thi thuật toán

Với bộ dữ liệu đầu vào thu thập được: đồ thị 1500 đỉnh và 109445 cạnh, thuật toán INC cho thời gian chạy là 6.60(s), CNM là 5.99(s). Như vậy có thể thấy tốc độ của INC không chênh lệch nhiều so với CNM.

Hình 3.21: Đồ thị so sánh thời gian thực thi INC và CNM

8.25 7.35 0 2 4 6 8 10 Facebook Dataset (1500) Th i g ia n (g y) Bộ dữ liệu (số đỉnh mạng xã hội) INC CNM

3.4.5.2. Số lượng cụm tìm được

Kết quả thực nghiệm tên bộ dữ liệu thu thập được cho thấy số lượng cụm tìm được bởi thuật toán INC là 321 cụm, vượt trội so với thuật toán CNM (92 cụm).

Hình 3.22: Đồ thị so sánh số lượng cụm theo INC và CNM

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu mô hình phân cụm có thứ bậc các đồ thị dữ liệu (Trang 68)

Tải bản đầy đủ (PDF)

(87 trang)