Đề tài "Nghiên cứu các thuật toánkhuyến nghị và xây dựng ứng dụng minh họa" được chọn nhằm mục đích: Hiểu rõ các nguyên lý và thuật toán khuyến nghị phổ biến Để có thể phát triển các ứ
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Nguyễn Tấn Toàn
NHÓM SINH VIÊN THỰC HIỆN:
1 Nguyễn Tuấn Bảo MSSV: 21520620
2 Nguyễn Tiến Anh MSSV: 21520579
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……., ngày…… tháng……năm 2023
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 3Lời đầu tiên, nhóm chúng em xin gửi lời cảm ơn sâu sắc đến Giảng viên Nguyễn Tấn Toàn, người đã hỗ trợ, hướng dẫn nhóm và tạo điều
kiện tốt nhất để nhóm hoàn thành đề tài nghiên cứu này Với sự hỗ trợnhiệt tình của thầy, cuối cùng nhóm em cũng đã hoàn thiện những kiếnthức cần thiết thông qua việc nghiên cứu và học hỏi những kiến thức mới
Nhóm chúng em sẽ cố gắng ngày càng hoàn thiện mình hơn trongtương lai và tiếp tục học tập chăm chỉ để đạt được kết quả tốt nhất
Trong quá trình làm Đồ án này nhóm chúng em không tránh khỏiđược những sai sót, nhóm kính mong nhận được sự chỉ dẫn và góp ý củaquý thầy cô để hoàn thiện và phát triển đồ án hơn
Nhóm chúng em xin chân thành cảm ơn Xin chúc những điều tốtđẹp nhất sẽ luôn đồng hành cùng mọi người
Thành phố Hồ Chí Minh, tháng 12 năm 2023
Trang 4Bảng 1: Bảng phân công, đánh giá thành viên
- Xây dựng Golangbackend server
- Code toàn bộ UI
và logic frontendcủa sản phẩmdemo
- Viết chương 5,6
10/10
Trang 5DANH MỤC HÌNH ẢNH 6
DANH MỤC BẢNG 11
DANH MỤC TỪ VIẾT TẮT 13
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 14
1.1 Lý do chọn đề tài 14
1.2 Mục tiêu của đề tài 14
1.3 Đối tượng và phạm vi nghiên cứu 15
1.3.1 Phạm vi môi trường: 15
1.3.2 Phạm vi chức năng: 15
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 17
2.1 Conda Navigator 17
2.2 Jupyter Notebook 17
2.3 Tensorflow 18
2.3.1 Giới thiệu về Tensorflow 19
2.3.2 Các thuộc tính cơ bản của Tensorflow 19
2.3.3 Các lý do nên sử dụng Tensorflow 20
2.4 MongoDB 20
2.5 Visual Studio Code 21
2.6 Golang 23
2.7 React 24
CHƯƠNG 3 NGHIÊN CỨU VÀ SO SÁNH THUẬT TOÁN 26
3.1 Cách cài đặt môi trường chạy thuật toán 26
3.1.1 Cài đặt Anaconda Navigator 26
3.1.2 Cách cài đặt Tensorflow 2.0 trong môi trường Anaconda 29
Trang 63.5 Thông số đánh giá thuật toán 31
3.5.1 Root Mean Square Error (RMSE) 31
3.6 Dataset 32
3.6.1 Bối cảnh 32
3.6.2 Nội dung của dataset 32
3.6.3 Bản quyền sử dụng 33
3.6.4 Phạm vi sử dụng 33
3.7 Content-based Recommendation 34
3.7.1 Ý tưởng chính và cơ sở lý thuyết 34
3.7.2 Triển khai thuật toán 38
3.7.3 Đánh giá 43
3.8 Collaborative Filtering (User-user) 43
3.8.1 Ý tưởng chính và cơ sở lý thuyết 43
3.8.2 Triển khai thuật toán 47
3.8.3 Đánh giá 51
3.9 Content-based Recommendation sử dụng Cosine-Similarity 51 3.9.1 Ý tưởng chính và cơ sở lý thuyết 51
3.9.2 Triển khai thuật toán 51
3.9.3 Đánh giá 53
3.10 Matrix Factorization 53
3.10.1 Ý tưởng chính và cơ sở lý thuyết 53
3.10.2 Triển khai thuật toán 55
3.10.3 Đánh giá 61
3.11 Weighted Hybrid Recommendation 61
Trang 73.11.2 Triển khai thuật toán 62
3.11.3 Đánh giá 65
3.12 Tensorflow Recommendation 65
3.12.1 Ý tưởng chính và cơ sở lý thuyết 65
3.12.1.1 Deep Learning 65
3.12.1.2 tensorflow-recommender 67
3.12.2 Triển khai thuật toán 67
3.12.3 Đánh giá 71
3.13 Nhận xét sau cùng 71
CHƯƠNG 4 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 73
4.1 Sơ đồ Use-case 73
4.1.1 Sơ đồ Use-case tổng quát 73
4.1.2 Sơ đồ Use case chi tiết 74
4.1.3 Danh sách Actor 75
4.1.4 Danh sách Use-case 75
4.2 Đặc tả Use-case và sơ đồ hoạt động (Activity Diagram) 75
4.2.1 See Personal Movie Recommendation (Xem đề xuất phim cá nhân) 75
4.2.2 See Leaderboard (Xem leaderboard) 77
4.2.3 See Top Rated Movies (Xem các phim được đánh giá cao) 78
4.2.4 Join Discussion (Tham gia thảo luận) 80
4.2.5 Account Management (Quản lý tài khoản) 82
4.2.6 Search Movies (Tìm kiếm phim) 84
4.2.7 See Movie Details (Xem chi tiết phim) 86
4.3 Sơ đồ tuần tự (Sequence Diagram) 89
Trang 84.3.3 See Top Rated Movies (Xem các phim được đánh giá cao) 91
4.3.4 Join Discussion (Tham gia thảo luận) 92
4.3.5 Account Management (Quản lý tài khoản) 93
4.3.6 Search Movies (Tìm kiếm phim) 94
4.3.7 See Movie Details (Xem chi tiết phim) 95
4.4 Phân tích và thiết kế cơ sở dữ liệu 97
4.4.1 Mô hình quan hệ 97
4.4.2 Mô tả các kiểu dữ liệu 97
4.4.3 movies 97
4.4.4 users 98
4.4.5 ratings 99
4.4.6 crew 99
4.4.7 cast 100
4.4.8 keywords 100
4.4.9 discussion_movies 100
4.4.10 discussion_part 101
4.4.11 user_reviews 101
4.4.12 similar_movies 102
4.4.13 leaderboard 102
4.4.14 top_rated_movies 102
CHƯƠNG 5 CÀI ĐẶT VÀ TRIỂN KHAI HỆ THỐNG 103
5.1 Môi trường cài đặt 103
5.1.1 Cấu hình cài đặt 103
5.1.2 Môi trường phát triển và triển khai hệ thống 103
5.1.2.1 Môi trường phát triển 103
Trang 95.1.2.3 Cách cài đặt và chạy chương trình 103
5.2 Màn hình giao diện 107
5.2.1 Trang chủ 107
5.2.2 Đăng nhập, đăng ký 109
5.2.3 Chi tiết phim 111
5.2.4 Hồ sơ người dùng 113
5.2.5 Danh sách đoàn làm phim 114
5.2.6 Discussion 115
CHƯƠNG 6 TỔNG KẾT 118
6.1 Kết quả đạt được 118
6.1.1 Lý thuyết 118
6.1.2 Công nghệ 118
6.1.3 Ứng dụng 118
6.2 Hạn chế 118
6.3 Hướng phát triển 118
6.3.1 Về hệ thống 119
6.3.2 Về con người 119
TÀI LIỆU THAM KHẢO 120
Trang 10Ảnh 2.1 Anaconda 17
Ảnh 2.2 Jupyter 18
Ảnh 2.3 Tensorflow 19
Ảnh 2.4 MongoDB 21
Ảnh 2.5 VS Code 22
Ảnh 2.6 Golang 23
Ảnh 2.7 React 24
Ảnh 3.1 Trình cài anaconda 26
Ảnh 3.2 Trang chủ website anaconda 26
Ảnh 3.3 Hoàn tất cài đặt anaconda 27
Ảnh 3.4 Mở anaconda 27
Ảnh 3.5 Giao diện anaconda 28
Ảnh 3.6 Mở anaconda prompt 29
Ảnh 3.7 Xem môn trường trong anaconda 29
Ảnh 3.8 Kích hoạt môi trường mới 29
Ảnh 3.9 Cài đặt tensorflow 30
Ảnh 3.10: Kích hoạt môi trường Tensorflow 2.0 30
Ảnh 3.11 Ma trận user-item: Utility Matrix 31
Ảnh 3.12 RMSE 31
Ảnh 3.13 Bản quyền dataset 33
Ảnh 3.14 Code TF 35
Ảnh 3.15 Code IDF 35
Ảnh 3.16 Code TF_IDF 36
Ảnh 3.17 Hàm tuyến tính 36
Ảnh 3.18 Hàm mất mát 37
Ảnh 3.19 Hàm mất mát thường dùng trong thực tế 37
Ảnh 3.20 Tổng số item user đã rate 37
Ảnh 3.21 Hàm mất mát viết gọn 38
Ảnh 3.22 Load dữ liệu từ database 38
Ảnh 3.23 Tạo id mapping 39
Trang 11Ảnh 3.25 Map id mới 40
Ảnh 3.26 Chia data rating train và test 41
Ảnh 3.27 Sinh feature vectors 41
Ảnh 3.28 Tìm giá trị rating 42
Ảnh 3.29 Tìm mô hình cho mỗi user 42
Ảnh 3.30 Dự đoán rating 42
Ảnh 3.31 Đánh giá 43
Ảnh 3.32 Ý tưởng chính 44
Ảnh 3.33 Chuẩn hóa ma trận utility user-item 45
Ảnh 3.34 Xây dựng ma trận tương đồng 45
Ảnh 3.35 Hàm so sánh sự tương đồng 45
Ảnh 3.36 Dự đoán rating cho các user còn lại 46
Ảnh 3.37 Công thức để dự đoán rating 46
Ảnh 3.38 Tính normalized ratings 46
Ảnh 3.39 Load data từ database 47
Ảnh 3.40 Import các thư viện 47
Ảnh 3.41 Khởi tạo ma trận Utility 48
Ảnh 3.42 Tính toán độ tương đồng 48
Ảnh 3.43 Chuẩn hóa ma trận dữ liệu 48
Ảnh 3.44 Fit model và dự đoán rating 49
Ảnh 3.45 Hàm recommend 50
Ảnh 3.46 Chia data 50
Ảnh 3.47 Chạy thuật toán 51
Ảnh 3.48 Đánh giá 51
Ảnh 3.49 Import thư viện và load data 52
Ảnh 3.50 Xây dựng ma trận tf-idf 52
Ảnh 3.51 Xây dận ma trận similarity 53
Ảnh 3.52 Kết quả 53
Ảnh 3.53 Utility Matrix 54
Ảnh 3.54 Mô tả thuật toán Matrix Factorization 55
Trang 12Ảnh 3.57 Khởi tạo thuật toán 56
Ảnh 3.58 Chuẩn hoá ma trận 57
Ảnh 3.59 Hàm mất mát 57
Ảnh 3.60 Tìm items đươc đánh giá bởi user và ngược lại 58
Ảnh 3.61 Hàm cập nhật ma trận X, W 58
Ảnh 3.62 Hàm fit model 58
Ảnh 3.63 Hàm predict rating 59
Ảnh 3.64 Hàm đánh giá RMSE 60
Ảnh 3.65 Chia data 60
Ảnh 3.66 Chạy thuật toán 61
Ảnh 3.67 Đánh giá 61
Ảnh 3.68 Ý tưởng chính 61
Ảnh 3.69 Sơ đồ triển khai thuật toán 62
Ảnh 3.70 Import thư viện, load data 62
Ảnh 3.71 Chia data 63
Ảnh 3.72 Chạy thuật toán Collaborative Filtering 63
Ảnh 3.73 Chạy thuật toán Matrix Factorization 63
Ảnh 3.74 Tìm trọng số tốt nhất để kết hợp hai thuật toán 64
Ảnh 3.75 Tìm trọng số tốt nhất để kết hợp hai thuật toán 64
Ảnh 3.76 Kết quả 65
Ảnh 3.77 Mạng nơ-ron 66
Ảnh 3.78 TensorFlow Recommender 67
Ảnh 3.79 Đổi kernel Jupyter Notebook 68
Ảnh 3.80 Cài dependencies 68
Ảnh 3.81 Import thư viện 68
Ảnh 3.82 Load data từ cơ sở dữ liệu 69
Ảnh 3.83 Xử lý data 69
Ảnh 3.84 Xây dựng mô hình 70
Ảnh 3.85 Chia data để train và test 70
Ảnh 3.86 Kết quả 71
Ảnh 4.1 UC tổng quát 73
Trang 13Ảnh 4.3 Activity xem chi tiết phim 76
Ảnh 4.4 Activity xem leaderboard 78
Ảnh 4.5 Activity xem các phim được đánh giá cao 80
Ảnh 4.6 Activity tham gia thảo luận 82
Ảnh 4.7 Activity quản lý tài khoản 84
Ảnh 4.8 Activity tìm kiếm phim 86
Ảnh 4.9 Activity Xem chi tiết phim 88
Ảnh 4.10 Sơ đồ tuần tự xem đề xuất phim cá nhân 89
Ảnh 4.11 Sơ đồ tuần tự Xem Leaderboard 90
Ảnh 4.12 Sơ đồ tuần tự Xem các phim được đánh giá cao 91
Ảnh 4.13 Sơ đồ tuần tự Tham gia thảo luận 92
Ảnh 4.14 Sơ đồ tuần tự Quản lý tài khoản 93
Ảnh 4.15 Sơ đồ tuần tự Tìm kiếm phim 94
Ảnh 4.16 Sơ đồ tuần tự Xem chi tiết phim 95
Ảnh 4.17 Mô hình quan hệ 97
Ảnh 5.1 Thư mục backend-go 104
Ảnh 5.2 Mở terminal 104
Ảnh 5.3 Kết quả 105
Ảnh 5.4 Hộp thoại của window 105
Ảnh 5.5 Kết quả khi chạy backend 106
Ảnh 5.6 Màn hình trang chủ 107
Ảnh 5.7 Màn hình trang chủ 108
Ảnh 5.8 Màn hình trang chủ 108
Ảnh 5.9 Màn hình đăng nhập 109
Ảnh 5.10 Màn hình đăng ký 110
Ảnh 5.11 Màn hình chi tiết phim 111
Ảnh 5.12 Màn hình chi tiết phim 112
Ảnh 5.13 Mô tả màn hình hồ sơ người dùng 113
Ảnh 5.14 Màn hình danh sách đoàn làm phim 114
Ảnh 5.15 Màn hình cuộc thảo luận 115
Trang 15Bảng 1.1 Bảng đối tượng sử dụng 16
Bảng 4.1 Danh sách actor 75
Bảng 4.2 Danh sách usecase 75
Bảng 4.3 Usecase xem chi tết phim 76
Bảng 4.4 Use case xem leaderboard 77
Bảng 4.5 Usecase xem các phim được đánh giá cao 79
Bảng 4.6 Usecase tham gia thảo luận 81
Bảng 4.7 Usecase quản lý tài khoản 83
Bảng 4.8 Usecase tìm kiếm phim 85
Bảng 4.9 Usecase Xem chi tiết phim 87
Bảng 4.10 Mô tả movies 98
Bảng 4.11 Mô tả users 99
Bảng 4.12 Mô tả rating 99
Bảng 4.13 Mô tả crew 100
Bảng 4.14 Mô tả cast 100
Bảng 4.15 Mô tả keywords 100
Bảng 4.16 Mô tả discussion_movies 101
Bảng 4.17 Mô tả discussion_part 101
Bảng 4.18 Mô tả user_reviews 101
Bảng 4.19 Mô tả similar_movies 102
Bảng 4.20 Mô tả leaderboard 102
Bảng 4.21 Mô tả top_rated_movies 102
Bảng 5.1 Mô tả thành phần trang chủ 107
Bảng 5.2 Mô tả thành phần trang chủ 108
Bảng 5.3 Mô tả thành phần trang đăng ký 110
Bảng 5.4 Mô tả thành phần chi tiết phim 111
Bảng 5.5 Mô tả thành phần màn hình chi tiết phim 112
Bảng 5.6 Mô tả thành phần hồ sơ người dùng 113
Bảng 5.7 Mô tả thành phần danh sách đoàn làm phim 114
Trang 17STT Từ viết tắt Nội dung
Trang 18CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
1.1 Lý do chọn đề tài
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, các ứng dụngkhuyến nghị ngày càng trở nên phổ biến và được sử dụng rộng rãi trongnhiều lĩnh vực như thương mại điện tử, giải trí, truyền thông, Các thuậttoán khuyến nghị giúp các doanh nghiệp cung cấp cho người dùng nhữngsản phẩm, dịch vụ phù hợp với nhu cầu và sở thích của họ, từ đó nâng caotrải nghiệm người dùng và tăng doanh thu
Việc nghiên cứu các thuật toán khuyến nghị là một vấn đề quan trọng và
có nhiều tiềm năng ứng dụng thực tế Đề tài "Nghiên cứu các thuật toánkhuyến nghị và xây dựng ứng dụng minh họa" được chọn nhằm mục đích:
Hiểu rõ các nguyên lý và thuật toán khuyến nghị phổ biến
Để có thể phát triển các ứng dụng khuyến nghị hiệu quả, cần hiểu rõ cácnguyên lý và thuật toán khuyến nghị phổ biến Đề tài này sẽ giúp mọingười hiểu rõ các khái niệm cơ bản về khuyến nghị, các thuật toán khuyếnnghị phổ biến như dựa trên nội dung, dựa trên người dùng, dựa trên cộngđồng,
Xây dựng ứng dụng khuyến nghị đơn giản trên dữ liệu thực tế
Sau khi hiểu rõ các nguyên lý và thuật toán khuyến nghị, nhóm sẽ xâydựng ứng dụng khuyến nghị đơn giản trên dữ liệu thực tế Điều này giúpnhóm thực hiện áp dụng kiến thức đã học vào thực tế và đánh giá hiệuquả của các thuật toán khuyến nghị
Đánh giá hiệu quả của các thuật toán khuyến nghị
Để đánh giá hiệu quả của các thuật toán khuyến nghị, cần có các phươngpháp đánh giá phù hợp Đề tài này sẽ giới thiệu các phương pháp đánh giáhiệu quả của các thuật toán khuyến nghị phổ biến
Trang 191.2 Mục tiêu của đề tài
Mục tiêu chính của đề tài này là nghiên cứu và so sánh hiệu quả của nhiềuthuật toán khuyến nghị trong việc đề xuất nội dung cho User, đồng thờixây dựng một ứng dụng minh họa giúp trực quan hóa quá trình và kết quảcủa các thuật toán này Cụ thể, đề tài sẽ tập trung vào các mục tiêu sau:
1 Tìm hiểu các thuật toán khuyến nghị:
Nghiên cứu và hiểu rõ về các thuật toán khuyến nghị phổ biến nhưCollaborative Filtering, Content-Based Filtering, MatrixFactorization, và Deep Learning-based Recommenders
Đánh giá ưu điểm, nhược điểm và ứng dụng của từng thuật toántrong các bối cảnh khác nhau
2 So sánh hiệu quả của các thuật toán:
Thực hiện thử nghiệm và đánh giá hiệu suất của các thuật toántrên bộ dữ liệu thực tế hoặc tạo ra bộ dữ liệu mô phỏng
3 Xây dựng ứng dụng minh họa:
Phát triển một ứng dụng minh họa có giao diện User thân thiện
Tích hợp các chức năng như đánh giá sản phẩm, theo dõi lịch sửtương tác, và cung cấp gợi ý dựa trên các thuật toán nghiên cứu
4 Đề xuất cải tiến và hướng phát triển tương lai:
Dựa trên những hiểu biết từ việc so sánh và phân tích, đề xuất cảitiến cho các thuật toán hoặc phương pháp mới
1.3 Đối tượng và phạm vi nghiên cứu
Trang 22khác của công ty là Anaconda Team Edition và Anaconda EnterpriseEdition đều không miễn phí.
Những lợi ích khi sử dụng Anaconda Navigator:
Anaconda miễn phí và có mã nguồn mở
Nó có hơn 1500+ gói khoa học dữ liệu Python / R
Anaconda đơn giản hóa việc quản lý và triển khai gói
Nó có các công cụ để dễ dàng thu thập dữ liệu từ các nguồn bằng machine learning và AI
Nó tạo ra một môi trường dễ dàng quản lý khi triển khai bất kỳ dự ánnào
Anaconda hoạt động đa nền tảng (Windows, Linux, MacOS)
2.2 Jupyter Notebook
Ảnh 2.2 Jupyter
Jupyter là một thuật ngữ được ghép từ ba ngôn ngữ lập trình Julia, Python
và R Trước đây Jupyter Notebook có tên là IPython Notebook, đến năm
2014 tách ra khỏi IPython và đổi tên thành Jupyter Notebook
Jupyter Notebook là một nền tảng tính toán khoa học mã nguồn mở,
bạn có thể sử dụng để tạo và chia sẻ các tài liệu có chứa code trực tiếp,phương trình, trực quan hóa dữ liệu và văn bản tường thuật
Jupyter Notebook được coi là môi trường điện toán tương tác đa ngôn
ngữ, hỗ trợ hơn 40 ngôn ngữ lập trình cho User
Trang 23Với Jupyter Notebook, User có thể đưa dữ liệu, code, hình ảnh, công
thức, video, vào trong cùng một file, giúp cho việc trình bày trở nên dễdàng hơn Bạn có thể vừa trình chiếu vừa chạy code để tương tác trên đó,cốt lõi của việc này là Markdown
Lợi ích mà Jupyter Notebook mang lại:
Phân tích khám phá dữ liệu (Exploratory Data Analysis)
Bộ đệm dễ dàng trong ô tích hợp
Độc lập ngôn ngữ:
Trực quan hóa dữ liệu (Data Visualisation)
Tương tác trực tiếp với code
Các mẫu code tài liệu
2.3 Tensorflow
2.3.1 Giới thiệu về Tensorflow
Trang 24Tensorflow là gì ?– Với sự bùng nổ của lĩnh vực Trí Tuệ Nhân Tạo – A.I.trong thập kỷ vừa qua, machine learning và deep learning rõ ràng cũngphát triển theo cùng Và ở thời điểm hiện tại, TensorFlow chính là thưviện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, đượcphát triển bởi các nhà nghiên cứu từ Google Việc hỗ trợ mạnh mẽ cácphép toán học để tính toán trong machine learning và deep learning đã
giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng và tiệnlợi hơn nhiều
Được viết bằng C++ và thao tác interface bằng Python nên phầnperformance của TensorFlow cực kỳ tốt Đối tượng sử dụng nó cũng đadạng không kém: từ các nhà nghiên cứu, nhà khoa học dữ liệu và dĩnhiên không thể thiếu các lập trình viên
2.3.2 Các thuộc tính cơ bản của Tensorflow
Tensors: Là đối tượng chính của TensorFlow, đại diện cho dữ liệu và
kết quả tính toán Tensors là một mảng đa chiều có các phần tử cócùng kiểu dữ liệu
Operations: Là các hoạt động được thực hiện trên các tensors Một
số hoạt động cơ bản của TensorFlow bao gồm phép cộng, trừ, nhân
và chia
Variables: Là các đối tượng được sử dụng để lưu trữ trạng thái thay
đổi được trong quá trình huấn luyện mô hình Variables có thể được
Ảnh 2.3 Tensorflow
Trang 25khởi tạo với giá trị cố định hoặc giá trị ngẫu nhiên và có thể được cậpnhật trong quá trình huấn luyện.
Graphs: Là các biểu đồ đại diện cho các phép tính và các kết nối
giữa chúng Graphs được sử dụng để mô tả cấu trúc của mô hình họcmáy và tạo ra các tính toán hiệu quả trên nhiều thiết bị tính toán
Sessions: Là một phiên làm việc TensorFlow, chứa tất cả các biến
và phép tính cần thiết để thực hiện tính toán Sessions được sử dụng
để thực thi các tính toán trong TensorFlow
Placeholders: Là các đối tượng được sử dụng để đại diện cho các
tensors được cung cấp vào mô hình trong quá trình huấn luyện hoặckiểm tra Placeholders được sử dụng để đảm bảo rằng dữ liệu đầuvào có thể được cung cấp cho mô hình
Các thuộc tính này là những thành phần cơ bản của TensorFlow và cungcấp các công cụ cần thiết để xây dựng và huấn luyện các mô hình họcmáy hiệu quả
2.3.3 Các lý do nên sử dụng Tensorflow
Hỗ trợ nhiều nền tảng: TensorFlow có thể chạy trên nhiều nền tảngkhác nhau, bao gồm máy tính để bàn, máy tính xách tay, thiết bị diđộng và đám mây
Hiệu suất cao: TensorFlow được tối ưu hóa để xử lý các phép tính lớn
và phức tạp trong các mô hình học máy Nó có thể sử dụng nhiềuCPU và GPU để tăng tốc độ tính toán
Được sử dụng rộng rãi: TensorFlow là một trong những thư viện họcmáy phổ biến nhất được sử dụng bởi cộng đồng học máy Nó được sửdụng trong nhiều ứng dụng thực tế, bao gồm xử lý ngôn ngữ tựnhiên, thị giác máy tính, nhận dạng giọng nói và phân loại ảnh
Hỗ trợ mạnh mẽ cho các mô hình học sâu: TensorFlow cung cấp cáccông cụ và tài liệu hỗ trợ để xây dựng và huấn luyện các mô hìnhhọc sâu phức tạp như mạng nơ-ron tích chập (CNN) và mạng nơ-ron
Trang 26 API linh hoạt: TensorFlow cung cấp API cho nhiều ngôn ngữ lập trìnhkhác nhau, bao gồm Python, C++, Java và Go Điều này cho phépUser triển khai các mô hình học máy trên nhiều nền tảng khác nhau
và tích hợp với các ứng dụng khác
2.4 MongoDB
MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở được thiết kếtheo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linhhoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo mộtdạng cấu trúc nhất định nào Chính do cấu trúc linh hoạt này nênMongoDB có thể được dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và
đa dạng và không cố định (hay còn gọi là Big Data)
Trang 27 Cấu trúc của một đối tượng là rõ ràng.
Không có các Join phức tạp
Khả năng truy vấn sâu hơn MongoDB hỗ trợ các truy vấn động trêncác Document bởi sử dụng một ngôn ngữ truy vấn dựa trênDocument mà mạnh mẽ như SQL
2.5 Visual Studio Code
Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn miễn phí và
mã nguồn mở được phát triển bởi Microsoft Nó được phát hành lần đầutiên vào năm 2015 và đã nhanh chóng trở thành một trong những trìnhsoạn thảo mã phổ biến nhất trên thế giới
Ảnh 2.5 VS Code
VS Code hỗ trợ nhiều ngôn ngữ lập trình, bao gồm JavaScript, TypeScript,Python, C/C++, Java, PHP, Ruby, và nhiều ngôn ngữ khác Nó cũng cung
Trang 28 IntelliSense: IntelliSense cung cấp gợi ý tự động cho các từ khóa,biến và hàm.
Gỡ lỗi: VS Code hỗ trợ gỡ lỗi mã, bao gồm khả năng đặt điểm ngắt,xem giá trị biến và theo dõi dòng chảy của mã
Tiện ích mở rộng: VS Code có một thị trường rộng lớn các tiện ích mởrộng có thể được sử dụng để tùy chỉnh trình soạn thảo theo nhu cầucủa bạn
Dưới đây là một số ưu điểm chính của Visual Studio Code:
Hỗ trợ đa nền tảng: VS Code có thể được sử dụng trên Windows,macOS và Linux
Khối lượng nhẹ: VS Code rất nhẹ và khởi chạy nhanh chóng
Tính linh hoạt: VS Code có thể được tùy chỉnh để đáp ứng nhu cầucủa bạn
Miễn phí: VS Code là một phần mềm miễn phí và mã nguồn mở
Trang 29Ảnh 2.6 Golang
2.6 Golang
Golang (Go Language) là một ngôn ngữ lập trình được sáng tạo và thiết
kế bởi các nhân viên của Google Tuy nhiên, Golang tồn tại như một dự án
mã nguồn mở chứ không thuộc về quyền sở hữu của Google Golang đượcxây dựng để việc lập trình trở nên dễ đọc, đơn giản, hiệu quả và đạt đượchiệu suất cao
này có nghĩa là mọi thứ thuộc về Golang đều phải có kiểu dữ liệu và
nó trái ngược với các ngôn ngữ dynamic typednhư Python hoặc Javascript
được sử dụng cho mục đích lập trình Tuy nhiên, tính đơn giản chính
là điểm khiến cho Golang trở nên khác biệt so với các ngôn ngữ lậptrình khác Nó sở hữu những cú pháp khá tinh gọn và có mức độ
Trang 30tương đồng rất lớn với C++ Do đó, việc học Golang không còn làđiều khó khăn nếu bạn đã quá quen thuộc với C++.
dựng và phát triển các ứng dụng cross-platform Điều này giúp cáclập trình viên sử dụng Golang dễ dàng hòa nhập được vào cộng đồnglập trình cho dù nó là ngôn ngữ "sinh sau đẻ muộn"
việc tìm kiếm thông tin về ngôn ngữ lập trình Golang trở nên đơngiản hơn
2.7 React
React là một thư viện mã nguồn mở JavaScript được phát triển bởiFacebook để xây dựng giao diện người dùng (UI) cho các ứng dụng web
Nó được phát hành lần đầu tiên vào năm 2013 và đã nhanh chóng trở
thành một trong những thư viện UI phổ biến nhất trên thế giới
React sử dụng mô hình thành phần để xây dựng giao diện người dùng Mỗithành phần là một mô-đun nhỏ, có thể tái sử dụng, chịu trách nhiệm hiểnthị một phần của giao diện người dùng Các thành phần có thể được kếthợp với nhau để tạo thành các giao diện người dùng phức tạp
Dưới đây là một số ưu điểm chính của React:
Ảnh 2.7 React
Trang 31 Hiệu suất: React sử dụng mô hình thành phần để tối ưu hóa hiệu suấtcủa giao diện người dùng Điều này giúp cải thiện tốc độ tải và phảnhồi của ứng dụng.
Tính linh hoạt: React có thể được sử dụng để xây dựng các ứng dụngweb có quy mô và tính phức tạp khác nhau Nó có thể được sử dụngcho các ứng dụng web tĩnh, ứng dụng web tương tác và ứng dụngweb di động
Tính tái sử dụng: Các thành phần React có thể được tái sử dụng trongcác ứng dụng khác nhau Điều này giúp giảm thời gian và chi phíphát triển ứng dụng
Hỗ trợ cộng đồng: React có một cộng đồng người dùng và nhà pháttriển đông đảo và tích cực Cộng đồng này cung cấp nhiều tàinguyên, chẳng hạn như hướng dẫn, tài liệu và thư viện, để giúp cácnhà phát triển học cách sử dụng React
Trang 32CHƯƠNG 3 NGHIÊN CỨU VÀ SO SÁNH THUẬT TOÁN
3.1 Cách cài đặt môi trường chạy thuật toán
3.1.1 Cài đặt Anaconda Navigator
Bước 1: Tải Anaconda Distribution ở link này : https://www.anaconda.com/download, website sẽ hiển thị và chọn Download
Trang 33Bước 2 : Mở file đã tải về và tiến hành cài đặt theo các bước hướng dẫn
Ảnh 3.9 Trình cài anaconda Ảnh 3.8 Trang chủ website anaconda
Trang 34Ảnh 3.10 Hoàn tất cài đặt anaconda
Trang 35Bước 3: Mở Anaconda Navigator:
Ảnh 3.11 Mở anaconda
Trang 36Và ảnh dưới là kết quả khi cài đặt thành công và người dùng có thể mở
jupyter để chạy các file ipynb chứa thuật toán
3.1.2 Cách cài đặt Tensorflow 2.0 trong môi trường Anaconda
Ảnh 3.12 Giao diện anaconda
Trang 37Bước 1: Mở Anaconda prompt:
Bước 2 : Xem các môi trường có sẵn trong anaconda bằng dòng lệnh :
conda info –envs
Bước 3 : Tạo môi trường để cài đặt tensorflow 2.0 như hình dưới bằng dònglệnh:
Conda create –name <Tên môi trường người dùng muốn đặt> python=3 Bước 4: Kích hoạt môi trường mới tạo bằng dòng lệnh conda activate <tên môi trường>:
Ảnh 3.13 Mở anaconda prompt
Ảnh 3.14 Xem môn trường trong anaconda
Trang 38Ảnh 3.15 Kích hoạt môi trường mới Bước 5: Cài đặt tensorflow trên môi trường đã tạo bằng dòng lệnh conda install tensorflow (có thể cần update tensorflow bằng pip install –upgrade tensorflow):
Ảnh 3.16 Cài đặt tensorflow
Bước 6: Trở về base environment và cài đặt hiển thị conda
kernel(nb_conda_kernels và ipykernel) :
conda deactivate py3-TF2.0 (trở về môi trường gốc)
pip install ipykernel (cài ipykernel)
conda install nb_conda_kernels’ (cài đặt nb_conda_kernels)
Bước 7 : Kích hoạt môi trường Tensorflow 2.0 bằng cách chọn kernel trong Jupyter Notebook :
Ảnh 3.17: Kích hoạt môi trường Tensorflow 2.0
3.2 Khái niệm về Recommender System (Hệ thống gợi ý)
Hệ gợi ý (Recommender Systems - RS) là một dạng của hệ thống lọc thôngtin (information filtering), nó được sử dụng để dự đoán sở thích(preferences) hay xếp hạng (rating) mà người dùng có thể dành cho mộtmục thông tin (item) nào đó mà họ chưa xem xét tới trong quá khứ (item
có thể là bài hát, bộ phim, đoạn video clip, sách, bài báo, )
3.3 Các thành phần dữ liệu của Recommender System
Trang 39 users là danh sách người dùng
items là danh sách sản phẩm, đối tượng của hệ thống (trong dự án
là movies)
feedback là lịch sử tương tác của user với mỗi item (trong dự án làratings)
3.4
Ma trận user-item: Utility Matrix
Ảnh 3.18 Ma trận user-item: Utility Matrix
Trang 40Đây là ma trận biểu diễn mức độ quan tâm (rating) của user với mỗi item.
Ma trận này được xây dựng từ dữ liệu (1) Nhưng ma trận này có rất nhiềucác giá trị miss Nhiệm vụ của Hệ gợi ý chính là dựa vào các ô đã có giá trịtrong ma trận trên (dữ liệu thu được từ trong quá khứ), thông qua mô hình
đã được xây dựng, dự đoán các ô còn trống (của user hiện hành), sau đósắp xếp kết quả dự đoán (ví dụ, từ cao xuống thấp) và chọn ra Top-Nitems theo thứ tự rating giảm dần, từ đó gợi ý chúng cho người dùng
3.5 Thông số đánh giá thuật toán
3.5.1 Root Mean Square Error (RMSE)
Lỗi trung bình bình phương gốc (RMSE) là thước đo mức độ hiệu quả của
mô hình Nó thực hiện điều này bằng cách đo sự khác biệt giữa các giá trị
dự đoán và giá trị thực tế R-MSE càng nhỏ tức là sai số càng bé thì mức
độ ước lượng cho thấy độ tin cậy của mô hình có thể đạt cao nhất, đượctính bởi công thức dưới:
Ảnh 3.19 RMSE
Với các đại lượng như sau:
y^i là giá trị ước lượng