Chương 4. Xây dựng mô hình và thực nghiệm
4.2. Quá trình xử lý bộ lọc tin cho diễn đàn
Bảng 4.1. Ma trận rate đầu vào cho thuật toán CF s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 ... sj … sm ua 4 1 3 5 2 0 0 1 1 4 ... 0 ... 0 u1 5 2 4 5 1 0 0 0 3 5 … 5 … 1 u2 0 4 5 1 0 0 0 0 2 2 … 2 … 2 u3 0 3 4 1 0 1 0 0 1 0 … 1 … 0 u4 2 0 0 1 1 3 0 1 4 3 .. 4 .. 3 u5 3 2 1 5 1 0 2 0 2 1 … 2 … 3
…. … … … … … … …
ui 3 2 1 5 1 0 2 0 1 3 … rui,sj … 1 un-1 1 0 1 1 2 3 0 1 0 0 ... 0 ... 1
Giả sử xét tập người dùng U gồm n người dùng U={u1, u2, … , un } và tập m các bài tin mà những người dùng này có thể tương tác là S = {s1, s2, … , sm} với m phần tử.
Kết quả của bộ phận này là một ma trận rate, trong đó dòng là các người dùng cột là các bài tin. Giao giữa cột và hàng là giá trị điểm (rate) mà người dùng đánh giá cho một bài tin. Các rate này được tính toán tự động dựa trên cơ sở là các tương tác của người dùng trong diễn đàn (trên nhiều hệ thống tư vấn khác rate này người dùng thường cho điểm trực tiếp). Do đặc thù diễn đàn Tuệ Tĩnh tôi xét hai tương tác chính:
nếu u1 đã từng đọc bản tin si thì giá trị rate là 1, nếu u1 có thêm các tương tác khác là comment tin thì mỗi lần comment được tính thêm rate là 1. Vậy rate của u1 với một bản tin si (ru1si) là tổng số lần comment cộng với điểm đọc tin (là 1). Ngược lại rate của u1 cho si là ru1si có giá trị bằng 0 nếu người dùng u1 không có tương tác si.
Ví dụ bảng dữ liệu 4.1, u1 đọc bài tin s9 và comment bài tin này 2 lần nên giá trị rate (điểm đánh giá) giữa u1 và s9 là 1+2=3.
4.2.2. Xây dựng nhóm người dùng tương tự
Ở giai đoạn này tác giả sử dụng phương pháp láng giềng gần nhất
B1- Tính các độ đo tương tự (khoảng cách Euclidean hoặc Cosine) giữa người dùng ua với tất cả n-1 người dùng khác trong hệ thống, sau đó lưu các độ đo này lại.
Xét hai người dùng u1 và u2, ký hiệu tập hợp tất cả các mục tin mà một trong hai người dùng u1 hoặc u2 đã từng truy cập là N = {s1, s2, … , sp} với p phần tử. Vector biểu diễn lịch sử truy cập của người dùng u1 và u2 trong tập N lần lượt là D(u1), D(u2) đã trình bày tại công thức (3.22) và (3.23). Mỗi người dùng đại diện cho một vector có p đối tượng ứng với p chiều cho vector này.
Trong D(u1), phần tử xi là các đánh giá (rate) của người dùng u1 đã từng tương tác với bản tin si; tương tự đối với các phần tử trong D(u2).
- Độ tương đồng lịch sử về sở thích (thị yếu) giữa hai người dùng u1 và u2 dựa theo công thức Cosine giữa vector D(u1) và vector D(u2)
p i
n
i i i
p
i
i i
y x
y x u
u ine
1 1
2 2
1 2
1, )
(
cos (4.1)
- Độ tương tự của hai người dùng còn có thể dựa vào khoảng cách Euclidean.
2 2
2 2 2 1 1 2
1, ) ( ) ( ) ... ( )
(u u y x y x yp xp
euclide (4.2)
B2- Lấy ra k- người dùng được cho là hàng xóm tin cậy với ua bằng cách chọn ra những giá trị có độ tương tự Cosine lớn nhất sẽ có độ tương đồng cao nhất. Hoặc khoảng cách Euclidean nhỏ nhất thì được coi là tương đồng nhiều nhất.
4.2.3. Tạo tốp N gợi ý
Như phân tích ở chương 3 có nhiều cách chọn ra tốp N gợi ý, trong bộ lọc luận văn thiết kế chọn cách tìm tốp N theo tổng rate của các hàng xóm lớn hơn một ngưỡng θ (là trung bình của các tổng rate xét trên tập k hàng xóm).
- Với mỗi người dùng u, ta đã tìm ra tập k người dùng Uk= (ui) nằm trong tập U i =1..k.
Bảng 4.2. Ma trận rate phản ánh k người dùng gần nhất
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 ... sj … sm ua 4 1 3 5 2 0 0 1 1 4 ... 0 ... 0 u1 5 2 4 5 1 0 0 0 3 5 … 5 … 1 u2
0 4 5 1 0 0 0 0 2 2 … 2 … 2 u3 0 3 4 1 0 1 0 0 1 0 … 1 … 0 u4 2 0 0 1 1 3 0 1 4 3 .. 4 .. 3
u5 3 2 1 5 1 0 2 0 2 1 … 2 … 3 u6 0 0 2 4 0 3 0 0 1 0 … 2 … 3
…. … … … … … … …
ui 3 2 1 5 1 0 2 0 1 3 … rui,sj … 1
un-1 1 0 1 1 2 3 0 1 0 0 ... 0 ... 1 Xét người dùng ua;giả sử ta tìm được k hàng xóm tin cậy của ua đó là:
Uk={ui}=(u1 ,u4,u6,….ui)
Ta có: totalus là một mảng chứa tất cả các tổng rate của các ui đánh giá cho từng sj trên tập k người dùng Uk.
us uU sS us
j k
i ri j
total
, (4.3) avgus là giá trị trung bình của các tổng rate si trong tập k người dùng Uk
k total
avgus us (4.4)
Tốp N mục tin tư vấn cho us chính là số các mục tin có tổng totalus > avgus
m item
k user
4.2.4. Kiểm tra điều kiện
Bộ phận này có chức năng kiểm tra những bài tin mà hệ thống gợi ý có trùng các bài mà người dùng đã từng tương tác chưa. Nếu trùng thì loại bỏ ra khỏi bộ kết quả gợi ý. Hoặc kiểm tra xem người dùng này có phải là người dùng mới không để đưa ra hình thức gợi ý phù hợp.
4.3. Ví dụ minh họa quá trình xử lý của bộ lọc
Để hiểu hơn về quá trình xử lý của bộ lọc ta xét ví dụ minh họa trên bộ dữ liệu nhỏ gồm 7 người dùng, 9 bài tin: m=9, n=7.
Với k=3
Bảng 4.3. Bảng ma trận giá trị ví dụ quá trình xử lý bộ lọc s1 s2 s3 s4 s5 s6 s7 s8 s9
ua 4 1 3 5 2 0 0 1 1 u1 5 2 4 5 1 0 0 0 3 u2 0 7 1 0 5 4 0 0 3 u3 0 4 0 0 0 2 3 0 0 u4 2 0 6 0 0 0 0 3 0 u5 0 0 1 0 0 0 3 0 0 u6 0 0 2 4 0 3 0 0 1 1- Tìm hàng xóm tin cậy
Ở đây ta minh họa với độ đo Cosine Xét ua =(4,1,3,5,2,0,0,1,1)
- Độ đo Cosine giữa ua với những người dùng khác là:
Ví dụ:
948 . 80 0 57
64
3 0 0 1 5 4 2 5 ) 1 1 0 0 2 5 3 1 4 (
3 1 0 1 0 0 0 0 1 2 5 5 4 3 2 1 5 ) 4
,
( 2
2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 1
u u similary a
Tương tự ta cũng có:
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
Giả sử ta chọn số hàng xóm tương đồng là k=3, từ đó ta chọn được 3 hàng xóm tin cậy của ua đó là Uk= (u1,u4,u6) có độ đo Cosine với ua là lớn nhất.
2- Tìm tốp N mục tin tư vấn cho ua
Bảng 4.4. Bảng ma trận ví dụ minh họa kỹ thuật tốp N s1 s2 s3 s4 s5 s6 s7 s8 S9
ua 4 1 3 5 2 0 0 1 1
u1 5 2 4 5 1 0 0 0 3
u2 0 7 1 0 5 4 0 0 3
u3 0 4 0 0 0 2 3 0 0
u4 2 0 6 0 0 0 0 3 0
u5 0 0 1 0 0 0 3 0 0
u6 0 0 2 4 0 3 0 0 1
totalus 7 2 12 9 1 3 0 3 4
Ta có: totalus là một mảng chứa tất cả các tổng rate của si trên tập k người dùng (3 người dùng u1,u4,u6)
avgus là giá trị trung bình của các tổng rate si trên tập k người dùng avgus =(7+2+12+9+1+3+0+3+4)/9=4.6
Tốp N mục tin tư vấn cho u1 chính là các mục có tổng totalus > avgus