Tải bản đầy đủ (.pdf) (46 trang)

Nghiên cứu bộ đo tin cậy và áp dụng vào hệ thống tư vấn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.54 MB, 46 trang )

1

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN ĐỨC VINH





NGHIÊN CỨU ĐỘ ĐO TIN CẬY VÀ ÁP DỤNG VÀO
HỆ THỐNG TƯ VẤN




LUẬN VĂN THẠC SĨ









Hà Nội – 2011



2

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ



NGUYỄN ĐỨC VINH





NGHIÊN CỨU ĐỘ ĐO TIN CẬY VÀ ÁP DỤNG VÀO
HỆ THỐNG TƯ VẤN



Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60.48.05

LUẬN VĂN THẠC SĨ
Người hướng dẫn khoa học: PGS.TS Hà Quang Thụy







Hà Nội - 2011

5

Mục lục
Chương 1. Mạng tin cậy và độ đo tin cậy
1. 1. Mạng tin cậy 11
1. 2. Khái niệm về sự tin cậy 13
1. 3. Thuộc tính của sự tin cậy 13
1.3.1. Tính bắc cầu 13
1.3.2. Tính tổng hợp 15
1.3.3. Tính cá nhân hóa và tính không đối xứng 15
1. 4. Độ đo sự tin cậy 16
1.4.1. Độ đo tin cậy dựa trên khoảng cách trong mạng tin cậy 17
1.4.2. Độ đo trung bình cộng 18
1.4.3. Độ đo MoleTrust 19
1.4.4. Độ đo TidalTrust 22
1.4.5. Độ đo Advogato 24
Chương 2. Giới thiệu chung về hệ tư vấn 26
2.1. Sơ bộ về hệ tư vấn 26
2.2. Bài toán tư vấn 26
2.3. Phương pháp lọc cộng tác 28
Chương 3. Hệ tư vấn sử dụng độ đo tin cậy 32
3. 1. Giới thiệu hệ tư vấn sử dụng độ đo tin cậy 32
3. 2. Mô hình hệ tư vấn sử dụng độ đo tin cậy 34
3. 3. Phương pháp đánh giá hệ tư vấn 37
Chương 4. Thực nghiệm và đánh giá 39
4.1. Giới thiệu chung về thực nghiệm 39
4.2. Xây dựng các mô hình 39

4.3. Dữ liệu thực nghiệm 40
4.4. Kết quả thực nghiệm 41
4.4.1 Thực nghiệm với hệ tư vấn ngẫu nhiên 41
4.4.2 Thực nghiệm với hệ tư vấn dựa trên lọc cộng tác 41
4.4.3 Thực nghiệm với hệ tư vấn sử dụng độ đo tin cậy 42
4.4.4 Tổng hợp và đánh giá 43

6

Danh sách hình vẽ
Hình 1. Mô phỏng về chuỗi tin cậy 14
Hình 2. Tính tổng hợp của tin cậy 15
Hình 3. Ví dụ độ đo tin cậy dựa trên khoảng cách 17
Hình 4. Ví dụ độ đo Trung bình cộng 18
Hình 5. Mạng tin cậy ban đầu với độ đo MoleTrust 19
Hình 6.Đồ thị tin cậy sau khi loại bỏ các nút có khoảng cách quá xa 20
Hình 7: Ví dụ độ đo TidalTrust 22
Hình 8. Độ tin cậy cho một nút mới 25
Hình 9. Tư vấn dựa trên cộng tác 28
Hình 10. Người dùng đánh giá sản phẩm 32
Hình 11. Hệ tư vấn dựa trên lọc cộng tác 33
Hình 12. Hệ tư vấn dựa trên độ đo tin cậy 33
Hình 13. Mô hình hệ tư vấn sử dụng độ đo tin cậy 34

7

Danh sách bảng
Bảng 1. Danh sách 5 mạng xã hội lớn nhất 11
Bảng 2. Cách thể hiện các mối quan hệ trong mạng xã hội 11
Bảng 3. Giá trị tin cậy của các loại quan hệ trong các trang web 12

Bảng 4. Đánh giá của người dùng về một số bộ phim đã xem 27
Bảng 5. Kết quả độ lệch dự đoán MAE của hệ tư vấn lọc cộng tác 41
Bảng 6. Kết quả độ bao phủ người dùng của hệ tư vấn lọc cộng tác 41
Bảng 7. Kết quả độ lệch dự đoán MAE của hệ tư vấn sử dụng độ đo tin cậy 42
Bảng 8. Kết quả độ bao phủ người dùng của hệ tư vấn sử dụng độ đo tin cậy 43
Bảng 9. Tổng hợp so sánh kết quả giữa các mô hình 43

9

Mở đầu
Ngày nay người dụng Internet đã rất quen thuộc với các diễn đàn, các trang web
đăng ký thành viên và gần đây là sự bùng nổ của các mạng xã hội ảo nhứ Facebook,
Twitter, Google+. Tham gia vào các trang này, người dùng không chỉ được thể hiện
bản thân, mở rộng quan hệ xã hội mà còn cập nhật được thông tin hữu ích, được nâng
cao kỹ năng, kiến thức thông qua việc chia sẻ, giúp đỡ, tương trợ của các thành viên
tham gia. Internet vốn là một mạng ẩn danh, người dùng Internet được đảm bảo không
bị lộ danh tính khi tham giam trực tuyến. Điều này đảm bảo tính riêng tư của cá nhân,
tuy nhiên cũng là điều kiện thuận lợi cho những kẻ xấu ẩn danh trong mạng. Người
dùng mạng ngày càng quan tâm đến sự tin cậy của các tài nguyên trên mạng, sự tin cậy
của những người khác cùng tham gia trong diễn đàn, trong mạng xã hội ảo mà họ đang
tham gia. Các trang web này có cơ chế cho phép người dùng phát biểu rằng họ tin
tưởng vào một thành viên nào đó trong hệ thống, từ đó hình thành lên một mạng các
người dùng tin tưởng lẫn nhau. Nhiều công trình nghiên cứu gần đây đã khai thác
nguồn thông tin hữu ích từ mạng tin cậy này để áp dụng vào nhiều ứng dụng như chia
sẻ file ngang hàng, hệ thống lưu trữ phân tán [27], xếp hạng trang web, các ứng dụng
thương mại điện tử, hệ tư vấn, ứng dụng chặn tin rác (spam),…
Luận văn tập trung nghiên cứu các độ đo tin cậy và áp dụng độ đo tin cậy vào
hệ thống tư vấn nhằm nâng cao chất lượng của hệ tư vấn. Các hệ tư vấn dựa trên lọc
cộng tác khá hiệu quả và đang được sử dụng rộng rãi trong các ứng dụng thương mại
điện tử. Tuy nhiên các hệ tư vấn này gặp một số nhược điểm: Hệ thống không đưa ra

được tư vấn cho người dùng mới, dễ bị kẻ xấu tấn công, người dùng không kiểm soát
được các tư vấn mà hệ thống đưa ra (người dùng không hiểu tại sao được tư vấn các
sản phẩm này). Sử dụng độ đo tin cậy vào hệ tư vấn dựa trên ý tưởng như sau: Trong
cuộc sống hàng ngày, chúng ta quyết định chọn mua hay không một sản phẩm thường
dựa trên lời khuyên của những người mà ta tin cậy. Hệ tư vấn dựa trên độ đo tin cậy
đưa ra tư vấn cho một người dựa trên tư vấn từ những người mà người đó tin cậy,
không những giải quyết được các nhược điểm của hệ tư vấn dựa trên lọc cộng tác mà
còn nâng cao chất lượng tư vấn tới người dùng.
Luận văn bao gồm 4 chương:
Chương một: Mạng tin cậy và độ đo tin cậy trình bày về sự tin cậy, tin cậy trong
mạng xã hội và độ đo tin cậy
Chương hai: Giới thiệu chung về hệ tư vấn trình bày các vấn đề cơ bản nhất về hệ
thống tư vấn, giới thiệu hệ tư vấn dựa trên mô hình lọc cộng tác – hệ tư vấn được dùng
phổ biến hiện này và chỉ ra ưu nhược điểm của mô hình này
10

Chương ba: Hệ tư vấn sử dụng độ đo tin cậy trình bày mô hình của hệ tư vấn sử dụng
độ đo tin cậy
Chương bốn: Thực nghiệm và đánh giá trình bày thực nghiệm mô hình hệ tư vấn đưa
ra trong chương ba và so sánh chất lượng của các mô hình trên với hệ tư vấn dựa trên
lọc cộng tác
Phần kết luận tổng kết kết quả chính của luận văn, các vấn đề còn tồn tại và định
hướng phát triển tiếp theo của đề tài.


11

Chương 1. Mạng tin cậy và độ đo tin cậy
1. 1. Mạng tin cậy
Theo [9], tính cho tới tháng 1 năm 2005, theo thống kê từ 125 mạng xã hội lớn

đã có tổng số 115 triệu người tham gia.
Năm 2009 đánh dấu một kỷ lục ấn tượng của mạng xã hội khi Facebook công
bố con số thành viên chính thức của mạng xã hội này lên tới 300 triệu. Bảng 1 thống
kế lượng người dùng của 5 mạng xã hội lớn nhất tính đến 7/2011 [31]
Bảng 1. Danh sách 5 mạng xã hội lớn nhất
STT
Mạng xã hội
Số lượng thành viên
1
Facebook
750 triệu
2
Twitter
250 triệu
3
LinkedIn
115 triệu
4
MySpace
50 triệu
5
Google Plus
25 triệu
Mạng xã hội trực tuyến mô phỏng một xã hội thu nhỏ, vì thế nó cũng thể hiện
một cách sinh động các mối quan hệ phức tạp trong đời sống thực. Bảng 2 thể hiện các
mối quan hệ được định nghĩa trong các mạng xã hội tiêu biểu.
Bảng 2. Cách thể hiện các mối quan hệ trong mạng xã hội
Mạng xã hội
Các mối quan hệ
Facebook


Bạn bè, vợ/chồng, người yêu, anh chị em, cha
mẹ, ông bà, gia đình, người quen, bạn tốt nhất
Google +

Bạn bè, gia đình, người quen
Naboe

Bạn bè, người yêu, hàng xóm, anh, chị, con
gái/con trai, con nuôi, cha/mẹ, ông/bà, cha mẹ
vợ, cha mẹ chồng, họ hàng, nhân viên, đối tác,
đồng nghiệp, xếp, khách hàng,…
Multiply

Gia đình, vợ/chồng, cha/mẹ, cha/mẹ vợ,
cha/mẹ chồng, con trai/con gái, anh/chị/em,
ông/bà, cháu trai/gái, cô dì chú bác, con nuôi,
anh chị em họ, cha dượng, mẹ kế, bạn của gia
12

đình, họ hàng,…
People Aggregator

Người quen, người không biết nhưng muốn
quen, người bạn biết trong quá khứ, người biết
do nổi tiếng, bạn bè, bạn bè thân thiết, họ hàng

Naseeb

Bạn trực tuyến, người quen biết, bạn bè, bạn

tốt, bạn tốt nhất

Thông tin về các mối quan hệ này hình thành nên một mạng tin cậy, trong đó
mỗi một nút (tiếng Anh: node) là một người dùng tham gia, một mối quan hệ (bạn bè,
anh chị em,…) thể hiện một mức độ thân thiết, tin tưởng lẫn nhau giữa những người
tham gia. Nhiều trang web còn cho phép người dùng đánh giá mức độ tin cậy của
những thành viên khác bằng các con số cụ thể. Bảng 3 thể hiện mức độ của sự tin cậy
được mô hình theo nhiều cách khác nhau.
Bảng 3. Giá trị tin cậy của các loại quan hệ trong các trang web
Trang web
Loại quan hệ
Giá trị tin cậy
Orkut
Trust
0-3
Sexy
0-3
Cool
0-3
Overstock
Business Rating
-2 - +2

Personal Rating
0-5
RepCheck
Social Trust
0-5
Business Trust
0-5

Trust Project
Trust
1-10
Epinions.com
Trust
0-1
Nhận xét: Thông tin về sự tin cậy là thông tin rất phổ biến trong các trang mạng xã
hội, các website thương mại điện tử. Việc nghiên cứu, sử dụng nguồn thông tin hữu
ích này là việc rất có ý nghĩa với hàng trăm triệu người dùng của các ứng dụng kể trên.
Phần tiếp theo sẽ trình bày những nghiên cứu gần đây về mạng tin cậy và khả
năng áp dụng của nó trong nhiều hệ thống thực tế.
13

1. 2. Khái niệm về sự tin cậy
Sự tin cậy được quan tâm, nghiên cứu ở nhiều lĩnh vực, bao gồm cả tâm lý học,
xã hội học, kinh tế, khoa học chính trị, lịch sử, triết học và khoa học máy tính. Mỗi
lĩnh vực có những khái niệm riêng về sự tin cậy, vấn đề chính là có rất nhiều loại tin
cậy và chúng có ý nghĩa khác nhau với từng người, khác nhau trong từng hoàn cảnh cụ
thể [6].
Deutsch [5] đưa ra một định nghĩa về tin cậy thường xuyên được tham chiếu.
Ông nói rằng tin tưởng vào hành vi xảy ra khi một người (giả sử Alice) gặp phải một
tình huống mà cô nhận thấy cách xử lý không rõ ràng. Kết quả của việc hành động
theo một cách này hay một cách khác có thể dẫn đến một kết quả tốt hay xấu, và sự
xuất hiện của các kết quả tốt hay xấu là phụ thuộc vào các hành động của người khác
(giả sử Bob). Hơn nữa, tác động tiêu cực của kết quả xấu là lớn hơn so với tác động
tích cực của kết quả tốt. Việc này thúc đẩy Alice phải đưa ra lựa chọn đúng. Cô tin
tưởng rằng Bob sẽ thực hiện các bước cần thiết để đảm bảo kết quả tốt. Vì thế Alice sẽ
chọn kế hoạch hành động mà trong đó cô tin rằng Bob sẽ hành động tin cậy (giả thuyết
về kết quả xấu có tác động tiêu cực lớn hơn so với kết quả tốt có ý nghĩa tích cực đã
được nghiên cứu trong [10], [28] và cho thấy giả thuyết này không phải luôn đúng)

Sztompka [29] trình bày và biện minh cho một định nghĩa đơn giản, tổng quát
của tin cậy tương tự như của Deutsch: "Tin cậy (Trust) là sự đánh cược về những hành
động ngẫu nhiên tương lai của những người khác". Có hai thành phần chính của định
nghĩa này: sự tin (belief) và sự cam kết. Thứ nhất, một người tin rằng một người đáng
tin cậy sẽ hành động theo một cách nhất định. Tuy nhiên, chỉ có sự tin thôi là không đủ
để có sự tin cậy. Tin cậy xảy ra khi sự tin được sử dụng như là nền tảng cho việc thực
hiện một cam kết đối với một hành động cụ thể. Hai thành phần này cũng có mặt trong
định nghĩa của Deutsch: chúng tôi cam kết đi theo con đường không rõ ràng nếu
chúng tôi tin rằng những người đáng tin cậy sẽ hành động theo cách tạo ra kết quả tốt.
Lấy các khía cạnh xã hội chính của các định nghĩa trên, định nghĩa dưới dây sẽ
được sử dụng trong các phần sau của luận văn: Alice tin tưởng Bob nếu cô ấy cam kết
hành động dựa trên một niềm tin rằng hành động của Bob trong tương lai sẽ dẫn đến
một kết quả tốt.
1. 3. Thuộc tính của sự tin cậy
1.3.1. Tính bắc cầu
Tính bắc cầu là thuộc tính cơ bản nhất của sự tin cậy. Tính bắc cầu của sự tin
cậy không có tính chất bảo toàn.
14

Ví dụ: Alice rất tin tưởng Bob, Bob rất tin tưởng Chuck nhưng không có nghĩa
Alice sẽ rất tin tưởng Chuck. Tuy nhiên Alice có thể tin tưởng Chuck ở một mức độ
nào đó. Tính bắc cầu hiểu ở đây là sự tin cậy có thể lan truyền từ người này qua người
khác thông qua các mối quan hệ.
Có hai loại tin cậy cần đề cập ở đây là tin cậy vào một người nào đó và tin cậy
vào lời giới thiệu của người đó về một người khác.
Ví dụ: Alice cần tìm một người sửa máy tính tốt. Alice hỏi Bob: “Chuck có
phải là một người sửa máy tính giỏi không?”, dựa trên câu trả lời của Bob Alice sẽ
quyết định thuê Chuck hay không vì Alice tin tưởng câu trả lời của Bob sẽ dẫn đến
một kết quả tốt là tìm được người sửa máy tính giỏi. Nếu Bob khuyên Alice nên tin
tưởng Chuck, Alice sẽ có một niềm tin nhất định về Chuck bởi vì cô tin Bob. Như vậy,

lời giới thiệu của Bob đóng vai trò là nền tảng giúp phát triển niềm tin của Alice về
Chuck (Alice → Bob → Chuck)
Ví dụ:Một ví dụ khác tương tự để mô phỏng về chuỗi tin cậy:






Hình 1. Mô phỏng về chuỗi tin cậy
Giả sử Bob không biết về Chuck, tuy nhiên một người bạn có tên Denise mà
Bob rất tin tưởng lại biết rõ về Chuck. Bob hỏi Denise về Chuck và được Denise bảo
rằng “Chuck là một người sửa máy tính giỏi”. Bob truyền đạt điều này cho Alice.
Alice tin rằng Bob sẽ cho cô ấy thông tin dẫn đến kết quả tốt. Bob chọn cách tốt nhất
để có thông tin hữu ích là đi hỏi người bạn mà anh ấy tin tưởng – Denise. Vì Denise
tin tưởng Chuck là người thợ sửa máy tính giỏi, nên theo định nghĩa về sự tin cậy ở
trên, Bob sẽ tin tưởng Chuck. Vì Alice tin Bob, nên cô ấy cũng tin tưởng Chuck. Như
vậy tin cậy có thể truyền tải qua nhiều người giống như một dây chuyền của các tin
cậy.Chuỗi tin cậy có thể viết như sau: Alice → Bob → Denise → Chuck
Bởi vì tính bắc cầu không bảo toàn của tin cậy nên tin cậy sẽ bị giảm dần dọc
theo dây chuyền. Trong ví dụ trên, Alice sẽ tin tưởng Chuck nhiều hơn nếu Bob trực
tiếp biết Chuck thay vì Bob phải thông qua các bước trung gian khác để biết về Chuck.
Ý tưởng về lan truyền tin cậy này được sử dụng rất rộng rãi trong các mô hình tính
toán về tin cậy ([11, [12], [15], [16])
Alice
Bob
Denise
e
Chuck
Alice tin Bob

Denise tin Chuck
Bob tin Denise
Denise kể với
Bob về Chuck
Bob kể với Alice
về Chuck
15

1.3.2. Tính tổng hợp
Trong ví về Alice tìm thợ sửa máy tính, nếu có nhiều người cùng giới thiệu với
Alice về Chuck thì Alice sẽ quyết định như thế nào?












Hình 2. Tính tổng hợp của tin cậy
Alice sẽ phải tổng hợp các lời khuyên từ Bob và Peter để đưa ra quyết định.Tin
cậy có tính tổng hợp. Tính tổng hợp có ý nghĩa khi chúng ta dùng các lời khuyên tin
cậy như những dẫn chứng, lập luận, biện hộ để hỗ trợ sự tin cậy. Vậy Alice cần phải
tổng hợp chúng như thế nào? Vấn đề này sẽ được đề cập trong phần sau, khi các độ đo
tin cậy cậy được đưa ra
1.3.3. Tính cá nhân hóa và tính không đối xứng

Bản thân tin cậy cậy vốn đã mang tính chủ quan. Hai người khác nhau sẽ có
những quan điểm rất khác nhau về sự tin cậy của cùng một người nào đó.
Ví dụ: Nếu đặt câu hỏi “bạn có tin tưởng vào tổng thống hiện thời của nước
bạn không?” thì sẽ có một nhóm đông trả lời rất tin tưởng vào tổng thống, và một
nhóm không nhỏ tỏ ra nghi ngờ về khả năng của tổng thống.
Theo định nghĩa sự tin cậy, chúng ta có thành phần niềm tin rằng sẽ đạt được
một kết quả tốt. Tuy nhiên “kết quả tốt” là hoàn toàn khác nhau với mỗi người. Sở
thích cá nhân, những sự ưu tiên, những quan điểm của mỗi người luôn có sự khác biệt,
nhiều khi là trái ngược với sở thích, sự ưu tiên hay quan điểm của những người khác.
Chính vì vậy khi nói về sự tin cậy, cần xem xét đến góc nhìn của mỗi cá nhân và phản
ánh các sở thích, quản điểm của cá nhân.
John kể với Peter
về Chuck
Bob tin
Denise
Peter kể với
Alice về
Chuck
Alice
Bob
Denise
Chuck
Alice tin Bob
Denise tin Chuck
Denise kể với
Bob về Chuck
Bob kể với
Alice về
Chuck
Peter

John
Alice tin Peter
Peter tin John
Alice tin Peter
16

Một thuộc tính nữa của sự tin cậy là tính không đối xứng, nó là một trường hợp
riêng của tính cá nhân hóa. Trong một mối quan hệ giữa hai người, sự tin cậy không
phải là hoàn toàn giống nhau từ hai phía. Nguyên nhân do mỗi người có sự khác nhau
về trải nghiệm, tâm lý, lịch sử, nên lượng tin cậy là khác nhau.
1. 4. Độ đo tin cậy
Phần này giới thiệu các thuật toán để ước lượng giá trị của tin cậy của một
người với người khác khi không có mối liên hệ trực tiếp nào giữa họ trong mạng xã
hội. Cho một mạng xã hội, thông tin về sự tin cậy có thể cung cấp cho người dùng theo
nhiều cách khác nhau, nhưng mục đích chung là: Tư vấn cho một nút nên tin tưởng
một nút khác trong mạng ở mức độ nào.
Thuật toán tính sự tin cậy có thể chia là hai loại: toàn cục (tiếng Anh: global) và
cục bộ (tiếng Anh: local)
- Thuật toán toàn cục: Tính toán và đưa ra độ tin cậy của mỗi người (mỗi nút)
trong mạng xã hội, trong bất kỳ hoàn cảnh nào nó đều trả ra một kết quả như
nhau.
- Thuật toán cụ bộ: Tính toán sự tin cậy của mỗi người dùng (giả sử A) từ góc
nhìn của những người khác trong mạng (người muốn biết về sự tin cậy của A).
Kết quả được cá nhân hóa cho mỗi người dùng, người dùng B và C sẽ tin tưởng
A với hai giá trị khác nhau vì B và C nhìn nhận A dưới hai góc nhìn khác nhau.
Như vậy, với thuật toán toàn cục, mỗi người dùng được gán một giá trị tin cậy
nhất định còn với thuật toán cục bộ, mỗi người dùng sẽ có n-1 giá trị tin cậy từ n-1
người dùng khác trong mạng (giả sử mạng có n người dùng).

17


1.4.1. Độ đo tin cậy dựa trên khoảng cách trong mạng tin cậy
Độ đo tin cậy dựa trên khoảng cách trong mạng tin cậy [18] (gọi tắt là độ đo tin
cậy dựa trên khoảng cách) dựa trên một giả thiết: nút càng gần nút nguồn trong mạng
tin cậy thì càng đáng tin cậy. Độ đo được mô tả như sau: Cho một nút nguồn A. A dự
đoán độ tin cậy của tất cả các nút còn lại trong hệ thống dựa trên khoảng cách ngắn
nhất từ A tới các nút đó. Cụ thể, gọi d là ngưỡng lớn nhất mà tin cậy có thể lan truyền.
Với một nút B mà khoảng cách ngắn nhất từ A tới B là n (n ≤ d) thì độ tin cậy của B
với A được tính theo công thức
=
+ 1


Các nút có khoảng cách ngắn nhất từ A lớn hơn d sẽ không được dự đoán độ tin cậy,
tức là giá trị trust = 0.
Ví dụ:

Hình 3. Ví dụ độ đo tin cậy dựa trên khoảng cách
Trong hình 3, giải sử đặt d = 3
Trust(a, b) = Trust(a, c) = 1
Trust(a, d) =(3-2+1)/3 = 2/3
Trust(a, e) = Trust(a, f) = (3-3+1)/3 = 1/3
Trust(a, g) = 0

18

1.4.2. Độ đo trung bình cộng




Hình 4. Ví dụ độ đo Trung bình cộng
Giả sử cần tính độ tin cậy của G với A.
Nếu giữa A và G có cung từ A đến G thì trọng số của cung là độ tin cậy của G với A
Nếu không có cung trực tiếp này, A hỏi các hàng xóm của A (B và C) tin tưởng vào G
bao nhiêu? A tổng hợp từ các hàng xóm để đưa ra ước lượng về sự tin cậy của G.
Hàng xóm của A cũng sử dụng cách thức tương tự để tìm ra độ tin cậy của G
Một cách hình thức:
 (, ) = 
Trust(a, g) nếu có cung từ a ến g



, 

(, )

=0



, 


=0
,   ậ ườ ù à   ậ


Trong ví dụ ở hình trên
Tập người dùng A tin cậy là {B, C}



, 

=


, 



, 

+ 

, 

(, )


, 

+ 

, 





, 


=
3 

, 

+ 2 (, )
3 + 2
=
3 

, 

+ 2 5
5


Cần tính trust(B,G)
19



, 

=


, 




, 



, 

= 

, 


Cần tính trust(D,G)


, 

=


, 



, 

+ 

, 




, 



, 

+ 

, 



=
2 3 + 5 0
2 + 5
= 6/7
Thay vào công thức trên ta có


, 

=
3 6/7 + 2 5
5
= 2.51 3
1.4.3. Độ đo MoleTrust
Hình 5 thể hiện một phần của mạng tin cậy với giá trị tin cậy là số thực nằm trong
đoạn [0, 1]. Giải sử cần tính độ tin cậy của các người dùng khác đối với Alice.



Hình 5. Mạng tin cậy ban đầu với độ đo MoleTrust
Thuật toán MoleTrust [19-20] ước lượng độ tin cậy của các nút khác với Alice
như sau:
Bước 1: Phá vỡ các vòng trong mạng tin cậy. Giả sử Alice tin Bob với mức 0.8,
Bob tin Eve mức 0.6, Eve tin Alice mức 0.5. Mối quan hệ này tạo thành một vòng
trong mạng tin cậy. Các vòng trong mạng tin cậy khiến cho một nút được duyệt lặp lại
20

nhiều lần trong quá trình tính toán. Thuật toán MoleTrust thực hiện việc phá các vòng
này, duyệt qua mỗi nút một lần duy nhất để thời gian ước ượng độ tin cậy là tuyến tính
với số lượng nút của mạng
MoleTrust tính toán khoảng cách ngắn nhất từ Alice đến các nút khác và sắp
xếp các nút theo thứ tự tăng dần của khoảng cách. Chỉ các nút có khoảng cách nhỏ hơn
ngưỡng d mới được xét tiếp. Các nút có khoảng cách > d sẽ có giá trị tin cậy = 0. Giả
sử đặt d=2, sau khi loại bỏ các nút không thỏa mãn điều kiện khoảng cách, MoleTrust
thu được một đồ thị như hình 6.

Hình 6.Đồ thị tin cậy MoleTrust sau khi loại bỏ các nút có khoảng cách quá xa
Bước 2: MoleTrust duyệt qua đồ thị sau khi biến đổi trên, bắt đầu từ nút Alice.
MoleTrust tính độ tin cậy của các nút ở khoảng cách 1, sau đó đến khoảng cách 2, …,
d. Độ tin cậy của nút ở khoảng cách x chỉ phụ thuộc vào độ tin cậy của nút ở khoảng
cách x-1 (đã tính ở bước trước).
- MoleTrust chỉ xét các cạnh có độ tin cậy > 0.6
- Với các nút ở khoảng cách 1, độ tin cậy của các nút này chính bằng trọng số trên
các các cạnh từ Alice đến chúng. Độ tin cậy của Dave = 1.0 và độ tin cậy của
Bob =0.8. Độ tin cậy của Carol = 0.1 < ngưỡng 0.6 nên các đường đi qua nút
Carol bị bỏ qua
- Với khoảng cách 2, chúng ta có nút Eve và Ivan.

- Với nút Ivan: Do chỉ có một đường đi từ Alice đến Ivan và đường đi này lại đi
qua Carol với độ tin cậy không được đảm bảo nên nút Ivan cũng bị bỏ qua.
21

- Với nút Eve: Độ tin cậy của Eve được tính trung bình theo các đường đi tới Eve.
Cụ thể:
Trust(Alice, Eve =
Trust(Alice, Dave)  Trust(Dave, Eve) + Trust(Alice, Bob) Trust(Bob, Eve)
Trust(Alice, Dave) + Trust(Alice, Bob)

=
(1.0 0.9 + 0.8 0.6)
(1.0 + 0.8)
= 0.767
Một cách hình thức, độ đo MoleTrust được viết như sau
(, ) =



, 

(, )
j adj

i

& 

i,j


max

trust(i, j)
j adj

i

& 

i,j

max

Trong đó:
- i là nút nguồn
- s là nút cần tính độ tin cậy
- j là nút liền kề của i
- adj(i) là tập các nút liền kề của i
- max là ngưỡng tin cậy tối thiểu trên đường đi từ i đến các nút liền kề của s

22

1.4.4. Độ đo TidalTrust


Hình 7: Ví dụ độ đo TidalTrust
Giả sử cần tính độ tin cậy của nút đích Sink đối với nút nguồn Source trong hình 7.
Thuật toán TidalTrust [9] thực hiện các bước sau
Bước 1: Tìm khoảng cách ngắn nhất từ nút nguồn tới nút đích (tiếng Anh: sink).
Thuật toán sử dụng phương pháp duyệt theo chiều rộng để duyệt từ nút nguồn tới nút

đích. Khi duyệt tới nút đích thì đường đi đó cũng là đường đi ngắn nhất từ nguồn tới
đích. Độ dài của đường đi này (tính bằng số cạnh trên đường đi) đặt là d
Bước 2: Tìm tất cả các đường đi từ nguồn tới đích có độ dài bằng d.
Trong ví dụ ở hình 7, độ dài đường đi ngắn nhất từ nguồn tới sink là d=3. TidalTrust
tìm được 5 đường đi có độ dài 3 từ nguồn đến đích
Bước 3: Tính độ tin cậy của các đường đi.
23

Độ tin cậy của một đường đi là trọng số nhỏ nhất của các đoạn trên đường đi
Strength

path

= mintrust

i, i + 1


với trust(i, i+1) là độ tin cậy của nút i+1 với nút i trên đường đi.
Trên hình 7, trọng số trên các cạnh thể hiện độ tin cậy giữa hai nút đầu mút của cạnh.
Trọng số gán cho mỗi nút là độ tin cậy lớn nhất của các đường đi từ nguồn tới nút đó.
Ví dụ với nút D:
Có hai đường đi từ nguồn tới D là:
Path1 = Source → A→ D
Path2 =Source → B→ D
Strength

Path1

= mintrust


Source, A

trust

A, D


= min

9,9

= 9
Strength

Path2

= mintrust

Source, B

trust

B, D


= min

8,10


= 8
Như vậy trọng số của nút D là




= max( Strength

Path1

, Strength

Path2

) = 9
Tương tự, trọng số của E là 9
Bước 4: Tìm ngưỡng độ tin cậy đường đi max
Tidal định nghĩa ngưỡng độ tin cậy đường đi bằng cực đại trọng số của các nút liền kề
với nút đích trong các đường đi. Trong ví dụ minh họa ở hình 7, nút liền kề với đích là
D và E. Ngưỡng độ tin cậy của đường đi là max = 9 (do trọng số của hai nút này đều
bằng 9)
Bước 5: Tổng hợp độ tin cậy của đích
Độ tin cậy của nút đích đối với nút nguồn được tổng hợp từ các đường đi thỏa mãn
điều kiện: độ tin cậy của đường đi lớn hơn hoặc bằng ngưỡng max
(, )
=



 , 


(, )
j adj

source

& 

source ,j

max

trust(i, j)
j adj

source

& 

source ,j

max

Với
- source là nút nguồn
- sink là nút cần tính độ tin cậy
- j là nút liền kề của nút nguồn
- adj(source) là tập các nút liền kề của nút nguồn
24


- max là ngưỡng tin cậy tối thiểu trên đường đi từ nút nguồn đến các nút liền kề
của s
Nhận xét: Công thức này giống với công thức của độ đo MoleTrust trình bày ở trên.
Tuy nhiên có điểm khác biệt về ngưỡng max
- Với MoleTrust: max là một hằng số, không đổi với mọi nút
- Với TidalTrust: max được tính toán theo từng cặp nút nguồn – nút đích theo các
bước từ 1 đến 4
1.4.5. Độ đo Advogato
Advogato
1
là một website với chức năng như một diễn đàn thảo luận và cung
cấp tài nguyên cho các lập trình viên
Trang web là nơi thử nghiệm cho độ đo tin cậy của tác giải Levin [17]. Mỗi
người dùng trong hệ thống có một độ tin cậy được tính toán dựa trên góc nhìn của tập
nhân (là những người dùng đã được chứng nhận đảm bảo tính tin cậy). Độ tin cậy
được tính dựa trên mô hình mô phỏng luồng chảy trong mạng (network flow). Độ đo
Advogato dựa trên các chứng nhận giữa các thành viên của trang web để tính ra mức
tin cậy (trust level) của mỗi người
Thành viên được chia làm 3 mức Apprentice, Journeyer và Master . Quyền truy
nhập tài nguyên và sửa thông tin của trang web phụ thuộc vào các mức độ trên.
Giống như EigenTrust, độ đo Advogato có thể chịu được tấn công của thành
viên xấu. Bằng xách tìm ra các thành viên xấu và các thành viên khác chứng nhận
thành viên xấu đó, độ đo sẽ loại bỏ những thành phần xấu khỏi mạng. Bởi vì Advogato
sử dụng khái niệm nhóm để xác định ai có thể viết bài, nên nó được gọi là một độ đo
tin cậy nhóm (group trust metric).
Đồng thời Advogato cũng là độ đo toàn cục bởi nó sử dụng một tập nhân duy
nhất để tính độ tin cậy cho thành viên, do đó mỗi thành viên có duy nhất một mức độ
tin cậy. Có thể cải tiến thuật toán này thành thuật toán cục bộ nếu sử dụng tập nhân là
một thành viên bất kỳ - người đang cần xác định độ tin cậy của các thành viên khác.
Advogato dựa trên mô hình luồng chảy trong mạng. Trong lý thuyết đồ thị, một

luồng trên mạng là một đồ thị có hướng, mỗi nút có một dung lượng (sức chứa) nhất
định, mỗi cung tượng trưng cho một luồng dòng chảy giữa các nút, mỗi cung có một
khả năng thông qua. Hai điều kiện ràng buộc là dung lượng luồng qua một cung không
vượt quá khả năng thông qua của nó và dung lượng luồng vào một nút phải bằng dung
lượng luồng ra khỏi nút đó, ngoại trừ trường hợp nó là một nút phát (nút nguồn -
source) - nơi chỉ có dòng ra, hoặc một nút thu (nút đích - sink) - nơi chỉ có luồng vào.

1

25

Một mạng như vậy có thể được dùng để giả lập giao thông trên một hệ thống đường
xá, dòng chảy trong các đường ống, dòng trong một mạch điện, hoặc bất cứ cái gì
tương tự di chuyển qua một mạng lưới gồm các nút. Bài toán đơn giản nhất và thông
dụng nhất cho luồng trên mạng là bài toán tìm luồng cực đại trong một đồ thị cho
trước, với kết quả mong muốn là luồng tổng lớn nhất có thể từ nút nguồn đến nút thu.
Tuy nhiên, vấn đề tính toán của độ đo Advogato là một từ một nút nguồn tới
nhiều nút thu và trọng số nằm ở trên nút. Điều này khác so với việc tính toán với một
nút nguồn, một nút thu và trọng số nằm trên cạnh như mô hình luồng mạng chuẩn ở
trên. Để biến đổi về mô hình của luồng trên mạng, Advogato thực hiện các phép biến
đổi đồ thị sau (Hình 8):
Mỗi nút x có sức chứa c được chia làm hai nút x- và x+. Thêm một cung từ x-
sang x+, gán cho cung này khả năng thông qua là c-1.
Với mỗi cung từ s tới t trong đồ thị gốc, thêm một cung có khả năng thông qua
vô hạn từ nút s+ sang nút t- trong đồ thị mới.
Khi cần tính độ tin cậy cho một nút mới, gọi là supersink , với mỗi nút x thêm
một cung từ x- tới suppersink với khả năng thông qua là 1.

Hình 8. Tính độ tin cậy cho một nút mới trong Advogato
Sau khi biến đổi đồ thị về dạng chuẩn của mô hình luồng chảy trong mạng, việc

tính toán độ tin cậy của một nút (supersink) trở thành bài toán cổ điển: tìm luồng cực
đại qua một nút.
26

Chương 2. Giới thiệu chung về hệ tư vấn
2.1. Sơ bộ về hệ tư vấn
Trong cuộc sống hàng ngày, trong rất nhiều trường hợp, người ta đưa ra các lựa
chọn dựa trên những ý kiến hay lời khuyên của mọi người xung quanh, có thể qua lời
nói, các bản đánh giá sản phẩm, khảo sát thị trường, thư giới thiệu v.v. Nhưng trong kỉ
nguyên thông tin, hàng triệu thông tin được đưa lên Internet mỗi ngày,điều này dẫn tới
yêu cầu phải có các phương pháp tự động thu thập thông tin và đưa ra lời khuyên để
hỗ trợ cho các phương pháp truyến thống trên. Hệ tư vấn (tiếng Anh: Recommender
System) là một giải pháp như vậy. Hệ tư vấn là một hệ thống phần mềm tự động đưa
ra gợi ý cho người dùng dựa trên các hành động của người dùng này trong quá khứ,
hoặc dựa trên sự tổng hợp các hành động, các ý kiến của những người dùng khác.Hệ tư
vấn đã trở thành một ứng dụng quan trọng và thu hút được sự quan tâm lớn của các
nhà nghiên cứu cũng như các doanh nghiệp.
Một vài hệ tư vấn điển hình được giới thiệu trong [2]:
- Phim/ TV/ âm nhạc: MovieLens, EachMovie, Morse, Firefly, Flycasting,
Ringo…
- Tin tức/ báo chí: Tapestry, GroupLens, Lotus Notes, Anatagonomy…
- Sách/ Tài liệu: Amazon.com, Foxtrot, InfoFinder…
- Web: Phoaks, Gab, Fab, IfWeb, Let's Browse …
- Nhà hàng: Adaptive Place Advisor, Polylens, Pocket restaurent finder…
- Du lịch: Dietorecs, LifestyleFinder …
2.2. Bài toán tư vấn
Theo Adomavicius và Tuzhilin trong [1], trong hầu hết các trường hợp, bài toán
tư vấn được coi là bài toán ước lượng trước hạng (rating) của các sản phẩm (phim, CD,
nhà hàng,…) chưa được người dùng xem xét. Việc ước lượng này thường dựa trên
những đánh giá đã có của chính người dùng đó hoặc những người dùng khác. Những

sản phẩm có hạng cao nhất sẽ được dùng để tư vấn.
Một cách hình thức, bài toán tư vấn được mô tả như sau:
Gọi C là tập tất cả người dùng, S là tập tất cả các sản phẩm có thể tư vấn. Tập S có
thể rất lớn, từ hàng trăm ngàn (sách, CD…) đến hàng triệu (như website). Tập C trong
một số trường hợp cũng có thể lên tới hàng triệu.
Hàm u(c,s) đo độ phù hợp (hay hạng) của sản phẩm s với người dùng c: : × 
với R là tập được sắp thứ tự. Với mỗi người dùng , bài toán đặt ra là cần tìm sản
phẩm 

 sao cho hàm u(s’, c) đạt giá trị lớn nhất:
c C, 
c
= arg max
sS
(, )
27

Trong hệ tư vấn, độ phù hợp của một sản phẩm thường được cho bằng điểm, ví
dụ người dùng A đánh giá bộ phim “Star war 3” được điểm 7/10. Tuy nhiên, nhìn
chung độ phù hợp có thể là một hàm bất kì tùy thuộc vào ứng dụng cụ thể. Giá trị của
hàm u có thể được xác định bởi người dùng hoặc được tính toán bởi công thức nào đó.
Mỗi người dùng trong không gian C được xác định bởi một hồ sơ (profile). Hồ
sơ này có thể gồm rất nhiều loại thông tin: tuổi, giới tính, thu nhập, … hoặc có thể chỉ
gồm một trường mã số người dùng duy nhất. Tương tự, mỗi sản phẩm trong không
gian S cũng được xác định bởi một tập các đặc trưng. Ví dụ, trong hệ thống tư vấn
phim, đặc trưng của mỗi bộ phim có thể là: tên phim, thể loại, đạo diễn, năm sản xuất,
diễn viên chính v.v.
Vấn đề chính của hệ tư vấn là hàm u không được xác định trên toàn không gian
×  mà chỉ trên một miền nhỏ của không gian đó. Điều này dẫn tới việc hàm u phải
được ngoại suy trong không gian × . Thông thường, độ phù hợp được thể hiện

bằng điểm và chỉ xác định trên tập các sản phẩm đã từng được người dùng đánh giá từ
trước (thường khá nhỏ). Ví dụ, bảng 1 là đánh giá của một số người dùng với các phim
mà họ đã xem (thang điểm từ 0-10, kí hiệu nghĩa là bộ phim chưa được người dùng
cho điểm). Từ những thông tin đó, hệ thống tư vấn phải dự đoán (ngoại suy) điểm cho
các bộ phim chưa được người dùng đánh giá, từ đó đưa ra những gợi ý phù hợp nhất.
Bảng 4. Đánh giá của người dùng về một số bộ phim đã xem

Harry potter
Star trek
Xmen
Transformer
A
5

7
9
B
9
5
5

C
6
6

8
D


8

9

Có rất nhiều cách để dự đoán, ước lượng hạng/điểm cho các sản phẩm như sử
dụng học máy, các thuật toán dựa trên kinh nghiệm… Theo [1], các hệ thống tư vấn
thường được phân thành ba loại dựa trên cách nó ước lượng hạng của sản phẩm:
- Dựa trên nội dung (content-based): người dùng được gợi ý những sản phẩm
tương tự như các sản phẩm từng được họ đánh giá cao.
- Cộng tác (collaborative): người dùng được gợi ý những sản phẩm mà những
người cùng sở thích với họ đánh giá cao.
- Lai ghép (hybrid): kết hợp cả phương pháp dựa trên.
28

Trong các phương pháp trên, phương pháp lọc cộng tác được sử dụng rộng rãi vì tính
dễ dàng cài đặt và hiệu quả của nó. Phần tiếp theo giới thiệu sơ bộ về phương pháp lọc
cộng tác
2.3. Phương pháp lọc cộng tác
Theo [4], không giống như phương pháp tư vấn dựa trên nội dung, hệ thống
cộng tác dự đoán độ phù hợp u(c,s) của một sản phẩm s với người dùng c dựa trên độ
phù hợp u(c
j
, s) giữa người dùng c
j
và s, trong đó c
j
là người có cùng sở thích với c. Ví
dụ, để gợi ý một bộ phim cho người dùng c, đầu tiên hệ thống cộng tác tìm những
người dùng khác có cùng sở thích phim ảnh với c. Sau đó, những bộ phim được họ
đánh giá cao sẽ được dùng để tư vấn cho c. Hình 9 minh họa về hệ tư vấn dựa trên lọc
cộng tác
Có rất nhiều hệ thống cộng tác đã được phát triển như: Grundy, GroupLens (tin

tức), Ringo (âm nhạc), Amazon.com (sách), Phoaks (web)… Các hệ thống này là các
hệ thống tư vấn cộng tác dựa trên kinh nghiệm (heuristic-based hay memory-based)

Hình 9. Tư vấn dựa trên cộng tác
Các thuật toán dựa trên kinh nghiệm dự đoán hạng của một sản phẩm dựa trên
toàn bộ các sản phẩm đã được đánh giá trước đó bởi người dùng. Nghĩa là, hạng của
sản phẩm s với người dùng c(r
c
,s ) được tổng hợp từ đánh giá của những người dùng
khác về s (thường là N người có sở thích tương đồng nhất với c).

,
= aggr 
,
với 

(tập N người dùng cùng sở thích với c)

×