Tải bản đầy đủ (.docx) (137 trang)

đồ án 1 nghiên cứu các thuật toán khuyến nghị recommender algorithms và xây dựng ứng dụng minh họa

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 (6.66 MB, 137 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM</b>

<b>ĐỒ ÁN 1</b>

<b>NGHIÊN CỨU CÁC THUẬT TOÁN KHUYẾN NGHỊ(RECOMMENDER ALGORITHMS) VÀ XÂY DỰNG ỨNG</b>

<b>DỤNG MINH HỌAGIẢNG VIÊN HƯỚNG DẪN:</b>

Nguyễn Tấn Tồn

<b>NHĨM SINH VIÊN THỰC HIỆN:</b>

1. Nguyễn Tuấn BảoMSSV: 215206202. Nguyễn Tiến AnhMSSV: 21520579

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Lời đầu tiên, nhóm chúng em xin gửi lời cảm ơn sâu sắc đến Giảngviên Nguyễn Tấn Toàn, người đã hỗ trợ, hướng dẫn nhóm và tạo điều</b>

kiện tốt nhất để nhóm hồ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 đã hồ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 hồ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ủaq thầy cơ để hồ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.

<b>Thành phố Hồ Chí Minh, tháng 12 năm 2023</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<i><b>Bảng 1: Bảng phân công, đánh giá thành viên </b></i>

- Xây dựng Golangbackend server Báo cáo

- Viết chương 1- Viết chương 2:

2.1, 2.2, 2.3, 2.6- Viết chương 3- Viết chương 4:

4.1, 4.2.1, 4.2.2,4.2.3, 4.2.6,4.3.1, 4.3.2,4.3.3, 4.3.6, 4.4

và logic frontendcủa sản phẩmdemo

 Báo cáo

- Viết chương 2:2.4, 2.5, 2.7

- Viết chương 4:4.2.4, 4.2.5,4.2.7, 4.3.4,4.3.5, 4.3.7

- Viết chương 5,6

10/10

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

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

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

CHƯƠNG 3. NGHIÊN CỨU VÀ SO SÁNH THUẬT TỐN...26

3.1. Cách cài đặt mơi trường chạy thuật tố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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

3.5. Thông số đánh giá thuật tốn...31

3.5.1. Root Mean Square Error (RMSE)...31

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-Similarity513.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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

3.11.2. Triển khai thuật toán...62

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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

4.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

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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

5.1.2.3. Cách cài đặt và chạy chương trình...103

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Ả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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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.36 Dự đốn rating cho các user cịn lại...46

Ảnh 3.37 Cơng thức để dự đố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 tố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

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Ảnh 3.57 Khởi tạo thuật toán...56

Ả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 tố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.81 Import thư viện...68

Ảnh 3.82 Load data từ cơ sở dữ liệu...69

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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.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 đồn làm phim...114

Ảnh 5.15 Màn hình cuộc thảo luận...115

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Bả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 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

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>STTTừ viết tắtNội dung</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>CHƯƠNG 1. GIỚI THIỆU TỔNG QUAN</b>

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ậttố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 tố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 tố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 tố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.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

1.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 q trình và kết quảcủa các thuật tốn này. Cụ thể, đề tài sẽ tập trung vào các mục tiêu sau:

<i><b>1. Tìm hiểu các thuật tốn khuyến nghị: </b></i>

 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.

<i><b>2. So sánh hiệu quả của các thuật toán: </b></i>

 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.

<i><b>3. Xây dựng ứng dụng minh họa:</b></i>

 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.

<i><b>4. Đề xuất cải tiến và hướng phát triển tương lai:</b></i>

 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 tốn hoặc phương pháp mới.

1.3. Đối tượng và phạm vi nghiên cứu

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

 See Leaderboard

 See Top Rated Movies & Popular Movies

 Join Discussion Account Management Search Movies

 See Movie Details

<i><small>Bảng 1.1 Bảng đối tượng sử dụng</small></i>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

khá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

<i><small>Ảnh 2.2 Jupyter</small></i>

Jupyter là một thuật ngữ được ghép từ ba ngơn ngữ lập trình Julia, Python

<b>và R. Trước đây Jupyter Notebook có tên là IPython Notebook, đến năm</b>

2014 tách ra khỏi IPython và đổi tên thành Jupyter Notebook.

<b>Jupyter Notebook là một nền tảng tính tốn khoa học mã nguồn mở,</b>

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.

<b>Jupyter Notebook được coi là mơi trường điện tốn tương tác đa ngôn</b>

ngữ, hỗ trợ hơn 40 ngôn ngữ lập trình cho User.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>Với Jupyter Notebook, User có thể đưa dữ liệu, code, hình ảnh, công</b>

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

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Tensorflow 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 tốn học để tính tố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.

<b>2.3.2. Các thuộc tính cơ bản của Tensorflow</b>

 <b>Tensors: Là đối tượng chính của TensorFlow, đại diện cho dữ liệu và</b>

kết quả tính tốn. Tensors là một mảng đa chiều có các phần tử cócùng kiểu dữ liệu.

 <b>Operations: Là các hoạt động được thực hiện trên các tensors. Một</b>

số hoạt động cơ bản của TensorFlow bao gồm phép cộng, trừ, nhânvà chia.

 <b>Variables: Là các đối tượng được sử dụng để lưu trữ trạng thái thay</b>

đổi được trong q trình huấn luyện mơ hình. Variables có thể được

<i><small>Ảnh 2.3 Tensorflow</small></i>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

khở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 q trình huấn luyện.

 <b>Graphs: Là các biểu đồ đại diện cho các phép tính và các kết nối</b>

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 tốn hiệu quả trên nhiều thiết bị tính tốn. <b>Sessions: Là một phiên làm việc TensorFlow, chứa tất cả các biến</b>

và phép tính cần thiết để thực hiện tính tốn. Sessions được sử dụngđể thực thi các tính tốn trong TensorFlow.

 <b>Placeholders: Là các đối tượng được sử dụng để đại diện cho các</b>

tensors được cung cấp vào mơ hình trong q 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ả.

<b>2.3.3. Các lý do nên sử dụng Tensorflow</b>

 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ớnvà 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 tố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

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="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 nhauvà 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).

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<small></small> Cấu trúc của một đối tượng là rõ ràng.<small></small> Khơng có các Join phức tạp.

<small></small> 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.

<i><small>Ảnh 2.5 VS Code</small></i>

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

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<small></small> IntelliSense: IntelliSense cung cấp gợi ý tự động cho các từ khóa,biến và hàm.

<small></small> 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ã.

<small></small> 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ở.

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i><small>Ảnh 2.6 Golang</small></i>

2.6. Golang

<b>Golang</b> (Go Language) là một ngôn ngữ lập trình được sáng tạo và thiếtkế bởi các nhân viên của Google. Tuy nhiên, Golang tồn tại như một dự ánmã 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ư <b>Python</b> hoặc <b>Javascript</b>.

được sử dụng cho mục đích lập trình. Tuy nhiên, tính đơn giản chínhlà đ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 độ

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

tươ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 đã q 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:

<i><small>Ảnh 2.7 React</small></i>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="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.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>CHƯƠNG 3. NGHIÊN CỨU VÀ SO SÁNH THUẬT TOÁN</b>

3.1. Cách cài đặt mơi trường chạy thuật tốn

<b>3.1.1. Cài đặt Anaconda Navigator</b>

Bước 1: Tải Anaconda Distribution ở link này : website sẽ hiển thị và chọn Download

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

Bước 2 : Mở file đã tải về và tiến hành cài đặt theo các bước hướng dẫn

<i><small>Ảnh 3.9 Trình cài anaconda</small></i>

<i><small>Ảnh 3.8 Trang chủ website anaconda</small></i>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<i><small>Ảnh 3.10 Hoàn tất cài đặt anaconda</small></i>

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

Bước 3: Mở Anaconda Navigator:

<i><small>Ảnh 3.11 Mở anaconda</small></i>

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

Và ả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.

<b>3.1.2. Cách cài đặt Tensorflow 2.0 trong môi trường Anaconda</b>

<i><small>Ảnh 3.12 Giao diện anaconda</small></i>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

Bướ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 :

<i>conda info –envs</i>

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:

<i>Conda create –name <Tên môi trường người dùng muốn đặt> python=3Bước 4: Kích hoạt mơi trường mới tạo bằng dịng lệnh conda activate <tênmôi trường>: </i>

<i><small>Ảnh 3.13 Mở anaconda prompt</small></i>

<i><small>Ảnh 3.14 Xem mơn trường trong anaconda</small></i>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<i><small>Ảnh 3.15 Kích hoạt môi trường mới</small></i>

<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 –upgradetensorflow)</i>:

<i><small>Ảnh 3.16 Cài đặt tensorflow</small></i>

Bước 6: Trở về base environment và cài đặt hiển thị conda kernel(nb_conda_kernels và ipykernel) :

 <i>conda deactivate py3-TF2.0 (trở về môi trường gốc) </i>

 <i>pip install ipykernel (cài ipykernel)</i>

 <i>conda install nb_conda_kernels’ (cài đặt nb_conda_kernels)</i>

Bước 7 : Kích hoạt môi trường Tensorflow 2.0 bằng cách chọn kernel trong Jupyter Notebook :

<i><small>Ảnh 3.17: Kích hoạt mơi trường Tensorflow 2.0</small></i>

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ứ (itemcó 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

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="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ự ánlà 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.

<b>Ma trận user-item: Utility Matrix</b>

<i><small>Ảnh 3.18 Ma trận user-item: Utility Matrix</small></i>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="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ự đốn các ơ cịn trống (của user hiện hành), sau đósắp xếp kết quả dự đố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 tốn

<b>3.5.1. Root Mean Square Error (RMSE)</b>

Lỗi trung bình bình phương gốc (RMSE) là thước đo mức độ hiệu quả củamơ 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:

<i><small>Ảnh 3.19 RMSE</small></i>

Với các đại lượng như sau: y^i là giá trị ước lượng yi là biến độc lập

 n=(N – k – 1)

 N : số tổng lượng quan sát K : tổng lượng biến

3.6. Dataset

Về dataset mà nhóm sử dụng, nhóm đã sử dụng dataset tải từ Kaggle ở link sau:

×