Minh họa phương pháp ngẫu nhiên từng phần

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật phân tích ma trận trong các hệ thống khuyến nghị (Trang 51)

Mỗi màu khác nhau chỉ các luồng khác nhau. Chấm được tô màu là khối khởi tạo của luồng. Hình 3.9 mở rộng so sánh thời gian chạy trong hình 3.6 bao gồm FPSGD. Chúng ta có thể thấy FPSGD có cả sự hội tụ nhanh và RMSE tốt hơn.

Hình 3.9: So sánh phương pháp sắp thứ tự, phương pháp ngẫu nhiên và ngẫu nhiên từng phần trên tập dữ liệu Yahoo!Music. Ở đây chỉ xét 1 luồng được sử dụng

Một số phương pháp có liên quan đã được nghiên cứu, mặc dù chúng cho thấy sự hội tụ trên phương pháp sắp xếp tồi hơn phương pháp ngẫu nhiên khi bị mất các điều kiện huấn luyện. Quan sát này đối lập với kết quả thực nghiệm; lý do có thể là do việc xét RMSE trên tập dữ liệu kiểm tra khi chúng bị mất huấn luyện.

Có một vài chi tiết cần được lưu ý như sau: Chúng ta đã biết FPSGD áp dụng xáo trộn ngẫu nhiên để tránh số lượng không cân bằng các bản cập nhật của mỗi khối. Tuy nhiên, sau khi áp dụng các xáo trộn ngẫu nhiên và chia R thành các khối, các xếp hạng trong mỗi khối không sắp xếp theo người sử dụng hoặc item. Áp dụng phương pháp ngẫu nhiên từng phần chúng ta phải sắp xếp danh tính người dùng hoặc item trước khi xử lý từng khối một vì phương pháp sắp thứ tự được áp dụng bị khóa (block) trước đó.

Tổng quan về FPSGD

Thuật toán 3: tiến trình tổng thể của FPSGD

1: trộn ngẫu nhiên R

2: chia R thành tập B với ít nhất (s+ 1)×(s+ 1) khối 3: sắp thứ tự mỗi khối theo định dạng của người dùng (item) 4: xây dựng một lập lịch

5: khởi độngs luồng làm việc

6: chờ cho đến khi tổng số cập nhật đạt được một giá trị người dùng (item) xác định Đầu tiên, nó trộn ngẫu nhiên R để tránh sự mất cân bằng dữ liệu. Sau đó nó chia R

thành ít nhất (s+ 1)×(s+ 1) khối và sắp thứ tự mỗi khối theo định dạng người dùng (hay item) vì phương pháp ngẫu nhiên từng phần có thể được áp dụng. Cuối cùng nó tạo một lập lịch và khởi độngsluồng làm việc. Sau khi số lượng yêu cầu lặp đến khi đạt được nó sẽ thông báo lên lịch để ngăn chặn tất cả các luồng làm việc.

Thuật toán 4: lập lịch cho FPSGD

1:procedur:e GET_JOB 2: bx =N U LL

3: for all b thuộcB do

3.4 Thuật toán FPSGD 43

6: else if b.ut≤bx.ut then

7: bx =b 8: end if 9: end for 10: return bx 11: end procedure 12: procedure PUT_JOB 13: b.ut=b.ut+ 1 14: end procedure

Thuật toán 5: Luồng làm việc FPSGD

1:while true do

2: lấy 1 khối b từ schedule → get_job()

3: xử lý từng phần tử được sắp thứ tự trong khối 4: scheduler → put_job(b)

5:end while

Mã giả của lập lịch và mỗi luồng làm việc được thể hiện tương ứng trong thuật toán 4 và 5. Mỗi luồng làm việc liên tục lấy một khối từ lập lịch bằng việc gọi hàm get_job

và lập lịch sẽ trả về một khối đáp ứng 2 tiêu chí đã đề cập. Sau khi một luồng làm việc lấy khối mới nó xử lý các xếp hạng trong khối đó theo kiểu được sắp thứ tự. Cuối cùng, luồng gọi hàm put_job của lập lịch để cập nhật số thời lần mà khối đó được xử lý.

Thực nghiệm và đánh giá

4.1 Cấu hình thử nghiệm

4.1.1 Dữ liệu thử nghiệm

Mô hình đề xuất được tiến hành thử nghiệm trên tập dữ liệu của bộ dữ liệu MovieLens. MovieLens là một hệ thống khuyến nghị phổ biến, là trang web cộng đồng mạng gợi ý phim cho người dùng xem, dựa trên sở thích phim của họ và sử dụng phương pháp lọc cộng tác. Trang web này là một dự án do GroupLens nghiên cứu, phòng thí nghiệm nghiên cứu tại Khoa Kỹ thuật và Khoa học Máy tính tại Đại học Minnesota đã tạo ra MovieLens vào năm 1997. Mục tiêu cuối cùng của trang web là thu thập dữ liệu nghiên cứu về hệ thống khuyến nghị được cá nhân hóa.

Trang web của MovieLens gợi ý căn cứ vào những gì người sử dụng cung cấp cho các trang web, bao gồm cả bộ phim người dùng thích, và từ những người dùng khác có thị hiếu tương tự thích. Khi người dùng tham gia vào trang web, họ được chọn ngẫu nhiên một số bộ phim và phải xếp hạng cho các bộ phim đó từ 1 đến 5 sao (5 là tốt nhất). Sau đó hệ thống tiến hành so sánh xếp hạng của người sử dụng với những người khác có cùng thị hiếu sao cho phù hợp với các gợi ý từ các bộ phim mà người dùng vẫn chưa thấy. Khi người dùng tìm kiếm một bộ phim cụ thể trên trang web, hệ thống trả về một dự đoán về những gì họ tin rằng người dùng sẽ đánh giá bộ phim sau khi xem nó. Trang web này cho thấy người sử dụng xếp hạng nhiều bộ phim mà họ đã nhìn thấy càng tốt thì các khuyến nghị được đưa ra sẽ càng chính xác hơn, vì vậy hệ thống sẽ có một mẫu tốt hơn về thị hiếu điện ảnh của người dùng.

Tập dữ liệu MovieLen thử nghiệm gồm 6000 người dùng trên 4000 bộ phim với 600000 đánh giá (ratings). Để tiến hành thử nghiệm trên mô hình, tiến hành việc chọn ngẫu nhiên trong tập dữ liệu MovieLen 500 người dùng làm dữ liệu huấn luyện, chọn ngẫu nhiên trong số còn lại 150 người dùng làm dữ liệu kiểm tra.

Hệ thống dữ liệu của MovieLens được cho bởi cách biểu diễn và mối liên hệ giữa người dùng, các bộ phim và các xếp hạng (ratings) như sau:

4.1 Cấu hình thử nghiệm 45

Trong đó, User - người dùng; Item - phim và Rating là các xếp hạng. Với mối liên hệ người dùng - bộ phim sẽ tạo nên ma trậnm×n

4.1.2 Thực hiện thử nghiệm

Dưới đây là các yêu cầu về cấu hình thử nghiệm:

Cấu hình máy:Máy tính Laptop CORE i3, RAM 6GB

Môi trường thử nghiệm:Linux

Phần mềm:Thuật toán DSGD, FDSGD được cài đặt bằng ngôn ngữ C, các biểu đồ so sánh được vẽ bằng ngôn ngữ R.

Dữ liệu:

- Lập trình C với gói dữ liệu LIBMF: http://www.csie.ntu.edu.tw/∼cjlin/libmf/

- Các hướng dẫn: http://www.csie.ntu.edu.tw/∼cjlin/papers/libmf.pdf

Các chuyển đổi thành ma trận (convert) và thuật toán huấn luyện (training), các kết hợp dữ liệu được thực hiện bằng ngôn ngữ C. Biểu đồ so sánh RMSE của thuật toán DSGD và FPSGD được thực hiện bằng ngôn ngữ R.

Dưới đây là lệnh chạy dữ liệu trong R:

- Copy thư mục data vào thư mục chạy thử nghiệm.

- Mở R lên, vào tab đầu tiên trên menu, kích vào File/Change dir ..., trỏ đến thư mục data ở trên.

Cách đặt tên file trong data:

- testk20-003.txt => dữ liệu của DSGD, trong đó, k = 20, γ = 0.003

- test-fpsgd-20-003.txt => dữ liệu của FPSGD, trong đó, k = 20, γ = 0.003

Trong file dữ liệu của DSGD và FPSGD gồm có 2 cột: 1 cột là số thời gian, 1 cột là RMSE; mỗi dòng là 1 bước lặp - là số bước lặp trong mỗi lần cập nhật dữ liệu cho ma trận (ở đây cho bước lặp chạy là 100).k là số nhân tố ẩn (trong trường hợp thực nghiệm với bộ dữ liệu phim ảnh MovieLens,k là số các tiêu chí đánh giá của bộ phim, ví dụ nếu

k = 3, ta có các tiêu chí đánh giá: thể loại phim, đạo diễn, diễn viên) và γ là tỉ lệ học máy (learning rate) trong thuật toán DSGD và FPSGD (tỉ lệ học máy được chọn là 0.003 để cho kết quả đẹp nhất với nhiều nghiên cứu thực nghiệm đã chọn tỉ lệ này. Mục tiêu là tỉ lệ học cần được chọn ngẫu nhiên).

Mô tả tập dữ liệu huấn luyện: Là thư mục chứa các file dữ liệu cho mỗi bộ phim. Dòng đầu tiên của file chứa ID phim sau dấu hai chấm. Dòng tiếp theo tương ứng với đánh giá của khách hàng và ngày đánh giá theo định dạng sau:

CustomerID, Rating, Date - MovieID: xếp tuần tự

- CustomerID: sắp xếp có khoảng trống với các user tương ứng. - Rating: đánh giá từ 1 đến 5 sao

- Date: có định dạng YYYY-MM-DD.

Mô tả file dữ liệu phim ảnh: Thông tin phim được lưu ở file "movie-titles.txt" theo định dạng:

MovieID, YearOfRelease, Title

- MovieID: tương ứng với ID phim thực tế

- YearOfRelease: dao động từ 1890 - 2005, tương ứng với năm phát hành DVD - Title: là tiêu đề bộ phim, tiêu đề bằng tiếng Anh.

4.2 Phân tích kết quả và đánh giá 47

4.2 Phân tích kết quả và đánh giá

4.2.1 Phân tích kết quả

Hình 4.1: Biểu đồ dữ liệu MovieLens 600K

Trong biểu đồ trên, ta thấy có 2 cột so sánh gồm RMSE và Time(s), các đường màu đỏ (red) biểu diễn thuật toán DSGD, đường màu xanh (green) là đại diện cho thuật toán FPSGD. Biểu đồ thực hiện so sánh với cùng tham số nhân tố ẩn k và tỉ lệ học máy γ. Dưới đây là một số kết quả thu được với các tham số k khác nhau trên cùng tỉ lệ học máy γ = 0.003:

Hình 4.2: Biểu đồ dữ liệu MovieLens với tham sốk = 5 và γ = 0.003

- Vớik = 5:

+ Đối với DSGD: Qua 100 bước lặp, bước cuối cùng dừng ở2.92s với RMSE = 0.8231

+ Đối với FPSGD: Qua 100 bước lặp, bước cuối cùng dừng ở0.93s với RMSE = 0.8218

Hình 4.3: Biểu đồ dữ liệu MovieLens với k = 10 và γ = 0.003

- Vớik = 10:

+ Đối với DSGD: Qua 100 bước lặp, bước cuối cùng dừng ở4.64s với RMSE = 0.7900

4.2 Phân tích kết quả và đánh giá 49

Hình 4.4: Biểu đồ dữ liệu MovieLens với k = 20 và γ = 0.003

- Vớik = 20:

+ Đối với DSGD: Qua 100 bước lặp, bước cuối cùng dừng ở3.83s với RMSE = 0.7582

+ Đối với FPSGD: Qua 100 bước lặp, bước cuối cùng dừng ở1.23s với RMSE = 0.7556

Hình 4.5: Biểu đồ dữ liệu MovieLens với k = 50 và γ = 0.003

- Vớik = 50:

+ Đối với DSGD: Qua 100 bước lặp, bước cuối cùng dừng ở3.83s với RMSE = 0.7124

Hình 4.6: Biểu đồ dữ liệu MovieLens với k= 100 và γ = 0.003

- Vớik = 100:

+ Đối với DSGD: Qua 100 bước lặp, bước cuối cùng dừng ở5.71s với RMSE = 0.6761

+ Đối với FPSGD: Qua 100 bước lặp, bước cuối cùng dừng ở3.59s với RMSE = 0.6451

4.2.2 Nhận xét và đánh giá

Nhìn vào các kết quả trên, ta có một số đánh giá sau:

- Thuật toán FPSGD (đường màu xanh) có chỉ số RMSE tiệm cận về 0 nhanh hơn thuật toán DSGD (đường màu đỏ) và FPSGD có chỉ số RMSE nhỏ hơn DSGD. Điều này cho thấy, thuật toán FPSGD thực hiện nhanh và tốt hơn so với thuật toán DSGD.

- Thời gian chạy càng lâu thì RMSE càng tiệm cận về0nhanh hơn. Có thể nói, thuật toán có độ phức tạp phụ thuộc thời gian.

- Với k càng lớn thì RMSE càng nhỏ. Vì vậy, việc phân tích ma trận với các nhân tố ẩn k càng lớn thì các dự đoán càng chính xác hơn.

Kết quả thực nghiệm ở đây là trình bày so sánh các mô hình trực quan và hiệu quả cho phương pháp phân tích ma trận ứng dụng cho hệ thống khuyến nghị. Mô hình được biểu diễn bằng đồ thị các mối quan hệ của thuật toán DSGD và FPSGD với các đặc trưng tương quan. Các đánh giá nhằm kế thừa các thuật toán đánh giá và tìm kiếm hiệu quả cho người dùng về thông tin các sản phẩm, nội dung thông tin phù hợp với người dùng. Kết quả thử nghiệm trên bộ dữ liệu MovieLens cho thấy mô hình cho kết quả tốt hơn các phương pháp lọc cộng tác dựa trên độ tương quan và lọc theo nội dung thuần túy. Đặc

4.2 Phân tích kết quả và đánh giá 51

Ngoài ra, phương pháp thực nghiệm này có thể thực hiện trên bộ dữ liệu lớn hơn như bộ dữ liệu của Netflix với 100 triệu đánh giá (ratings) từ 480000 người dùng ngẫu nhiên trên 17000 tiêu đề phim. Bộ dữ liệu này được xây dựng nhằm hỗ trợ người tham gia giải thưởng Netflix. Nó được thu thập vào tháng 10 năm 1998 và tháng 12 năm 2005, phản ánh các phân phối của tất cả các xếp hạng đánh giá nhận được trong giai đoạn này.

Kết quả đạt được:

Trong quá trình thực hiện luận văn, học viên đã đạt được những kết quả sau:

- Nghiên cứu tổng quan về hệ khuyến nghị.

- Nghiên cứu tổng quan về phương pháp lọc cộng tác.

- Phân tích một số kĩ thuật phân tích ma trận (một trong những kĩ thuật của phương pháp lọc cộng tác) ứng dụng trong hệ khuyến nghị.

- Thử nghiệm và đánh giá với dữ liệu phim ảnh (MovieLens)

Định hướng phát triển tiếp theo của luận văn:

- Luận văn có thể phát triển theo hướng nghiên cứu các kĩ thuật phân tích ma trận khác cho hệ khuyến nghị như: phương pháp phân tích ma trận sử dụng chuỗi Markov Monte Carlo, áp dụng các phân phối xác suất phân tích ma trận,...

- Cài đặt và so sánh các thuật toán nhằm tối ưu RMSE, thử nghiệm trên các bộ dữ liệu lớn hơn như Netflix.

- Thử nghiệm mô hình với việc xây dựng một hệ thống khuyến nghị thương mại điện tử cụ thể.

Tài liệu tham khảo

[1] Francesco Ricci, Lior Rokach, Bracha Shapira, Paul B. Kantor, Recommender Sys- tems Handbook, Springer, 2011.

[2] Xiaoyuan Su, Taghi M. Khoshgoftaar,A Survey of Collaborative Filtering Techniques, Department of Computer Science and Engineering, Florida Atlantic University, 2009.

[3] Michael D.Ekstrand, John T. Riedl, Joseph A. Konstan, Collaborative Filtering Rec- ommender Systems, University of Minnesota, 2011.

[4] Yehuda Koren, Robert Bell and Chris Volinsky,Matrix Factorization Techniques For Recommender Systems, 2009.

[5] Shameem Ahamed Puthiya Parambath, Matrix Factorization Methods for Recom- mender Systems, Master’s Thesis in Computing Science, 2013.

[6] Julia Baum, Cynthia Cook, Michael Curtis, Joshua Edgerton, and Scott Rabidoux,

Parallelization of Matrix Factorization for Recommender Systems, Worcester Poly- technic Institute, Catawba College University of Maryland, Baltimore County, Cor- nell University, Wake Forest University, AT& T Labs - Research, 2011.

[7] Hsiang-Fu Yu, Cho-Jui Hsieh, Si Si, and Inderjit S. Dhillon, Parallel Matrix Factor- ization for Recommender Systems, Department of Computer Science, The University of Texa at Austin, Austin, 2013.

[8] Y. Koren, R. Bell, and C. Volinsky, Matrix Factorization Techniques for Recom- mender Systems, IEEE Computer, 2009.

[9] Balabanovic, M. and Y. Shoham. Fab: Content-based, collaborative recommendation, Communications of the ACM, 40(3):66-72,1997.

[10] R. Gemulla, P. J. Haas, E. Nijkamp, and Y. Sismanis,Large - scale Matrix Factoriza- tion with Distributed Stochastic Gradient Descent, Technical Report RJ10481, IBM Almaden Research Center, San Jose, CA, 2011, 2013.

[11] Wei-Sheng Chin, Yong Zhuang, Yu-chin Juan, and Chih-Jen LinA Fast Parallel SGD for Matrix Factorization in Shared Memory Systems, Dept. of Computer Science, National Taiwan University Taipei 106, Taiwan, 2013.

[12] T. Hofmann, Latent Semantic Models for Collaborative Filtering, ACM Trans. Inf. Syst., 22(1):89-115, 2004.

[13] C. Teflioudi, F. Makari, and R. Gemulla, Distributed Matrix Completion, In ICDM, pages 655-664, 2012.

[14] H. J Kushner and G. Yin, Stochastic Approximation and Recursive Algorithms and Applications, Springer, 2nd edition, 2003.

[15] Soboroff, I. and C. Nicholas, Combining content and collaboration in text filtering, In 43 IJCAI’99 Workshop,Machine Learning for Infomation Filtering, 1999.

[16] Basu, C., H. Hirsh and W. Cohen, Using social and content - based information in recommendation, In Recommender Systems. Papers from 1998 Workshop. Technical Report WS-98-08. AAAI Press, 1998.

[17] Popescul, A., L. H. Ungar, D. M. Pennock, and S. Lawrence,Probabilistic Models for Unified Collaborative and Content-Based Recommendation in Sparse-Data Environ- ments, In Proc. of the 17th Conf. on Uncertanty in Artificial Intelligence, Seattle, WA, 2001.

[18] Herlocker, J. L., Konstan, J. A., Borchers, A., Andriedl, An algorithmic framwork for performing collaborative filtering, InProceedings of the 22nd Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (SI- GIR’99). ACM, New York, 1999.

[19] G.Linden, B. Smith, and J. York, Amazon.com recommendations: Item - item col- laborative filtering, IEEE Internet Comput, 2003.

[20] Bell, R.M, and Koren, Y. 2007b, Scalable collaborative filtering with jointly derived

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật phân tích ma trận trong các hệ thống khuyến nghị (Trang 51)

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

(65 trang)