Quá trình chuyển đổi dữ liệu của bộ lọc

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và ứng dụng khai phá dữ liệu để xây dựng hệ tư vấn cho diễn đàn trực tuyến (Trang 59 - 64)

Dưới đây là chi tiết các bước của quá trình chuyển đổi dữ liệu

B1. Tạo ra bảng dữ liệu bảng user_read chứa user_id (mã user), thread_id (mã bài tin), post_count (số lần comment), thread_read_date (ngày đọc) trích lọc từ hai bảng xf_thread_readxf_thread_user_post

p item

n user User item rate

ua s1 4 ua s2 1 ua s3 3 ua s4 5 ua … … u1 s1 5 u1 s2 2 …. …. … u1 s9 3 … …. ….

Bảng user_read lấy tất cả bài tin ở bảng xf_thread_read có cùng mã thread_id; user_id với bảng xf_thread_user_post và không cùng mã thì lấy giá trị ở bảng xf- thread_read vì bảng xf_ thread_read có thể chứa xf_thread_user_post hoặc ngược lại. Tức là một người dùng comment bài tin nào đó mà không đọc hoặc đọc mà không comment hoặc đã đọc thì sẽ comment. Do đó sẽ tồn tại những giá trị NULL thì kết quả sẽ trả lại là 0.

B2. Tạo ra bảng dữ liệu user_rate chứa user_id (mã người dùng), thread_id (mã bài tin), rate. Giá trị rate này được tạo ra theo quy luật vừa mô tả ở trên. Rate là tổng điểm thu được bởi hai loại tương tác đọc comment.

Vậy với đặc điểm dữ liệu như trên tác giả sẽ xây dựng được bảng rate như hình 4.2. Trong đó, mỗi dòng thể hiện rate của một cặp user-item phản ánh điểm của người dùng dành cho mục tin. Qua đây ta cũng thấy được một người dùng nào đó tương tác với bao nhiêu bài tin, với những bài nào và được hệ thống tính toán ra điểm đánh giá là bao nhiêu. Đây là bảng khá quan trọng được truy vấn từ dữ liệu gốc của diễn đàn Tuệ Tĩnh để từ đây bằng việc dùng code ta chuyển các giá trị thread_id thành một hàng và giá trị cột rate là giao giữa hàng user và cột thread_id thu được ma trận rate cuối cùng bảng 4.1 là đầu vào của thuật toán CF mà luận văn nghiên cứu.

4.6. Thực nghiệm và đánh giá kết quả 4.6.1. Độ đo đánh giá bộ lọc tin diễn đàn 4.6.1. Độ đo đánh giá bộ lọc tin diễn đàn

Có nhiều độ đo đánh giá có thể sử dụng để đánh giá các thuật toán trong hệ tư vấn như: MAE (Mean Absolute Error), coverage, EU (Expected Utility) nhưng độ chính xác (Precision) và độ hồi tưởng (recall) là những độ đo phổ biến nhất trong tìm kiếm thông tin được kế tục nghiên cứu bởi Sarwar và Billsus và Pazzani [21,23]. Độ đo này phù hợp để đánh giá những bài toán như tốp N gợi ý bằng việc xem xét điểm đánh giá các mục tin. Theo Herlicker chúng ta phải xem xét:

- Một lượng lớn các mục tin thường xuyên được đánh giá bởi người dùng nhỏ hơn các mục tin có sẵn trong tập dữ liệu

- Số các mục tin có liên quan trong tập test có thể nhỏ hơn nhiều so với toàn bộ dữ liệu.

Vì vậy, giá trị của độ chính xác và độ hồi tưởng phụ thuộc rất nhiều vào số lượng các mục tin đánh giá bởi mỗi người dùng, do đó giá trị của họ không nên được hiểu là biện pháp tuyệt đối.

Vấn đề tư vấn lấy tốp N (top-N) mục tin cho người dùng, đầu ra của hệ thống là một danh sách các mục tin mà người dùng hài lòng. Điểm quan trọng chủ yếu trong việc đánh giá hệ thống như vậy là chúng ta muốn tìm hiểu xem người sử dụng sẽ quan tâm đánh giá một số hoặc tất cả các mục tin trong danh sách tốp N mục tin. Từ nhiều nghiên cứu chỉ ra rằng chất lượng của bộ lọc cộng tác lấy tốp N gợi ý cũng được thể

hiện qua 3 tiêu chí: độ chính xác, độ hồi tưởng và tiêu chuẩn đánh giá (F1) tổng hợp từ độ chính xác và độ hồi tưởng [21,23,25].

Độ chính xác là tỉ lệ các mục tin được hệ thống đánh giá là “có liên quan” (gợi ý ra cho người dùng) được người dùng phản hồi là gợi ý chính xác trên tổng số mục tin mà hệ tư vấn cho là tốt. Còn độ hồi tưởng là phần trăm các mục tin người dùng cho là “có liên quan” (đến sở thích, đặc điểm đọc của họ) đồng thời hệ thống cũng đã đưa vào kết quả gợi ý cho người dùng đó trên tổng số mục tin mà người dùng đọc.

Để hiểu rõ hơn sự vận dụng độ đánh giá này vào bộ lọc ta gọi:

+ Nr: tổng số các mục tin người dùng quan tâm thực sự (người dùng cho là tốt với họ) trên toàn bộ dữ liệu.

+ Ns: Số các mục tin mà hệ thống gợi ý cho người dùng (bộ lọc đánh giá là tốt). + Nrs: Số mục tin mà bộ lọc gợi ý và được người dùng cho là phù hợp với họ.

Bảng 4.5. Bảng mô tả các thành phần của độ đo đánh giá

Số bài tin RS gợi ý (Recommended)

Số bài tin không được RS gợi ý (Not Recommended)

Tổng Số bài tin người dùng đã quan

tâm (Relevant)

Nrs Nrn Nr

Số bài tin ngươi dùng không quan tâm (Irrelevant)

Nis Nin Ni

Tổng Ns Nn N

Trong bộ dữ liệu diễn đàn, xét trên một người dùng ta coi những mục tin có rate > rate trung bình của tất cả mục tin thuộc vào lớp Relevant (quan tâm) đối chiếu với bảng chính là Nr, còn lại là những mục tin thuộc vào lớp irrelevant (không quan tâm ) tức tập Ni. Để tính recall, precision ta cần chia tập mục tin thành tập những mục tin được bộ lọc tư vấn (Ns) và tập không được tư vấn (Nn). Việc lấy tốp N mục tin tư vấn: số các bài có tổng điểm (xét trên những người dùng tương đồng) > trung bình của các tổng rate (xét trên những người dùng tương đồng) đó. Chú ý rằng: tập Nschính là tập tốp N mà ta đã bàn trong thuật toán.

Từ đó ta có công thức tính 2 độ đo này như sau:

s rs N N ecision Pr (4.5) r s r N N call Re (4.6)

Để hiểu rõ hơn về bản chất hai độ đo này, ta xét lại ví dụ mục 4.3 nhưng xét trên bộ dữ liệu lớn hơn gồm n=6 người dùng, m=13 mục tin như bảng 4.6 và ua là một người dùng trong tập thực nghiệm được lấy ra để thực nghiệm. Trước tiên ta chia tập mục tin ra thành 2 phần, phần 1 chiếm 2/3 bộ mục tin là 9 (13*2/3) làm dữ liệu học

(giả sử từ s1 đến s9) và phần 2 chiếm 1/3 bộ mục tin là 4 (13*1/3) làm dữ liệu kiểm tra (giả sử từ s10 đến s13). Ta dùng bộ dữ liệu học để tìm ra những người hàng xóm tin cậy của ua. Bảng 4.6. Bảng ma trận giá trị ví dụ đánh giá bộ lọc s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 ua 4 1 3 5 2 0 0 1 1 1 0 1 1 u1 5 2 4 5 1 0 0 0 3 0 1 2 3 u2 0 7 1 0 5 4 0 0 3 1 0 0 0 u3 0 4 0 0 0 2 3 0 0 2 0 1 0 u4 2 0 6 0 0 0 0 3 0 1 3 1 0 u5 0 0 1 0 0 0 3 0 0 0 1 1 2 u6 0 0 2 4 0 3 0 0 1 1 0 1 2

Giả sử dùng độ đo Cosine để tính độ tương tự ta đã có kết quả sau:

Similary(ua,u1) = 0.948 Similary(ua,u2)=0.299 Similary(ua,u3) = 0.098 Similary(ua,u4) = 0.549 Similary(ua,u5)=0.126 Similary(ua,u6) = 0.653 Xét số hàng xóm k=3 thì ta chọn được 3 hàng xóm tin cậy của ua là {u1,u4,u6} có độ đo Cosine với ua là lớn nhất.

Tiếp theo ta xét bộ dữ liệu kiểm tra từ s10 đến s13, dùng kỹ thuật lấy tốp N gợi ý đã phân tích ở mục 4.2.3 ta có tốp N mục tin tư vấn cho ualà {s11, s12,s13} có tổng rate lần lượt là 4; 4; 5 (lớn hơn trung bình tổng rate là 3.8) => Ns=3

Xét trên một người dùng thực nghiệm ua ta cũng tính avgua=(1+0+1+1)/4=0.75

Như vậy các mục tin có rate>0.75 là những mục tin mà ua được xem là quan tâm thực sự. Đó là mục tin {s10,s12,s13} có rate lần lượt là 1; 1; 1 Nr=3;

Từ đó ta tính được Nrs=2 (vì bộ lọc đã giới thiệu đúng 2 mục tin trùng với mục tin ua quan tâm thực sự đó là các bài tin s12,s13)

Precision=Nrs/Ns=2/3=66.7% Recall=Nrs/Nr=2/3=66.7%

Một bộ phân lớp hữu ích cho các mục đích gợi ý cần phải đưa ra được nhiều mục tin thông tin thực sự phù hợp cho người dùng (tối ưu độ hồi tưởng), với độ chính xác cao (tối ưu độ chính xác). Để hợp nhất hai giá trị này, Lewis và cộng sự Gale đã đề xuất độ đo F-measure (F1), một giá trị kết hợp có trọng số giữa precision và recall, khoảng giá trị từ 0 đến 1. Các kết quả báo cáo trong luận văn này coi độ chính xác và độ hồi tưởng có tầm quan trọng như nhau. Từ đó, ta có công thức F1 được định nghĩa như sau:

1 2 *precision recall* F precision recall   (5.3)

Vậy với mẫu dữ liệu 4.3 ta tính được:

F1=2*precision*recall/(precision+recall)=2*66.7*66.7/(66.7+66.7)=66.7% F1 nên được tính toán trên mỗi người dùng riêng lẻ và sau đó tính trung bình độ đánh giá trên tất cả người dùng trong tập thử nghiệm T [13] .

Cách đánh giá này sẽ được áp dụng vào đánh giá chất lượng tư vấn của bộ lọc tin diễn đàn Tuệ Tĩnh trong luận văn.

4.6.2. Thực nghiệm và phân tích kết quả

Trong luận văn này quá trình thực nghiệm nhằm kiểm tra môđun lọc cộng tác trên bộ dữ liệu diễn đàn Tuệ Tĩnh xem độ đo Euclidean hay Cosine cho chất lượng bộ lọc cao hơn. Việc chọn số lượng người dùng lân cận k (số người dùng tương đồng) là bao nhiêu cũng quyết định chất lượng tư vấn. Do đó bộ lọc cũng test các giá trị k trong khoảng [5..20] và chứng minh rằng độ chính xác trên bộ lọc này ở mức khá có thể phát triển để vận dụng thực tiễn. Ngoài ra luận văn còn thực nghiệm gợi ý bài tin, mỗi khi nhập mã người dùng thì bộ lọc hiển thị ra nhóm người dùng tương đồng với họ và hiển thị ra danh sách các bài tin gợi ý cho người này.

Bộ lọc cộng tác thực nghiệm dành cho diễn đàn Tuệ Tĩnh chọn bộ dữ liệu có hơn 1628 cặp tương tác user – item, trong đó có khoảng 245 người dùng khác nhau và gần 300 mục tin (mã bài tin). Mỗi người có tương tác với ít nhất 10 bài tin. Để có kết quả đánh giá, ta chia bộ dữ liệu này thành hai phần. Phần một chiếm 2/3 bộ dữ liệu các bài tin ban đầu trên tập người dùng cố định (245 người) được coi là tập học. Phần hai chiếm 1/3 bộ dữ liệu các bài tin ban đầu trên tập người dùng cố định (245 người) được coi là tập kiểm tra.

Quá trình thực nghiệm chọn ngẫu nhiên 10 người dùng gọi là tập người dùng thử nghiệm. Các độ đánh giá này được tính toán trên mỗi người dùng riêng lẻ và sau đó tính trung bình độ đánh giá trên tất cả người dùng trong tập thử nghiệm T. Với mỗi người dùng thử nghiệm ta tìm cộng đồng người dùng tương tự bằng cách sử dụng độ đo Cosine (hoặc Euclidean). Sau khi tìm được cộng đồng người dùng tương tự bộ lọc sẽ áp dụng kỹ thuật lấy tốp N mục tin (xét trên tập dữ liệu kiểm tra) lấy ra được các bài tin trong tập kiểm tra cần tư vấn cho người dùng thử nghiệm. Bộ lọc sẽ đối chiếu với kết quả thực tế mà người dùng thử nghiệm này đã đánh giá các bài tin trong tập kiểm tra. Từ sự trùng lặp giữa bài tin người dùng đọc thực sự với bài tin bộ lọc gợi ý ta tính ra được độ chính xác (precision) và độ hồi tưởng (recall) như phân tích mục 4.6.1.

- Quá trình thực nghiệm với các phép thử trên các giá trị người dùng lân cận (k) khác nhau ta có kết quả thống kê độ chính xác (precision) như bảng 4.7. Quan sát bảng 5.2 ta thấy với user_id = 1305 thì ứng với việc chọn k hàng xóm tin cậy khác nhau sẽ cho độ chính xác khác nhau, k=5 độ chính xác là 59.5 tương tự ta thấy

k=9,11,13,15…..40. Kết quả thử nghiệm cho thấy k=11 cho độ chính xác ổn định và cao nhất.

Bảng 4.7. Thống kê độ chính xác với k hàng xóm khác nhau

Số hàng xóm user_id K=5 K=9 K=11 K=13 683 48.5 58.6 60 59.4 … 1305 59.7 65.3 66.7 60.3 .. 3539 79.4 80.3 80 74.6 … 9701 56.3 51.7 64.3 58.4 .. …… …… ……. ……. …. .. Trung bình 65.2 66.5 67.1 65.6 ……

- Quá trình thử nghiệm trên hai độ đo tương tự Cosine và Euclidean, xét trên từng người dùng trong tập thử nghiệm thì kết quả độ đo F1 được tổng hợp từ hai độ đo precision và recall được thống kê như hình 4.3. Kết quả thực nghiệm này cho biết dùng độ đo Cosine trong bộ lọc tin diễn đàn sử dụng kỹ thuật lọc cộng tác cho kết quả tư vấn cao hơn khi dùng độ đo Euclidean.

53.8% 75.0% 66.7% 75.0% 66.7% 80.0% 75.9% 72.0% 75.0% 50.0% 40.0% 22.2% 33.3% 40.0% 26.7% 28.6% 88.9% 28.6% 28.6% 0.0% 10.0% 20.0% 30.0% 40.0% 50.0% 60.0% 70.0% 80.0% 90.0% 100.0% 64 197 345 683 1305 2749 2803 3539 9701 11309 F1_cosine F1_euclidean User_id F1

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và ứng dụng khai phá dữ liệu để xây dựng hệ tư vấn cho diễn đàn trực tuyến (Trang 59 - 64)

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

(69 trang)