GIỚI THIỆU ĐỀ TÀI
Trong thế giới hiện đại, nơi thông tin và giải trí tràn ngập trên Internet, việc xây dựng một trang web xem phim không chỉ đơn thuần là tạo ra nền tảng trực tuyến để thưởng thức các tác phẩm điện ảnh, mà còn là cơ hội để khám phá một thế giới nghệ thuật và sáng tạo phong phú Chúng tôi mong muốn phát triển một website xem phim không chỉ là dịch vụ, mà còn mang đến trải nghiệm độc đáo cho người dùng.
Trong thời đại số hóa hiện nay, việc xem phim đã trở thành một cuộc phiêu lưu thú vị cho mọi người, từ những người yêu điện ảnh chuyên nghiệp đến những người xem phim thông thường Chúng ta luôn tìm kiếm những bộ phim kịch tính, hài hước, lãng mạn và nhiều thể loại khác để thưởng thức và chia sẻ với bạn bè, gia đình Tuy nhiên, thách thức lớn nhất không phải là tìm kiếm phim, mà là lựa chọn những bộ phim phù hợp với sở thích và tâm hồn của mỗi người.
Dự án này không chỉ là một trang web lưu trữ phim mà còn là một hệ thống thông minh sử dụng học máy và trí tuệ nhân tạo để cá nhân hóa trải nghiệm xem phim Nó sẽ hiểu bạn qua từng cú nhấp chuột và phản hồi, từ đó đề xuất những bộ phim thú vị nhất cho bạn Trang web tạo ra trải nghiệm xem phim độc đáo, không chỉ giới thiệu những bộ phim phù hợp mà còn khám phá những tác phẩm mới lạ mà bạn có thể chưa từng nghĩ đến, mang đến sự thú vị và khám phá trong thế giới điện ảnh.
Chúng tôi sẽ nghiên cứu và thử nghiệm các công nghệ và kỹ thuật tiên tiến nhất để tối ưu hóa tính năng đề xuất phim Việc cải thiện giao diện người dùng và trải nghiệm người dùng là yếu tố quan trọng trong dự án, giúp mọi người dễ dàng tìm kiếm, xem và tận hưởng những bộ phim mà họ yêu thích.
Dự án này sẽ tập trung vào việc giải quyết các vấn đề liên quan đến quyền riêng tư và bảo mật dữ liệu người dùng Chúng tôi cam kết bảo vệ thông tin cá nhân và sử dụng dữ liệu một cách an toàn và có trách nhiệm.
Mục tiêu của chúng tôi không chỉ là tạo ra một trang web xem phim, mà còn là xây dựng một nền tảng đáng tin cậy để bạn có thể dễ dàng tìm kiếm và khám phá thế giới điện ảnh một cách thú vị và trọn vẹn trải nghiệm.
Tìm hiểu lý thuyết xây dựng phát triển hệ thống thông minh.
Nghiên cứu và tìm hiểu lý thuyết về hệ thống gợi ý/đề xuất (Recommendation system).
Áp dụng hệ thống gợi ý/đề xuất (Recommendation system) vào dự án đang triển khai.
Đánh giá khả năng thông minh của hệ thống gợi ý/đề xuất (Recommendation system) đã triển khai trong dự án trong thực tế.
Tổng quan báo cáo được trình bày qua 4 chương:
Chương 1: Giới thiệu đề tài
Chương 2: Cơ sở lý thuyết
Chương 3: Phân tích thiết kế hệ thống
Chương 4: Đánh giá khả năng thông minh của hệ thống gợi ý/đề xuất (Recommendation system)
Tham nhũng là m ộ t hiện tượng xã hội
Công nghệ thông tin None 11
Báo cáo t ổ ng quát - Báo cáo tổng quát
Công nghệ thông tin None 1 đ ề PPL NCKH kỳ 1
Công nghệ thông tin None 4
BTL - Thi ế t k ế môi trường giáo dục ch…
Công nghệ thông tin None 15
CƠ SỞ LÝ THUYẾT
Hệ thống thông minh
Hệ thống thông minh (AI - Trí tuệ nhân tạo) là một lĩnh vực trong khoa học máy tính, tập trung vào việc phát triển máy tính và chương trình có khả năng thực hiện các nhiệm vụ thông minh mà trước đây chỉ con người có thể làm Các hệ thống này sử dụng thuật toán và mô hình máy tính để học từ dữ liệu, tự động điều chỉnh hành vi dựa trên kinh nghiệm, và thực hiện các tác vụ như nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên, dự đoán và lập kế hoạch.
Mục tiêu chính của hệ thống thông minh là phát triển máy tính hoặc chương trình có khả năng tương tự hoặc vượt trội hơn trí tuệ con người trong một số tác vụ nhất định Các ứng dụng của hệ thống thông minh rất đa dạng, bao gồm y tế, ô tô tự lái, tài chính, quản lý nguồn lực, robot học và nhiều lĩnh vực khác.
Để đánh giá một hệ thống thông minh, cần xem xét các tiêu chí quan trọng như khả năng tự học, khả năng xử lý dữ liệu lớn, tính linh hoạt trong ứng dụng và khả năng tương tác với người dùng Những yếu tố này đảm bảo rằng hệ thống không chỉ hoạt động hiệu quả mà còn thích ứng với các thay đổi trong môi trường và nhu cầu của người sử dụng.
Khả năng tự học là một yếu tố quan trọng trong một hệ thống thông minh, cho phép nó học hỏi từ dữ liệu và tự điều chỉnh để cải thiện hiệu suất theo thời gian Hệ thống này phát triển dựa trên kinh nghiệm và dữ liệu mới, giúp nâng cao khả năng hoạt động của nó.
Hệ thống thông minh cần phải có khả năng tương tác hiệu quả với môi trường xung quanh, bao gồm việc thu thập thông tin từ cảm biến, thực hiện các hành động phù hợp và thích nghi với những thay đổi trong môi trường.
Hệ thống thông minh cần có khả năng tự quyết định, tức là ra quyết định dựa trên dữ liệu và thông tin mà nó thu thập hoặc nhận được Điều này yêu cầu hệ thống phải có khả năng lập kế hoạch và quản lý tài nguyên hiệu quả.
Hệ thống thông minh cần phát triển khả năng giải quyết vấn đề phức tạp và thực hiện các nhiệm vụ khó khăn Điều này đòi hỏi việc sử dụng logic, phân tích thông tin một cách hiệu quả và đưa ra quyết định chính xác.
Công nghệ thông tin None 59
TÀI LI Ệ U H Ọ C T Ậ P KHQL NÂNG CAO
Công nghệ thông tin None 151
Hệ thống thông minh cần có khả năng tương tác hiệu quả với con người, bao gồm giao tiếp tự nhiên, hiểu ngôn ngữ tự nhiên và cung cấp phản hồi đáng tin cậy.
Khả năng Hiểu Biết và Kiến Thức (Understanding and Knowledge):
Hệ thống thông minh cần có khả năng hiểu biết về thế giới xung quanh nó và có thể tích luỹ kiến thức từ dữ liệu và trải nghiệm.
An intelligent system must possess the ability to evaluate its performance and conduct self-assessments to enhance its capabilities effectively.
Hệ thống thông minh cần phải đảm bảo an toàn thông tin và tôn trọng quyền riêng tư của người dùng, nhằm tạo ra một môi trường sử dụng an toàn và tin cậy.
Sự Linh Hoạt (Flexibility): Hệ thống thông minh cần có khả năng thích nghi với nhiều tình huống và môi trường khác nhau.
Experience and continuous improvement are essential for intelligent systems, as they must accumulate knowledge and enhance their performance over time.
Machine learning (Học máy)
Học máy (Machine Learning - ML) là khả năng của chương trình máy tính cải thiện hiệu suất dựa trên kinh nghiệm và dữ liệu từ quá khứ Nó giải quyết vấn đề thiếu linh hoạt trong suy diễn và là một nhánh nghiên cứu quan trọng trong trí tuệ nhân tạo, tập trung vào việc học hỏi từ kinh nghiệm.
Mục tiêu chính của machine learning là trang bị cho máy tính khả năng tự động phân tích và học hỏi từ dữ liệu, từ đó thực hiện các nhiệm vụ cụ thể mà không cần hướng dẫn chi tiết.
Machine learning algorithms are typically categorized into four main types based on their learning methods: supervised learning, unsupervised learning, semi-supervised learning, and reinforcement learning Some classifications may exclude semi-supervised learning or reinforcement learning.
Supervised learning (Học máy có giám sát)
Supervised learning is a predictive algorithm that determines the outcome of new input data based on previously known pairs of input and outcome, commonly referred to as data and labels It is the most widely used category among machine learning algorithms.
Thuật toán học có giám sát (supervised learning) được chia thành hai loại chính: Phân loại (Classification) và Hồi quy (Regression) Phân loại là bài toán khi các nhãn của dữ liệu đầu vào được phân chia thành một số nhóm hữu hạn, ví dụ như Gmail xác định email spam hay không, hay các hãng tín dụng đánh giá khả năng thanh toán của khách hàng Ngược lại, Hồi quy là khi nhãn không được phân chia thành nhóm mà là một giá trị thực cụ thể, chẳng hạn như xác định giá trị của một căn nhà dựa trên diện tích, số phòng ngủ và khoảng cách đến trung tâm thành phố.
Unsupervised learning (Học máy không giám sát)
Học không giám sát (Unsupervised Learning) là một phương pháp trong đó máy tính tự động khám phá cấu trúc ẩn và mối quan hệ trong dữ liệu mà không cần nhãn mẫu từ dữ liệu đầu vào Mục tiêu chính của học không giám sát là phát hiện thông tin tiềm ẩn, như các nhóm tương đồng (clusters) và các thuộc tính quan trọng trong dữ liệu.
Các bài toán học không giám sát (Unsupervised learning) được chia thành hai loại chính: Phân nhóm (Clustering) và Quy luật kết hợp (Association) Phân nhóm là quá trình phân chia dữ liệu thành các nhóm nhỏ dựa trên sự tương đồng, như việc phân nhóm khách hàng theo hành vi mua sắm Ví dụ, một đứa trẻ có thể phân loại các mảnh ghép theo hình dạng hoặc màu sắc mà không cần biết trước thông tin cụ thể Quy luật kết hợp nhằm khám phá các mối liên hệ giữa các dữ liệu, chẳng hạn như nam giới mua quần áo thường có xu hướng mua thêm đồng hồ hoặc thắt lưng, từ đó xây dựng hệ thống gợi ý khách hàng (Recommendation System) để thúc đẩy nhu cầu mua sắm.
Semi-supervised learning (Học bán giám sát)
Học bán giám sát (Semi-Supervised Learning) là một phương pháp trong học máy (machine learning) sử dụng cả dữ liệu có nhãn và không có nhãn để đào tạo mô hình Trong phương pháp này, chỉ một phần nhỏ dữ liệu được gán nhãn, trong khi phần lớn dữ liệu còn lại không có nhãn hoặc chỉ có một số lượng nhỏ nhãn.
Một ví dụ điển hình về nhóm dữ liệu này là khi chỉ có một phần ảnh hoặc văn bản được gán nhãn, như hình ảnh về người hoặc động vật, trong khi phần lớn còn lại chưa được gán nhãn và được thu thập từ internet Nhiều bài toán Machine Learning thuộc nhóm này do việc thu thập dữ liệu có nhãn tốn thời gian và chi phí cao, đặc biệt là khi cần chuyên gia để gán nhãn, chẳng hạn như trong ảnh y học Ngược lại, dữ liệu chưa gán nhãn có thể được thu thập với chi phí thấp từ internet.
Học củng cố (Reinforcement Learning) là một phương pháp giúp hệ thống tự động xác định hành vi tối ưu dựa trên hoàn cảnh nhằm tối đa hóa hiệu suất Hiện nay, Học củng cố chủ yếu được áp dụng trong Lý Thuyết Trò Chơi (Game Theory), nơi các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.
Hình 2.1 Mô hình các thuật toán trong học máy
Các ứng dụng trong thực tế:
Xử lý ngôn ngữ tự nhiên
Dịch máy: Máy học có thể dịch văn bản từ một ngôn ngữ sang ngôn ngữ khác với chất lượng ngày càng cao.
Phân tích cảm xúc: Mô hình có thể phát hiện và phân tích cảm xúc trong văn bản, đánh giá tình hình cảm xúc của người dung.
Tóm tắt văn bản: Máy học có thể tạo ra tóm tắt tự động cho các văn bản dài.
Nhận dạng đối tượng: Máy học có thể nhận biết và phân loại đối tượng trong hình ảnh và video.
Nhận dạng khuôn mặt: Các hệ thống nhận dạng khuôn mặt được sử dụng trong an ninh, chấm công, và nhiều ứng dụng khác.
Xử lý ảnh y tế: Học máy giúp phát hiện bệnh từ hình ảnh y tế và hỗ trợ các chuyên gia trong chuẩn đoán.
Các dịch vụ như Netflix và Amazon áp dụng công nghệ machine learning để gợi ý sản phẩm và nội dung phù hợp, dựa trên lịch sử và sở thích của người dùng.
Khuyến nghị nội dung truyền hình và âm nhạc: Spotify, YouTube, và các dịch vụ truyền hình khác cung cấp nội dung dựa trên sở thích cá nhân.
Dự đoán bệnh lý: Machine learning giúp dự đoán nguy cơ bệnh lý và hỗ trợ chuẩn đoán y tế.
Chăm sóc bệnh nhân: Học máy giúp tối ưu hóa quá trình chăm sóc bệnh nhân và quản lý tài sản y tế.
Ngoài ra, trong thực tế còn vô số ứng dụng thực tiễn của machine learning khác đem lại lợi ích vô cùng to lớn.
Tìm hiểu hệ thống gợi ý/đề xuất (Recommendation systems)
2.3 Tìm hiểu về hệ thống gợi ý/đề xuất (Recommendation system) 2.3.1 Giới thiệu
Chúng ta có lẽ đã gặp những hiện tượng này nhiều lần:
Youtube tự động chuyển các clip liên quan đến clip bạn đang xem.Youtube cũng tự gợi ý những clip mà có thể bạn sẽ thích.
When purchasing an item on Amazon, the system automatically suggests products that are "Frequently bought together," and it also recommends items based on your purchase history, enhancing your shopping experience.
Facebook hiển thị quảng cáo những sản phẩm có liên quan đến từ khoá bạn vừa tìm kiếm.
Netflix tự động gợi ý phim cho người dùng.
Hệ thống có khả năng tự động gợi ý cho người dùng những sản phẩm phù hợp với sở thích của họ, từ đó nâng cao hiệu quả marketing Bằng cách quảng cáo đúng đối tượng, chiến dịch tiếp thị sẽ đạt được kết quả tốt hơn.
Những thuật toán đằng sau những ứng dụng này là những thuật toán Machine Learning có tên gọi chung là Recommender
Systems hoặc Recommendation Systems, tức Hệ thống gợi ý.
Recommendation Systems are a significant area of Machine Learning that has emerged more recently than Classification, largely due to the internet's rapid growth over the past 10-15 years The two primary entities in Recommendation Systems are users and items; users refer to individuals, while items encompass products such as movies, songs, books, videos, or even other users in friend suggestion scenarios The main objective of Recommender Systems is to predict a user's interest level in a specific item, enabling the development of tailored recommendation strategies.
Các Recommendation Systems thường được chia thành hai nhóm lớn:
Hệ thống dựa trên nội dung đánh giá các đặc tính của các mục được đề xuất Chẳng hạn, nếu một người dùng thường xuyên xem các bộ phim về cảnh sát hình sự, hệ thống sẽ gợi ý cho họ một bộ phim có đặc điểm tương tự trong cơ sở dữ liệu, như phim "Người phán xử" Phương pháp này yêu cầu sắp xếp các mục vào từng nhóm hoặc xác định các đặc trưng của từng mục Tuy nhiên, có những mục không thuộc nhóm cụ thể, và việc xác định nhóm hoặc đặc trưng của chúng đôi khi là điều không thể thực hiện.
Hệ thống gợi ý dựa trên collaborative filtering hoạt động bằng cách phân tích sự tương quan giữa các người dùng và/hoặc các mục Cụ thể, một mục sẽ được đề xuất cho một người dùng dựa trên hành vi tương tự của những người dùng khác Chẳng hạn, nếu người dùng A, B, và C đều yêu thích các bài hát của Noo Phước Thịnh, hệ thống sẽ nhận diện sự tương đồng này để đưa ra gợi ý phù hợp.
C cũng yêu thích các bài hát của Bích Phương, nhưng chưa rõ liệu user A có cùng sở thích này hay không Dựa trên sở thích của những user tương tự như B và C, hệ thống có thể dự đoán rằng A cũng có khả năng thích Bích Phương và sẽ gợi ý cho A những bài hát của ca sĩ này.
2.3.2 Hệ thống lọc cộng tác (Collaborative Filtering System)
Phương pháp này trong học máy và khai phá dữ liệu được áp dụng phổ biến trong các lĩnh vực như khuyến nghị sản phẩm, dự đoán sở thích người dùng và xếp hạng mục tiêu Hệ thống hoạt động dựa trên nguyên tắc rằng người dùng có thể được phân loại hoặc nhận đề xuất mục tiêu dựa trên hành vi và sở thích của họ, cũng như từ những người dùng khác có hành vi hoặc sở thích tương tự.
Hệ thống thu thập thông tin về tương tác của người dùng với sản phẩm và nội dung, bao gồm đánh giá, xếp hạng, lịch sử mua sắm và lịch sử xem Dữ liệu này được lưu trữ trong ma trận tương tác giữa người dùng và sản phẩm.
Hệ thống phân tích dữ liệu để đánh giá mức độ tương đồng giữa các cặp người dùng hoặc sản phẩm Mức độ tương đồng này có thể được xác định thông qua các phương pháp như độ tương tự cosin, khoảng cách Euclidean, hoặc các thuật toán học máy khác.
Hệ thống sử dụng mức độ tương đồng đã tính toán để dự đoán và đề xuất các mục tiêu cho người dùng Chẳng hạn, nó có khả năng dự đoán xếp hạng mà người dùng có thể đưa ra cho một sản phẩm cụ thể hoặc gợi ý những sản phẩm mà người dùng có thể quan tâm.
Hệ thống cần được tối ưu hóa liên tục dựa trên phản hồi từ người dùng và dữ liệu mới Việc áp dụng các kỹ thuật học máy sẽ giúp nâng cao độ chính xác trong dự đoán và đề xuất.
Lọc Cộng Tác có khả năng đưa ra dự đoán chính xác về sở thích người dùng và sản phẩm phù hợp, nhờ vào việc sử dụng dữ liệu phong phú và thông tin sản phẩm hạn chế.
Hệ thống này cung cấp tính cá nhân hóa cao bằng cách tạo ra các đề xuất dựa trên lịch sử tương tác của từng người dùng Nhờ đó, trải nghiệm người dùng được cải thiện và mối liên kết giữa người dùng và nội dung trở nên mạnh mẽ hơn.
Lọc Cộng Tác không yêu cầu thông tin sản phẩm chi tiết, điều này giúp nó phù hợp với các nền tảng mà thông tin sản phẩm có thể không đầy đủ hoặc không sẵn có.
Lọc Cộng Tác có cách hoạt động đơn giản và dễ hiểu, giúp doanh nghiệp triển khai nhanh chóng và tích hợp hiệu quả vào hệ thống hiện tại của họ.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Công nghệ sử dụng
Node js: là một môi trường chạy mã JavaScript phía máy chủ (server- side JavaScript) được xây dựng trên JavaScript Engine của Google Chrome (V8 JavaScript Engine).
Express js: là một framework web phía máy chủ xây dựng trên
Node.js là một nền tảng mạnh mẽ cho việc phát triển ứng dụng web nhanh chóng và dễ dàng Kết hợp với Express.js, nó cung cấp các công cụ quản lý định tuyến, middleware và xử lý yêu cầu HTTP hiệu quả.
MongoDB: là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) mã nguồn mở được thiết kế để lưu trữ và quản lý dữ liệu.
React js: là một thư viện JavaScript mã nguồn mở được phát triển bởi
Facebook được phát triển nhằm tạo ra giao diện người dùng (UI) cho các ứng dụng web, đặc biệt là phù hợp với việc xây dựng các ứng dụng đơn trang (Single Page Applications - SPAs).
Redux là một thư viện quản lý trạng thái cho ứng dụng JavaScript, thường được sử dụng kết hợp với React nhưng cũng có thể tích hợp vào các thư viện và framework JavaScript khác.
Tailwind CSS là một thư viện CSS mã nguồn mở giúp xây dựng giao diện người dùng (UI) nhanh chóng và dễ dàng cho các ứng dụng web Thư viện này tập trung vào việc sử dụng các lớp CSS để tạo kiểu cho các thành phần giao diện, thay vì viết mã CSS tùy chỉnh từng chi tiết.
Công cụ hỗ trợ
Visual Studio Code (VS Code): là một môi trường phát triển tích hợp
IDE là một ứng dụng mã nguồn mở và miễn phí do Microsoft phát triển, cung cấp công cụ mạnh mẽ cho việc viết và làm việc với mã nguồn trong nhiều ngôn ngữ lập trình khác nhau.
MongoDB Compass là một công cụ mạnh mẽ để quản lý và tương tác với cơ sở dữ liệu MongoDB, được phát triển và cung cấp bởi chính MongoDB Công cụ này giúp người dùng thao tác với cơ sở dữ liệu một cách dễ dàng và trực quan, nâng cao hiệu quả làm việc với dữ liệu.
Postman: là một công cụ giúp bạn thực hiện kiểm thử và quản lý các API
(Application Programming Interface) trong quá trình phát triển ứng dụng.
Thiết kế cơ sở dữ liệu
3.3.1 Thiết kế sơ đồ quan hệ thực thể mối liên kết (ERD)
Hình 3.1 Sơ đồ quan hệ thực thể mối liên kết (ERD)
3.3.2 Thiết kế chi tiết thực thể
Lưu ý: Cấu trúc bảng và kiểu dữ liệu trong mongoDB khác so với các cơ sở dữ liệu quan như SQL, MySQL,… Đồ án này ta sử dụng mongoDB
Column name Data type Allow nulls
_id ObjectId username String x email String name first String last String avatar String provider String x role String
Bảng 3.1 Cấu trúc bảng user
Column name Data type Allow nulls
_id ObjectId password String user ObjectId
Bảng 3.2 Cấu trúc bảng passwordCredentials
Column name Data type Allow nulls
_id ObjectId uid String user ObjectId
Bảng 3.3 Cấu trúc bảng googleCredentials
Column name Data type Allow nulls
_id ObjectId uid String user ObjectId
Bảng 3.4 Cấu trúc bảng facebookCredentials
Column name Data type Allow nulls
_id ObjectId stars Number movie ObjectId user ObjectId
Bảng 3.5 Cấu trúc bảng rates
Column name Data type Allow nulls
_id ObjectId movie ObjectId user ObjectId
Bảng 3.6 Cấu trúc bảng follows
Column name Data type Allow nulls
_id ObjectId episode ObjectId user ObjectId
Bảng 3.7 Cấu trúc bảng histories
Column name Data type Allow nulls
_id ObjectId ordinalNumber Number name String videoUrl String commentCount Number movie ObjectId
Bảng 3.8 Cấu trúc bảng episodes
Column name Data type Allow nulls
_id ObjectId title String alias String[] description String x posterUrl String release Number duration String episodeCount Number followerCount Number ratingSummar y starRatingCoun t
Number reviewCount Number genres ObjectId[] directors ObjectId[] casts ObjectId[] country ObjectId
Bảng 3.9 Cấu trúc bảng movies
Column name Data type Allow nulls
_id ObjectId pin Boolean text String likes ObjectId[] dislikes ObjectId[] author ObjectId episode ObjectId parent ObjectId replies ObjectId[]
Bảng 3.10 Cấu trúc bảng comments
Column name Data type Allow nulls
_id ObjectId name String avatar String
Bảng 3.11 Cấu trúc bảng directors
Column name Data type Allow nulls
_id ObjectId name String avatar String
Bảng 3.12 Cấu trúc bảng casts
Column name Data type Allow nulls
_id ObjectId name String description String x
Bảng 3.13 Cấu trúc bảng genres
Column name Data type Allow nulls
Bảng 3.14 Cấu trúc bảng countries
3.3.3 Thiết kế sơ đồ lớp (Class Diagram):
Lưu ý: Các bảng trong mongoDB có cấu trúc BSON nên có thể sẽ khác so với cấu trúc bảng trong SQL Đồ án này sử dụng mongoDB
Hình 3.2 Sơ đồ lớp (Class Diagram)
Thiết kế phần thông minh (gợi ý/đề xuất phim)
3.4.1 Đề xuất các bộ phim mà người dùng có thể quan tâm dựa trên sự tương đồng của các người dùng trong việc đánh giá phim Ý tưởng thực hiện: Xác định mức độ quan tâm của một user tới một item dựa trên các users khác gần giống với user này Việc gần giống nhau giữa các users có thể được xác định thông qua mức độ quan tâm của các users này tới các items khác mà hệ thống đã biết Ví dụ, A, B đều thích phim Cảnh sát hình sự, tức đều rate bộ phim này 5 sao Ta đã biết cũng thích A Người phán xử, vậy nhiều khả năng cũng thích bộ phim này.B
Loại hệ thống đề xuất được sử dụng: Hệ thống cộng tác (Collaborative Filtering system) theo hướng tiếp cận User-user collaborative filtering.
Đầu vào của hệ thống bao gồm danh sách thông tin người dùng, danh sách thông tin các bộ phim, và danh sách đánh giá của người dùng cho các bộ phim, với mức đánh giá từ 1 sao đến 5 sao.
Output (đầu ra): danh sách các bộ phim được đề xuất cho người dùng tương ứng dựa trên các giá trị dự đoán.
Các bước phải làm để hiện thức ý tưởng:
Xây dựng Utility matrix dựa trên số sao một người dùng (user) đánh giá cho một bộ phim (movie)
Trong đó u0, u , u , u , u , u là người dùng (users)1 2 3 4 5 i0, i , i , i , i là các bộ phim (movies)1 2 3 4
Các giá trị tương ứng với hàng m (i ) cột n (u ) là số sao đánhm n giá tương ứng của user đó cho movie đó.
Các ô đánh dấu “?” đại diện cho các giá trị cần xác định, đây cũng chính là yêu cầu cuối cùng của bài toán Những giá trị này được dự đoán dựa trên mối tương quan giữa các người dùng trong việc đánh giá.
Câu hỏi đặt ra là “mỗi dấu ‘?’ nên được thay bởi giá trị nào để hạn chế việc sai lệch quá nhiều?”
Một lựa chọn để thay thế các dấu ‘?’ là sử dụng giá trị ‘0’, nhưng điều này không tốt vì nó biểu thị mức độ quan tâm thấp nhất Thay vào đó, giá trị an toàn hơn là 2.5, là trung bình cộng của 0 và 5 Tuy nhiên, giá trị này có thể không phù hợp với những người dùng dễ tính, họ thường đánh giá cao các sản phẩm với 5 sao và có thể cho 3 sao cho những sản phẩm họ không thích Ngược lại, với những người dùng khó tính, họ có thể chỉ cho 3 sao cho các sản phẩm yêu thích và đánh giá thấp hơn cho những sản phẩm không thích.
Một phương pháp khả thi hơn là sử dụng trung bình cộng của các đánh giá mà người dùng đã thực hiện Cách tiếp cận này giúp loại bỏ ảnh hưởng của những người dùng quá khó tính hoặc dễ tính, đảm bảo rằng luôn có những sản phẩm mà người dùng yêu thích hơn so với những sản phẩm khác.
Hình 3.4 Original utility matrix and mean user rating
Giá trị trung bình của ratings cho mỗi user, như thể hiện trong Hình 3.4, cho thấy sự dễ tính của người dùng; giá trị cao tương ứng với người dùng dễ tính hơn Khi chúng ta trừ mỗi rating đi giá trị trung bình này và thay thế các giá trị chưa biết bằng 0, chúng ta sẽ có normalized utility matrix như trong Hình 3.5 Bước chuẩn hoá này rất quan trọng vì nó giúp cải thiện độ chính xác trong việc phân tích và dự đoán sở thích của người dùng.
Việc trừ đi trung bình cộng của mỗi cột tạo ra các giá trị dương và âm Các giá trị dương cho thấy người dùng thích item, trong khi các giá trị âm chỉ ra rằng họ không thích item Giá trị bằng 0 thể hiện sự chưa xác định về việc người dùng có thích item hay không.
Số chiều của utility matrix rất lớn, với hàng triệu người dùng và mặt hàng, khiến việc lưu trữ toàn bộ giá trị trong một ma trận trở nên không khả thi do giới hạn bộ nhớ Bởi vì số lượng đánh giá thường rất nhỏ so với kích thước của utility matrix, việc lưu trữ dưới dạng sparse matrix, chỉ giữ lại các giá trị khác không và vị trí của chúng, là giải pháp tối ưu hơn Do đó, các dấu ‘?’ nên được thay thế bằng giá trị ‘0’ để thể hiện rằng chưa xác định liệu người dùng có thích mặt hàng hay không Phương pháp này không chỉ tiết kiệm bộ nhớ mà còn giúp tính toán ma trận tương đồng hiệu quả hơn.
Xây dựng User similarity matrix (Tính ma trận thể hiện sự tương đồng giữa các item dựa trên Normalize utility matrix)
Ta sẽ sử dụng phương pháp cosin similarity để tính độ tương đồng của 2 vector:
Tính hết các cặp tương đồng còn lại ứng với các item còn lại ta được ma trận tương đồng (User similarity matrix) sau:
Rating prediction (Tiến hành dự đoán)
Việc xác định mức độ quan tâm của một user lên một item dựa trên các users gần nhất (neighbor users) này rất giống với thuật toán K-nearest neighboors.
Trong Collaborative Filtering (CF), giống như KNN, việc xác định các đánh giá thiếu dựa vào thông tin từ những người dùng k láng giềng Chúng ta chỉ tập trung vào những người dùng đã đánh giá sản phẩm đang xem xét Đánh giá dự đoán thường được tính toán dưới dạng trung bình có trọng số của các đánh giá đã chuẩn hóa Một điểm quan trọng cần lưu ý là trong KNN, trọng số được xác định dựa trên khoảng cách giữa hai điểm, và các khoảng cách này luôn là số không âm Ngược lại, trong CF, trọng số được xác định dựa trên độ tương đồng giữa hai người dùng, và các trọng số này có thể nhỏ hơn 0.
Công thức phổ biến được sử dụng để dự đoán rating của u cho i là:
Khác với trung bình có trọng số, mẫu số trong phương pháp này sử dụng trị tuyệt đối để xử lý các số âm Trong đó, N(u,i) đại diện cho tập hợp k người dùng trong khu vực lân cận (neighborhood) của người dùng u, những người có độ tương đồng cao nhất và đã đánh giá sản phẩm i.
Một ví dụ về việc tính normalized rating của u cho i với1 1 số nearest neighbors là k=2 Các bước thực hiện là:
Xác định các users đã rated i , đó là u , u , u 1 0 3 5
Xác định similarities của u với các users này ta nhận1 được 0.83, − 0.40 ,− 0.23 Hai (k=2) giá trị lớn nhất là 0.83 và − 0.23 tương ứng với u và u 0 5
Xác định các normalized ratings của u , u cho i , ta thu0 5 1 được hai giá trị lần lượt là 0.75 và 0.5.
Tương tự ta tính với các giá trị với các cặp user và item (movie) còn lại Cuối cùng ta thu được bảng sau:
Hình 3.7 Dự đoán các (normalized) ratings còn thiếu
Hình 3.8 Dự đoán các (denormalized) ratings còn thiếu
Viết code triển khai giải thuật
This project utilizes the python-shell library supported on Node.js to integrate Python code into the application The implementation involves importing necessary libraries such as joblib, numpy, and cosine_similarity from sklearn.metrics.pairwise A collaborative filtering class (CF) is defined, which initializes with parameters for the model, user data (Y_data), the number of neighbors (k), and a distance function (dist_func) If a model is provided, it loads the model; otherwise, it sets the user-user or item-item collaborative filtering based on the uuCF parameter The class also prepares the data for processing, ensuring the correct shape and structure for further analysis.
The code snippet initializes user and item data by removing duplicates while preserving order It converts user and item strings into dictionaries for easier access The `load_model` function loads a pre-trained model from a specified path, extracting various components such as user-user collaborative filtering, user data, and distance functions The `normalize_Y` function calculates the mean ratings for each user and organizes the data into a structured format, enabling efficient processing of user ratings.
# take mean m = np.mean(ratings) if np.isnan(m): m = 0 # to avoid empty array and nan value self.mu[user_index] = m
# normalize for rating_index, rating in enumerate(ratings): self nu[user_index]
[self.items_dict[items[rating_index]]] = rating - m def similarity( self ): self S = self dist_func( self nu) def fit( self ): self normalize_Y() self similarity() def pred(self , u, i, normalized= ): 1
# Bước 1: Tìm tất cả người dùng đã đánh giá mục i ids = np.where( self Y_data[:, ] == i)[ ] 1 0
# Bước 2: Người dùng đã đánh giá mục i users_rated_i = self Y_data[ids, ] 0
In Step 3, we identify similarities between the current user and others who have rated the item This is achieved by comparing the user's ratings with those of similar users in the dataset.
# Bước 4: Tìm k người dùng tương tự nhất a = np.argsort(sim)[- self k:]
# và cấp độ tương tự tương ứng nearest_s = sim[a]
# Mỗi người dùng gần nhất đã đánh giá mục i như thế nào r = self nu.T[ self items_dict[i], [ self users_dict[user] for user in users_rated_i[a]]] if normalized:
# Thêm một số rất nhỏ, ví dụ, 1e-8, để tránh chia cho 0 return np.array(r * nearest_s).sum() /
(np.abs(nearest_s).sum() + 1e-8 ) return np.array(r * nearest_s).sum() /
The algorithm calculates predictions for user-item interactions by summing the absolute differences of nearest neighbors, with a small constant added for stability The prediction function can switch between user-based and item-based collaborative filtering based on the user's preference To recommend items, the system identifies which items a user has already rated and generates a list of new recommendations by predicting ratings for unrated items Finally, the model's effectiveness is assessed using a dedicated test dataset.
SE = 0 n_tests = len (test_data) for n in range (n_tests): pred = self pred(test_data[n, ], test_data[n, ], 0 1 normalized= ) 0
To calculate the Root Mean Square Error (RMSE), use the formula RMSE = np.sqrt(SE / n_tests) To save the model, define the function `save_model` with a default path of './dataset/CF_model.pkl' Within this function, create a dictionary named `model` that includes the keys 'uuCF', 'Y_data', 'k', 'mu', 'nu', 'S', and 'dist_func', each assigned to their respective attributes Finally, utilize joblib to dump the model dictionary to the specified path.
Lưu ý: Có thể xem đầy đủ hơn từ thư mục gốc iflix-api, sau đó theo đường dẫn src\api\v1\utils\python\CF
Tập dữ liệu sẽ được sử dụng để huấn luyện mô hình
Thực hiện dự đoán số sao của những bộ phim mà người dùng chưa đánh giá và đưa ra kết quả đề xuất:
Tương tác ứng dụng và phần thông minh
Đề xuất các bộ phim mà người dùng có thể quan tâm dựa trên sự tương đồng của các người dùng trong việc đánh giá phim
Người dùng tiến hành đăng giá những bộ phim mà mình cảm thấy thích, càng thích thì số sao đánh giá càng cao và ngược lại (tối đa 5 sao)
Dựa trên đánh giá của người dùng, hệ thống sẽ đề xuất các bộ phim mà họ có thể yêu thích hoặc quan tâm.
Đưa ra dự đoán và đề xuất các bộ phim phù hợp với độ tuổi người xem dựa trên thông tin khảo sát được từ người dùng
Thiết kế giao diện chức năng
Chức năng đánh giá phim
Chức năng đề xuất phim (lọc cộng tác)
ĐÁNH GIÁ KHẢ NĂNG THÔNG MINH CỦA HỆ THỐNG GỢI Ý/ĐỀ XUẤT (RECOMMENDATION SYSTEMS)
Trong đồ án này, chúng ta có trình bày 2 giải pháp cho hệ thống đề xuất:
Hệ thống lọc hợp tác (Collaborative Filtering) đề xuất các bộ phim mà người dùng có thể yêu thích dựa trên sự tương đồng trong đánh giá của những người dùng khác Bằng cách phân tích hành vi và sở thích của cộng đồng, hệ thống này giúp người dùng khám phá những bộ phim mới phù hợp với gu thưởng thức của họ.
Đưa ra dự đoán và đề xuất các bộ phim phù hợp với độ tuổi người xem dựa trên thông tin khảo sát được từ người dùng
Chúng ta cần có những tiêu chí để đánh giá khả năng thông minh của hệ thống, đó là:
Mang đến trải nghiệm thông minh cho người dùng có nghĩa là phát triển một trải nghiệm tương tác có khả năng đáp ứng, dự đoán và tùy chỉnh dựa trên thông tin và hành vi của người dùng Điều này không chỉ nâng cao sự hài lòng của người dùng mà còn tạo ra một môi trường tương tác thuận lợi và hiệu quả hơn.
Cải thiện trí thông minh thông qua dữ liệu hiện tại và tương lai là quá trình sử dụng dữ liệu để nâng cao khả năng của hệ thống hoặc ứng dụng Bằng cách thu thập, phân tích và áp dụng dữ liệu, hệ thống có thể trở nên thông minh hơn theo thời gian, giúp dự đoán và hiểu rõ hơn về người dùng cũng như môi trường xung quanh.
Để nâng cao trải nghiệm người dùng, việc thể hiện sự thông minh của hệ thống hoặc ứng dụng là rất quan trọng Điều này không chỉ giúp người dùng cảm nhận rằng hệ thống đang hoạt động một cách thông minh và hiểu biết, mà còn tạo ra sự tin tưởng và khuyến khích tương tác tích cực hơn.
Mang lại trải nghiệm thông minh cho người dùng
Cải thiện trí thông minh dựa trên dữ liệu hiện tại và tương lai:
Hệ thống thông minh sẽ nâng cao trải nghiệm người dùng bằng cách đề xuất các bộ phim phù hợp, dựa trên sở thích và thói quen của những người dùng tương tự.
Khi một người dùng đang loay hoay trong việc không biết xem phim
Hệ thống đề xuất các bộ phim mà người dùng có thể quan tâm dựa trên sự tương
Một vấn đề thường gặp là khi một trang web phim có hàng ngàn, hàng triệu bộ phim. trong việc đánh giá phim (thuộc loại
Hệ thống lọc cộng tác (Collaborative Filtering) phát huy hiệu quả khi người dùng đã xem nhiều bộ phim yêu thích, giúp đề xuất các bộ phim mà họ có thể quan tâm dựa trên sự tương đồng trong đánh giá của những người dùng khác Hệ thống này mang lại trải nghiệm mới mẻ bằng cách giới thiệu những bộ phim mà người dùng chưa biết đến Độ chính xác của các dự đoán sẽ tăng lên khi dữ liệu thu thập về số sao đánh giá trở nên phong phú hơn.
Khi số lượng đánh giá của người dùng tăng lên, độ tương đồng giữa các cặp người dùng cũng tăng, giúp cải thiện độ chính xác trong việc dự đoán Nếu một người dùng đánh giá nhiều bộ phim, những đánh giá này sẽ ảnh hưởng đáng kể đến các dự đoán cho tất cả người dùng khác, từ đó nâng cao khả năng dự đoán tổng thể.
Bạn đang phân vân không biết xem phim gì hay? Hệ thống ngay lập tức cung cấp danh sách phim với thông báo “Bạn có thể quan tâm”, giúp người dùng dễ dàng tìm kiếm và lựa chọn Điều này không chỉ đáp ứng nhanh chóng nhu cầu của người dùng mà còn tiết kiệm thời gian chờ đợi.
Tạo ấn tượng tích cực và mang đến trải nghiệm tuyệt vời cho người dùng là yếu tố quan trọng, giúp họ không muốn rời bỏ trang web vì sự thông minh và tiện lợi trong quá trình sử dụng.