Các bước thực hiện

Một phần của tài liệu Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử (Trang 56 - 59)

Trước tiên, ta cần phải xác định được sự giống nhau(similarity) giữa 2 người dùng. Dữ liệu duy nhất mà chúng ta có là Utility matrix Y, là ma trận thể hiện mức độ quan tâm của các người dùng đến các món sản phẩm thông qua số lượt xem, tương tác với các món sản phẩm này, vậy nên sự giống nhau này phải được xác định dựa trên các cột tương ứng với 2 người dùng trong ma trận này.

Ta xét ví dụ trong bảng sau đây:

u0 u1 u2 u3 u4 u5 u6 i0 5 5 2 0 1 ? ? i1 3 ? ? 0 ? ? ? i2 ? 4 1 ? ? 1 2 i3 2 2 3 4 4 ? 4 i4 2 0 4 ? ? ? 5

Bảng 4.11: ví dụ về utility matrix dựa trên số lượng tương tác của người dùng

Từ bảng utility matrix trên, ta có thể thấy được hành vi của u0 giống với u1 hơn là u2, u3, u4, u5. u6. Từ đó ta có thể dự đoán rằng u0 sẽ quan tâm tới i2 vì u1 cũng quan tâm tới sản phẩm này. Để dự đoán mức độ quan tâm của các người dùng với các sản phẩm chưa biết, ta sẽ thực hiện theo các bước như sau.

Giả sử ta có các người dùng từ u0 tới u6 và các sản phẩm i0 đến i4, trong đó các số trong mỗi ô vuông thể hiện mức độ quan tâm mà mỗi người dùng đã tương tác cho các sản phẩm, giá trị cao hơn thể hiện mức độ quan tâm cao hơn. Các dấu chấm hỏi là các giá trị mà hệ thống cần dự đoán. Đặt mức độ tương tự của 2 người dùng là ui, uj là sim(ui, uj).

Từ utility matrix trên, ta có thể thấy rằng u0 quan tâm nhiều đến i0, i1 và ít quan tâm hơn đối với i3, i4. Tương tự, ta cũng thấy u1 quan tâm nhiều đến i0, i2 và cũng ít quan tâm đối với i3, i4, trái ngược với các người dùng còn lại. Ta cần có một similarity function thỏa mãn:

0 1 0 i

Từ đó, để xác định mức độ quan tâm của u0 lên i2, chúng ta nên dựa trên hành vi của u1 lên sản phẩm này. Ta thấy rằng u1 quan tâm nhiều đến i2 nên hệ thống cần gợi ý i2 cho u0.

Một trong những điều mà ta cũng cần quan tâm là hàm similarity như thế nào là tốt. Để đo similarity giữa hai người dùng, ta thường xây dựng vector đặc trưng(feature vector) cho mỗi người dùng rồi áp dụng một hàm có khả năng đo mức độ tương tự giữa 2 vector đó. Với mỗi người dùng, thông tin đặc trưng của mỗi người dùng mà chúng ta có chính là mức độ quan tâm của từng người dùng đến tất cả các sản phẩm, được đặc trưng bằng mỗi cột trong utility matrix. Tuy nhiên, khó khăn chúng ta gặp phải chính là các cột thường bị khuyết nhiều giá trị (do trong hệ thống có nhiều sản phẩm, tuy nhiên người dùng chỉ tương tác nhiều với một số sản phẩm), ta cần có một biện pháp để khắc phục nhược điểm này. Cách khắc phụ là bằng một cách nào đó ta giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnh hưởng nhiều đến sự giống nhau giữa hai vector.

Một trong những cách khả thi để thực hiện là ta sẽ lấy trung bình cộng của các số lượt xem mả người dùng tương ứng đã xem.

Ta sẽ đi qua từng bước tính toán:

¥! Bước 1: Tính trung bình cộng số lượt view của mỗi người dùng: u0 u1 u2 u3 u4 u5 u6 i0 5 5 2 0 1 ? ? i1 3 ? ? 0 ? ? ? i2 ? 4 1 ? ? 1 2 i3 2 2 3 4 4 ? 4 i4 2 0 4 ? ? ? 5 Trung bình cộng 3.25 2.75 2.5 1.33 2.5 1.5 3.33

Bảng 4.12: tính trung bình cộng số lượt xem của từng người dùng

¥! Bước 2: ta sẽ trừ giá trị số lượt xem của người dùng đi một lượng bằng giá trị trung bình chúng ta vừa tính được, đồng thời thay các giá trị chưa biết bằng 0, ta sẽ ra được một ma trận utility đã được chuẩn hoá (normalized utility matrix). Khi đó bảng utility matrix: u0 u1 u2 u3 u4 u5 u6 i0 1.75 2.25 -0.5 -1.33 -1.5 0 0 i1 0.75 0 0 -1.33 0 0.5 0 i2 0 1.25 -1.5 0 0 -0.5 -2.33 i3 -1.25 -0.75 0.5 2.67 1.5 0 0.67 i4 -1.25 -2.75 1.5 0 0 0 1.67

o! Việc trừ đi trung bình cộng của mỗi cột khiến trong mỗi cột xuất hiện những giá trị dương và âm. Những giá trị dương tương ứng với việc người dùng thích sản phẩm, những giá trị âm tương ứng với việc người dùng không thích sản phẩm. Những giá trị bằng 0 tương ứng với việc chưa xác định được liệu người dùng có thích sản phẩm đó hay không.

¥! Bước 3: ta sẽ áp dụng hàm cosine similarity để tính độ tương tự giữa các người dùng. Mức độ tương tác của từng người dùng với các sản phẩm được mô hình hoá bằng các vector ui. Độ tương tự của hai người dùng được tính bằng cos của góc hợp bởi 2 vector đặc trưng của 2 người dùng. Cho 2 vector u1 và u2, ta có công thức tính cosine similarity như sau:

sim(ui, uj) u0 u1 u2 u3 u4 u5 u6 u0 1 0.83 -0.58 -0.79 -0.82 0.2 -0.38 u1 0.83 1 -0.87 -0.4 -0.55 -0.23 -0.71 u2 -0.58 -0.87 1 0.27 0.32 0.47 0.96 u3 -0.79 -0.4 0.27 1 0.87 -0.29 0.18 u4 -0.82 -0.55 0.32 0.87 1 0 0.16 u5 0.2 -0.23 0.47 -0.29 0 1 0.56 u6 -0.38 -0.71 0.96 0.18 0.16 0.56 1

Bảng 4.14: kết quả tính toán cosine similarity giữa các người dùng

¥! Bước 4: Ta sẽ dự đoán mức độ quan tâm của người dùng lên một sản phẩm nào đó dựa trên các người dùng gần nhất. Công thức phổ biến để dự đoán mức độ quan tâm của u cho i là:

o! Trong đó N(u, i) là tập hợp k người dùng có similarity cao nhất của u đối với i.

o! Ví dụ: ta sẽ dự đoán mức độ quan tâm của u1 cho i1 dựa trên mức độ quan tâm của 2 người dùng gần nhất. Cách dự đoán như sau:

§! Các người dùng đã tương tác với i1 là u0, u3, u5.

§! Similarity của u1 với các người dùng u0, u3, u5 lần lượt là 0.83, -0.4, -0.23. Chọn ra 2 người dùng có similarity cao nhất là 0.83, -0.4 ứng với u0 và u5. §! Dựa vào bảng utility matrix đã được chuẩn hoá, ta có được giá trị mức độ quan tâm trung bình của u0, u5 với sản phẩm i1, ta có được 2 giá trị mức độ quan tâm lần lượt là: 0.75 và 0.5.

§! Dự đoán kết quả: cosine_similarity( , ) . = T 1 2 1 2 1 2 2 2 u u u u u u j j j i,u j u N(u,i) i,u j u N(u,i) y sim(u, u ) ˆy sim(u, u ) Î Î = å å 1 1 i ,u 0.83 0.75 ( 0.23) 0.5 y 0.48 0.83 0.23 ´ + - ´ = » + -

o! Một cách tương tự, ta sẽ dự đoán kết quả về khả năng quan tâm chưa biết trong bảng 3 như sau:

u0 u1 u2 u3 u4 u5 u6 i0 1.75 2.25 -0.5 -1.33 -1.5 0.18 -0.63 i1 0.75 0.48 -0.17 -1.33 -1.33 0.5 0.05 i2 0.91 1.25 -1.5 -1.84 -1.78 -0.5 -2.33 i3 -1.25 -0.75 0.5 2.67 1.5 0.59 0.67 i4 -1.25 -2.75 1.5 1.57 1.56 1.59 1.67

Bảng 4.15: kết quả dự đoán khả năng quan tâm của người dùng với sản phẩm

o! Các giá trị dự đoán lớn hơn 0 tương ứng với người dùng có khả năng quan tâm đến các sản phẩm tương ứng. Ví dụ, ta dự đoán mức độ quan tâm của u0 với i2 là 0.91 > 0, nghĩa là ta sẽ dự đoán được là khả năng u0 có quan tâm đến i2, vì vậy ta sẽ gợi ý i2 cho u0. Tương tự, ta thấy mức độ quan tâm của người dùng u2 đến i1 là -0.17 < 0, nghĩa là ta sẽ dự đoán được là khả năng u2 không quan tâm đến i1 nên ta sẽ không gợi ý sản phẩm này cho i2.

Một phần của tài liệu Ứng dụng phân hệ gợi ý vào hệ thống thương mại điện tử (Trang 56 - 59)