nttuyen.files.wordpress.com · web viewtrong tài liệu này, có hai thuật ngữ cần làm rõ...
TRANSCRIPT
Giải quyết vấn đề thưa thớt dữ liệu:Lọc cộng tác sử dụng sự tương quan gián tiếp
Nguyễn Thế Tuyến
Lớp D05CNPM – khoa công nghệ thông tinHọc viện công nghệ bưu chính viễn thông
Tóm tắtLọc cộng tác là một kỹ thuật được áp dụng khá thành công trong các hệ tư vấn, nó được
dùng để đánh giá độ quan tâm của người dùng tới một sản phẩm mới. Trong các hệ
thống lọc cộng tác, các dự đoán được đưa ra dựa trên tập dữ liệu về sở thích người dùng
– sản phẩm có liên quan tới người dùng hoặc sản phẩm. Tuy nhiên, trong trường hợp dữ
liệu ít, độ tương tự trực tiếp giữa hai người dùng hoặc hai sản phẩm chỉ cung cấp rất ít
thông tin cho ta dự đoán. Trong tài liệu này, tôi trình bày một kỹ thuật lọc cộng tác mới,
kỹ thuật này tính toán trên sự tương tự tổng thể giữa các cặp người dùng và sản phẩm, từ
quan điểm trung bình của sự tương tự người dùng và sự tương tự sản phẩm trong hệ
thống. Tôi cũng chỉ ra rằng kỹ thuật này mở rộng các kỹ thuật cũ – các kỹ thuật dựa trên
sự tương tự trực tiếp như thế nào, và minh họa bằng cách kiểm nghiệm trên các tập dữ
liệu khác nhau, từ đó chỉ ra những ưu điểm của kỹ thuật này.
Từ khóa: Hệ tư vấn, lọc cộng tác, vấn đề thưa thớt dữ liệu
1. Giới thiệuLọc cộng tác là một kỹ thuật mạnh và nó đã được áp dụng khá thành công trong nhiều
hệ tư vấn. Về thực chất, lọc cộng tác là một hình thức tư vấn truyền miệng tự động
bằng cách dựa trên sự tương tự giữa những người dùng hoặc giữa những sản phẩm
trong hệ thống và đưa ra dự đoán sự quan tâm của người dùng tới một sản phẩm, hoặc
đưa ra gợi ý một sản phẩm mới cho người dùng nào đó.
Có rất nhiều phương pháp tiếp cận trên hình thức này được trình bày, nhưng các
kỹ thuật này hầu chỉ xét đến sự tương tự trực tiếp giữa hai người dùng hoặc hai sản
phẩm. Trong những phương pháp này, hai người dùng được coi là tương tự nếu họ thể
hiện mối quan tâm giống nhau về cùng sản phẩm thông qua việc mua hoặc đưa ra đánh
1
giá về sản phẩm đó. Tuy nhiên, trên thực tế hai người có thể mua những sản phẩm
hoàn toàn khác nhau nhưng lại có những sở thích giống nhau. Tương tự vậy, hai sản
phẩm có thể không được mua bởi cùng người dùng nhưng hoàn toàn có thể tương tự
nhau. Một điểm khác của cách tiếp cận này là sự nhạy cảm của nó khi có ít dữ liệu,
điều này xảy ra khi có nhiều người dùng nhưng mỗi người lại chỉ mua hoặc đánh giá ở
một hoặc một vài sản phẩm hoặc khi có nhiều sản phẩm nhưng mỗi sản phẩm lại chỉ
được mua bởi một hoặc một vài người dùng. Tuy nhiên, trong rất nhiều trường hợp
thực tế, việc dữ liệu thưa thớt là điều không thể tránh. Ví dụ như khi người dùng mới
đăng ký vào hệ thống nên không có hoặc có ít thông tin về sở thích, hoặc khi một sản
phẩm mới được thêm vào hệ thống nên có thể chưa hoặc mới được mua hay đánh giá
bởi rất ít người dùng. Vấn đề này được biết đến như là một cold-start(khởi đầu lạnh).
Trong bài này, tôi sẽ trình bày một kỹ thuật lọc cộng tác mới có thể làm giảm
vấn đề thưa thớt dữ liệu bằng cách sử dụng độ đo tương tự toàn cục giữa những người
dùng và các sản phẩm. Phương pháp này mô hình hóa sự phụ thuộc giữa độ tương tự
của người dùng và sản phẩm như là một phương trình hệ thống, và chúng ta giải
phương trình này để tìm sự tương tự. Chúng ta sẽ đánh giá phương pháp này trên bài
toán dự đoán đánh giá, ở đây chúng ta có tập các đánh giá về các sản phẩm của người
dùng và chúng ta sẽ dự đoán các đánh giá của người dùng trên các sản phẩm mới.
Tài liệu này được cấu trúc như sau: trong phần 2 ngay sau đây tôi xin trình bày
các ký hiệu sử dụng trong tài liệu và một số các lý thuyết, công việc liên quan. Tiếp
đó, trong phần 3 tôi sẽ trình bày một kỹ thuật mới để khắc phục vấn đề thưa thớt dữ
liệu trong lọc cộng tác và thuật toán tính độ tương tự gián tiếp giữa hai người dùng hay
sản phẩm, phần 4 là một số nhận xét kết luận và hướng nghiên cứu trong tương lai.
2. Các quy ước và công việc liên quanTrong tài liệu này, có hai thuật ngữ cần làm rõ lại. Thứ nhất là khái niệm người dùng –
tức là một người tham gia vào hệ thống, họ thực hiện các giao dịch và đưa ra các đánh
giá. Tiếp đến là khái niệm sản phẩm, sản phẩm ở đây có thể là một mặt hàng được
giao bán, hay cũng có thể là một bản nhạc, một bài báo… sản phẩm là từ chỉ bất cứ thứ
gì trong hệ thống mà được người người dùng thực hiện các thao tác hay đưa ra các
đánh giá lên nó.
2
Trong hầu hết những hệ lọc cộng tác, dữ liệu luôn sẵn sàng dưới dạng những
đánh giá của người dùng về sản phẩm. Cụ thể, ta đặt U là tập người dùng, P là tập sản
phẩm, và dữ liệu D là tập bộ ba (i, x, r), trong đó là một người dùng, là
một sản phẩm, và là trọng số của sản phẩm x do người dùng i đánh giá. Để
đơn giản những kỹ hiệu này, chúng ta biểu diễn rix là trọng số của của người dùng i
cho sản phẩm x – tức là rix = (i, x, r). Hơn nữa, ứng với mỗi người dùng chúng ta
biểu diễn là tập các sản phẩm được đánh giá bởi người dùng i. Tương tự thế,
là tập người dùng đã đưa đánh giá cho sản phẩm x.
Dựa vào mỗi người dùng và sản phẩm , dự đoán trọng số sản
phẩm chính là dự đoán trọng số của người dùng i cho sản phẩm x. Mở rộng của vấn đề
này là tìm tập k sản phẩm mà rất có thể người dùng sẽ quan tâm – công việc chính
trong các hệ tư vấn hiện nay. Giả sử rằng chúng ta có một hệ thống dự đoán các đánh
giá của người dùng lên các sản phẩm mới, và dựa vào đó ta có thể lấy ra k sản phẩm
được dự đoán có trọng số cao nhất. Cuối cùng, hai vấn đề quan trọng nhất đó là làm
thế nào để tìm được tập k người dùng tương tự với người dùng i nhất dựa trên thị hiếu
về sản phẩm hay làm thế nào để tìm ra tập k sản phẩm tương tự với sản phẩm x nhất để
có thể đưa ra các dự đoán trọng số đánh giá của người dùng và sản phẩm tương ứng.
Phương pháp lọc cộng tác, các kỹ thuật này được chia thành hai nhóm chính là phương
pháp tiếp cận dựa trên bộ nhớ và phương pháp tiếp cận dựa trên mô hình. Chúng ta sẽ
lần lượt tìm hiểu hai phương pháp này trong phần dưới đây.
2.1. Phương pháp tiếp cận dựa trên bộ nhớPhương pháp lọc cộng tác dựa trên bộ nhớ có đặc trưng cơ bản là nó thường sử dụng
toàn bộ dữ liệu đã có để dự đoán đánh giá của một người dùng nào đó về sản phẩm
mới. Nhờ lợi thế là nó có khả năng đưa trực tiếp dữ liệu mới vào bảng dữ liệu, do đó
nó đạt được khá nhiều thành công khi được áp dụng vào các ứng dụng thực tế. Cũng
do đó mà các kỹ thuật này thường đưa ra các dự đoán chính xác hơn trong các hệ trự
tuyến – nơi mà ở đó luôn có dữ liệu mới được cập nhật. Tuy nhiên, chúng ta sẽ nhận
thấy rằng các hệ thống thế này thường gặp phải vấn đề đó là sự thưa thớt dữ liệu.
3
Thông thường, có hai cách tiếp cận dựa trên bộ nhớ: hệ dựa trên người dùng –
tức dự đoán dựa trên sự tương tự giữa các người dùng và hệ dựa trên sản phẩm – dự
đoán dựa trên sự tương tự giữa các sản phẩm. Hệ dựa trên người dùng xác định sự
tương tự giữa hai người dùng thông qua việc so sánh các đánh giá của họ trên cùng sản
phẩm, sau đó dự đoán đánh giá sản phẩm y bởi người dùng i, hay chính là đánh giá
trung bình của những người dùng tương tự với người dùng i. Độ tương tự giữa người
dùng i và người dùng j có thể được tính theo công thức sau:
(2.1)
Trong đó sim(r, r’) là độ đo tương tự đối xứng giữa trọng số r và r’, aij là số
hạng tiêu chuẩn, thường là một hằng số. Một ví dụ cho độ đo tương tự này là hệ số
nhân Gaussian được xác định là trong đó là một tham số, chúng ta có
thể sử dụng aij = |Pi ∩ Pj| như là một số hạng tiêu chuẩn, từ đó độ đo tương tự của
người dùng được định nghĩa như sau:
(2.2)
Sau khi đã tính toán được độ tương tự giữa các người dùng, chúng ta có thể dự
đoán đánh giá của người dùng i trên sản phẩm y như sau:
(2.3)
Nếu uij nằm trong khoảng [0,1] thì là một sự kết hợp lồi của rij và giá trị
cũng nằm trong khoảng [0,1] giống rij. Chú ý rằng hầu hết những hệ thống điển hình
giới hạn các định giá được sử dụng để dự đoán tới nhiều thứ liên quan nhất. Có hai
cách tiếp cận chung để làm việc này là: chỉ xem trọng số đánh giá của người dùng j có
4
hoặc chỉ xem trọng số của tập N người dùng tương tự nhất với người
dùng i.
Những hệ dựa trên sản phẩm thì xử lý theo phương pháp ngược lại: Chúng tính
sự tương tự giữa sản phẩm x và y thông qua so sánh trọng số đánh giá được tạo ra bởi
cùng người dùng i trên sản phẩm x và y, nghĩa là:
(2.4)
Trong đó bxy là số hạng tiêu chuẩn. Trọng số đánh giá được dự đoán bởi người
dùng i về sản phẩm y sẽ thu được như trọng số trung bình của người dùng i về các sản
phẩm x tương tự với y, công thức tính là:
(2.5)
Trong khi khung làm việc nói chung để dự đoán các đánh giá chỉ có khả năng
sử dụng những độ tương tự xuất hiện đơn giản thì các hệ lọc cộng tác điển hình sử
dụng độ đo tương tự phức tạp hơn như độ đo tương tự không gian vecto được tính như
sau:
(2.6)
Ta cũng có thể dùng độ đo tương quan Pearson.
2.2. Phương pháp tiếp cận dựa trên mô hìnhNgược lại với phương pháp dựa trên bộ nhớ, phương pháp tiếp cận dựa trên mô hình
không sử dụng tất cả các dữ liệu đã có để đưa ra dự đoán. Thay vào đó, chúng nắm bắt
thông tin trong từng bước giống như một sự thỏa thuận về mô hình các sở thích của
5
người dùng. Những phương pháp như vậy có nhiều thuận lợi trong việc cung cấp
nhanh và có những dự đoán chính xác, giảm thiểu đi tính nhạy cảm trong trường hợp ít
dữ liệu. Tuy nhiên, chúng thường yêu cầu nhiều thời gian để nắm bắt mô hình, làm
giảm đi hiệu quả trong việc cài đặt trên các ứng dụng trực tuyến – nơi mà dữ liệu
thường xuyên được thêm vào.
Giữa các phương pháp dựa trên mô hình, có một phương pháp rất thành công,
đó là phương pháp Aspect Model(AM). Phương pháp này là biến thể về mặt xác xuất
của phân tích ngữ nghĩa tiềm tàng LSA, mục tiêu của nó là định dạng những kết hợp về
mặt ngữ nghĩa bị ẩn từ dữ liệu đồng xảy ra. Trong trường hợp này, dữ liệu đồng xảy ra
tương ứng với các trọng số đánh giá của người dùng về sản phẩm. Giống với nhiều
phương pháp dựa trên mô hình, phương pháp này không thể sử dụng những trọng số
đánh giá dự đoán của người dùng mới nếu không nắm bắt được mô hình mới. Một
phương pháp tương tự cho phép đưa ra các dự đoán cho người dùng mới là mô hình
User Rating Profile(URP). Phương pháp này sẽ tạo ra các mô hình đại diện cho mỗi
người dùng theo quan điểm tổng hợp, phân tán thông qua biến ngẫu nhiên Dirichlet.
Một phương pháp tiếp cận dựa trên mô hình phổ biến khác là phương pháp
chuẩn đoán cá nhân. Ở phương pháp này, mô hình được xây dựng cho mỗi người dùng
trong hệ thống, sau đó các đánh giá của người dùng lên mỗi sản phẩm được tính bằng
khả năng của người dùng trong mối quan hệ với các mô hình của người dùng khác
nhân với giá trị đánh giá trung bình, giá trị tính được chính là đánh giá được dự đoán.
2.3. Khắc phục vấn đề thưa thớt dữ liệuĐã có rất nhiều cố gắng giải quyết vấn đề thưa thớt dữ liệu. Một phương pháp được
đưa ra với một số thành công đó là phương pháp nhằm làm giảm chiều ma trận số
người dùng – sản phẩm. Chiến lược đơn giản để giảm số chiều là hình thành tập các
cụm sản phẩm hoặc người dùng, sau đó sử dụng các cụm này như một thành phần cơ
bản trong dự đoán. Để phương pháp này tốt hơn thì chúng ta nên sử dụng kỹ thuật
thống kê như nguyên lý phân tích thành phần PCA và kỹ thuật truy vấn thông tin như
chỉ mục ngữ nghĩa tiềm tàng LSI. Về bản chất, những phương pháp giảm số chiều giải
quyết vấn đề thưa thớt bằng cách sinh ra nhiều ma trận tương tác người dùng – sản
phẩm được xem là gần gũi nhất với người dùng và sản phẩm. Tuy nhiên, trong một vài
6
trường hợp, thông tin hữu ích có thể bị mất trong suốt tiến trình giảm chiều ma trận,
làm cho các dự đoán không còn đáng tin cậy nữa.
Giải quyết sự khác nhau của vấn đề thưa thớt dữ liệu chính là sự kết hợp giữa
phương pháp lọc cộng tác với những phương pháp tiếp cận dựa trên nội dung. Thêm
vào đó là nhưng tương tác giữa người dùng – sản phẩm, vì vậy các kỹ thuật này cũng
xem độ tương tự sản phẩm xuất phát từ nội dung của chúng, điều này tạo ra dự đoán
chính xác hơn. Tuy nhiên, khuyết điểm chính của những kỹ thuật này là chúng chỉ có
thể được sử dụng khi nội dung thôn tin có sẵn trong hệ thống, điều này có thể gây khó
khăn trong một số trường hợp.
Cuối cùng, một kiểu khác của những phương pháp này là xem dữ liệu giống đồ
thì song phương, ở đó mỗi nút biểu diễn người dùng và sản phẩm, mỗi cạnh (i, x) được
nối giữa người dùng i và sản phẩm x nếu x được đánh giá bởi i. Hơn nữa, cạnh (i, x)
đưa ra trọng số tương ứng với đánh giá được người dùng i gán cho sản phẩm x. Những
phương pháp này sau đó chuyển hóa độ tương tự giữa những người dùng hoặc sản
phẩm sử dụng lý thuyết đồ thị. Chẳng hạn phương pháp này tính toán độ tương tự giữa
hai người dùng tương ứng với việc tính độ trung bình giữa những nút tương ứng của
chúng trong những đường ngẫu nhiên của đồ thị. Các phép đo khác trên đồ thị cũng
được nghiên cứu, chẳng hạn như khoảng cách ngắn nhất giữa hai nút trên đồ thị,
khoảng ảnh hưởng của các nút trên đồ thị. Hạn chế của các phương pháp này là không
thể hiện tốt độ đo tương tự trong bài toán dự đoán đánh giá.
3. Phương pháp mới trong tính toán độ tương tựTrong phần này, tôi sẽ trình bày một kỹ thuật mới để tính toán độ tương tự toàn cục,
dựa trên việc giải phương trình hệ thống liên quan đến độ tương tự của người dùng và
độ tương tự của sản phẩm. Phương pháp này có một vài thuận lợi so với các phương
pháp đã được đề xuất chính là dự đoán trọng số. Đầu tiên, không giống với các
phương pháp sử dụng độ đo trực tiếp, ở đây nó không chịu ảnh hưởng của vấn đề thưa
thớt dữ liệu. Trong khi điều này cũng đúng trong một vài hệ tư vấn lọc cộng tác dựa
trên mô hình nhưng phương pháp này về cơ bản là dựa trên bộ nhớ bởi nó sử dụng
toàn bộ thông tin đã có vào việc dự đoán. Vì vậy phương pháp này hiệu quả khi được
cài đặt trong các hệ thống trực tuyến. Kỹ thuật mới này đạt được độ tương tự có thể
7
hiện đẹp và đơn giản hơn. Hơn nữa, nó còn cho phép xem xét độ tương tự dựa trên nội
dung đơn giản và dễ hiểu hơn.
3.1. Mô hìnhẢnh hưởng của sự thưa thớt dữ liệu trong các phương pháp tiếp cận dưa trên sự tương
tự trực tiếp nằm ở chỗ các phương pháp này chỉ xét đến những đánh giá trên các sản
phẩm chung của người dùng hoặc các đánh giá của cùng người dùng trên các sản
phẩm khác nhau. Do đó công thức (2.1) và (2.3) ở trên, các đánh giá của người dùng j
chỉ được sử dụng trong dự đoán đánh giá của người dùng i cho sản phẩm x khi Pi ∩ Pj
≠ Ø và . Giả sử, người dùng i và j đã đánh giá trên 1% số sản phẩm trên hệ
thống, số lượng đánh giá này có thể đáng kể, tuy nhiên hệ số tương tự uij là một số
dương rất nhỏ. Tương tự như vậy, sự tương tự giữa hai sản phẩm được tính theo công
thức (2.4) có thể không có nếu dữ liệu thưa thớt.
Để khắc phục vấn đề thưa thớt dữ liệu này, chúng tôi đề xuất một phương trình mở trộng của (2.1) như sau:
(3.7) nếu i ≠ j,
và uij = 1 nếu i = j.
Tương tự chúng ta mở rộng phương trình (2.4) thành:
(3.8) nễu x ≠ y và
pxy = 1 nếu x = y.
Hai công thức này khác với công thức (2.1) và (2.4) ở một vài điểm. Trước hết,
ở đây có một vài số hạng mới và theo thứ tự biểu diễn độ tương tự ưu tiên giữa
hai người dùng và hai sản phẩm. Những số hạng này có thể thu được trong một vài
trường hợp nhờ việc sử dụng thông tin có sẵn trên tập người dùng và sản phẩm của hệ
thống, ví dụ như tuổi, giới thính… của người dùng, kiểu của các sản phẩm, và nếu
không có sẵn thông tin này thì ta đặt thuộc tính này bằng 0. Ngoài ra, để đặt mức ưu
tiên của độ tương này so với sự tương tự tương tác người dùng – sản phẩm, chúng ta
8
sử dụng hai tham số là . Đây chính là điểm khác thứ hai trong việc tính
toán độ tương tự giữa những người dùng và sản phẩm. Do đó, trong tính toán độ tương
tự của hai người dùng, chúng ta sử dụng tất cả các sản phẩm được đánh giá bởi hai
người dùng này thay vì chỉ sử dụng những sản phẩm được đánh giá chung bởi cả hai
người. Tương tự vậy, chúng ta bổ xung vào công thức tính độ tương tự giữa hai sản
phẩm x và y sự tương tự giữa hai sản phẩm này. Điều này tạo nên một ý nghĩa rất lớn
là trong thực tế hai người dùng có thể đưa ra những đánh giá trên hai sản phẩm khác
nhau nhưng không làm ảnh hưởng đến độ tương tự giữa họ. Điều này cũng tương tự
trong trường hợp hai sản phẩm.
Những mô hình sử dụng đẳng thức (2.1) hoặc (2.4) có thể xem là trường hợp
đặc biệt trong mô hình này. Do đó, nếu chúng ta chọn và , trong đó
là biến Kronecker có giá trị nếu x = y và nếu x ≠ y, khi đó đẳng
thức (3.7) sẽ trở thành đẳng thức (2.1). Tương tự, nếu ta chọn và thì
phương trình (3.8) sẽ trở thành (2.4). Ngoài ra, chúng ta có thể thấy độ tương tự được
định nghĩa bằng phương trình này là đối xứng trong một vài điều kiện. Trong trường
hợp độ tương tự người dùng, nếu và aij là đối xứng, nghĩa là và aij = aji,
chúng ta có:
Như vậy, với giả thiết như trên độ tương tự giữa người dùng là đối xứng, chúng
ta cũng thấy rằng độ tương tự giữa sản phẩm là đối xứng nếu và bxy = byx.
9
Trong khi các hệ lọc cộng tác khác chỉ sử dụng độ tương tự người dùng hoặc độ
tương tự sản phẩm thì trong hệ thống này chúng ta dùng cả hai. Do đó hai phương
trình (3.7) và (3.8) luân đi cùng với nhau với các biến uij và pxy phụ thuộc lẫn nhau. Để
tính được uij ta cần biết giá trị pxy và ngược lại. Do đó chỉ có một phương pháp để tính
độ tương tự giữa những người dùng và giữa các sản phẩm là giải quyết toàn bộ hệ
thống cùng một lúc. Ý tưởng này cung cấp một thể hiện dễ nhìn bởi độ tương tự thực
tế là những giá trị đạt được khi hệ thống ở trạng thái cân bằng.
3.2 Thuật toánChúng ta giả thiết rằng aij, bxy, và sim(rix, rjy) độc lập với uij và pxy, chẳng hạn chúng có
thể là một hằng số. Chúng ta có thể lấy sim(rix, rjy) bằng hệ số nhân Gausian và việc
tính nó chỉ cần dựa trên các đánh giá, và , . Với
những giả thiết này thì hệ thống sẽ trở nên tuyến tính. Đặt và
là các vecto hàng, khi đó hệ thống sẽ được phân tích thành
phương trình dạng AX = B, trong đó là một vecto cột
chứa biến, là ma trận cột gồm
hằng số, và A là ma trận chứa giá trị thu được từ sim(rix,
rjy), aij và bxy.
Để giải phương trình này, chúng ta có thể sử dụng phương pháp trực tiếp hoặc
phương pháp lặp. Một phương pháp trực tiếp và hiệu quả nhất là phương pháp phân rã
LU của ma trận A thành bộ ba ma trận mức cao nhất U và bộ ba ma trận mức thấp
hơn L như sau: A = LU. Như vậy, giải pháp này có độ phức tạp tính toán lên đến
. Rõ ràng là điều này không thực tế với một
hệ tư vấn mà CSDL chỉ có 100.000 người dùng và 100.000 sản phẩm.
Với phương pháp lặp, chúng ta sẽ chấp nhận sai số trong việc tính toán độ
tương tự để đạt tốc độ nhanh hơn. Trong trường hợp này, việc có sai số hoàn toàn hợp
10
lý bởi độ chính xác của độ tương tự chỉ làm việc dự đoán các đánh giá thêm phức tạp.
Một lợi thế nữa của phương pháp lặp là chúng sẽ có hiệu quả nhất khi A dư thừa, đây
là một trường hợp thường gặp trong thực tế.
Có lẽ phương pháp lặp đơn giản nhất để giải bài bài toán hệ tuyến tính là
phương pháp lặp Jacobi/Gauss-Siedel. Nguyên lý của phương pháp này là nhằm đánh
giá, tại thời điểm lặp t, giá trị của mỗi biến độc lập và sau đó giải quyết phương trình
này sử dụng giá trị của các biến khác nhau được tính toán ở bước lặp t – 1. Trong
trường này, phương pháp này có thể được thực hiện dễ dàng bởi uij chỉ phụ thuộc vào
pxy và ngược lại. Chúng ta có thể cập nhật độ tương tự theo hai bước sau: đầu tiên,
chúng ta cập nhật uij sử dụng pxy của phép lặp trước sau đó cập nhật pxy sử dụng uij mới
cập nhật được. Trước khi quá trình lặp, các biến cần được khởi tạo để thể hiện các giá
trị dự đoán ban đầu của giải pháp. Khi tồn tại độ tương tự trên nội dung, chúng ta có
thể chọn uii = 1, pxx = 1, và . Nếu không có độ tương tự về nội
dung thi ta có thể chọn và cho những giá trị ban đầu. Thuật toán
được mô tả chi tiết trong thuật toán 3.1
Trong trường hợp chúng ta không có trước thông tin, nghĩa là thì
tương tự trong phép cập nhật lần đầu tiên sẽ là:
Biểu thức này hoàn toàn giống với phương trình (2.1). Nói cách khác, độ tương
tự giữa hai người dùng được tính toán trong phép lặp đầu tiên là đúng với những gì mà
chúng ta thu được bằng việc chỉ xem xét những sản phẩm dược đánh giá bởi cả hai
11
người dùng và bỏ qua những độ tương tự của sản phẩm. Điều này càng chứng tỏ rằng
phương pháp này là mở rộng của phương pháp tính sự tương tự trực tiếp.
Thuật toán 3.1: Phương pháp lặp
3.3 Độ phức tạp thuật toán
Trong thuật toán 3.1, trong mỗi vòng lặp chúng ta cần cập nhật đẳng
thức, trong đẳng thức luôn tính tổng của , số hạng trong việc cập nhật
người dùng và sản phẩm. Vì vậy, mỗi vòng lặp có độ phức tạp
, hơn nữa, đặt T là số vòng lặp cực đại được
thực hiện bởi phương pháp này sau khi đã đạt đến độ hội tụ hoặc giới hạn cho phép,
như vậy, độ phức tạp của thuật toán trong tổng thời gian chạy là . Tuy
12
//Initiation
for doif i = j then
else
end ifend for
for doif x = y then
else
end ifend for
//Main looprepeat
for do
nhiên, số những đánh giá được sinh ra bởi tập người dùng có thể được bao quanh bởi
hằng số Ru, bởi vậy, độ phức tạp sẽ trở thành
.
Một trong những khía cạnh đáng quan tâm của phương pháp lặp đó là nó có thể
hoạt động song song ở mức cao. Thật vậy, với độ tương tự uij và pxy tại vòng lặp t chỉ
phụ thuộc vào độ tính toán ở vòng lặp t – 1, đây là một công việc dễ dàng chia sẻ
những cập nhật mới tải về của độ tương tự giữa nhiều bộ xử lý. Hơn nữa, vì độ tương
tự cập nhật một cách hoàn toàn độc lập, nên thông qua việc sử dụng phương pháp tiếp
cận song song, ta có thể hy vọng rằng tốc độ tuyến tính tăng lên cao từ số lượng bộ xử
lý được dùng.
4. Kết luậnTrong tài liệu này, tôi đã trình bày một mô hình mở rộng của mô hình tư vấn truyền
thống – mô hình tư vấn chỉ dựa trên độ tương tự trực tiếp giữa hai người dùng hoặc
sản phẩm. Trong mô hình này tôi tính toán độ tương tự gián tiếp giữa hai người dùng
hay giữa hai sản phẩm, từ đó đưa ra dự đoán đánh giá của người dùng với sản phẩm
mới.
Trong phần này, tôi cũng trình bày một phương pháp – một thuật toán để giải
phương trình hệ thống từ đó tìm được độ tương tự gián tiếp giữa hai người dùng hoặc
sản phẩm. Mặc dù thuật toán này có độ phức tạp tính toán lớn hơn nhiều so với
phương pháp sử dụng độ tương tự trực tiếp. Tuy nhiên, nó có thể sử dụng mô hình tính
toán song song, điều này có thể giảm đáng kể thời gian tính toán, làm cho thuật toán
có thể được ứng dụng trong hệ tư vấn trực tuyến – nơi luôn có dữ liệu mới được cập
nhật.
Hướng nghiên cứu trong tương lai của tôi là: cài đặt và kiểm nghiệm lại thuật
toán này dựa trên bộ dữ liệu của MovieLens và bộ dữ liệu của GroupLens, nghiên cứu
ứng dụng kỹ thuật này vào xây dựng một hệ tư vấn người dùng, đồng thời nghiên cứu
tiếp các hướng mở rộng phương pháp này với các phương trình tốt hơn và tìm ra mô
hình tốt hơn.
13
Tài liệu tham khảo[1] Chrsistian Desrosiers and George Karypis, “Solving the Sparsity Problem: Collaborative Filtering via Indirect Similarities”, 2008
[2] Manolis G. Vozalis and Konstantinos G. Margaritis, “Applying SVD on item-based Filtering”, 2005
[3] Benjamin Marlin, “Collaborative Filtering: A Machine Learning Perspective”, 2004
14