Với lượngdữ liệu khổng lồ được tạo ra hàng ngày từ các hoạt động trực tuyến và mạng xã hội, việctận dụng những dữ liệu này để đưa ra các gợi ý sản phẩm phù hợp cho người dùng đã trởthành
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐẠI HỌC QUỐC GIA HÀ NỘI
VIỆN TRÍ TUỆ NHÂN TẠO -
BÁO CÁO MÔN HỌC KỸ THUẬT VÀ CÔNG NGHỆ DỮ LIỆU LỚN
ĐỀ TÀIPhân tích dữ liệu lớn đề xuất sản phẩm cho người dùng
Nhóm sinh viên thực hiện: Đỗ Minh Nhật - Trần Nam Anh - Hà Như Ý
Giảng viên hướng dẫn: TS Trần Hồng Việt
Ths Ngô Minh Hương
Trang 2MỞ ĐẦU
Trong thời đại công nghệ số hiện nay, sự bùng nổ dữ liệu đã mở ra nhiều cơ hội và tháchthức mới cho các doanh nghiệp trong việc hiểu và phục vụ khách hàng tốt hơn Với lượngdữ liệu khổng lồ được tạo ra hàng ngày từ các hoạt động trực tuyến và mạng xã hội, việctận dụng những dữ liệu này để đưa ra các gợi ý sản phẩm phù hợp cho người dùng đã trởthành một yếu tố then chốt trong chiến lược kinh doanh của nhiều công ty
Dự án phân tích dữ liệu lớn nhằm đề xuất gợi ý sản phẩm cho người dùng được triển khaivới mục tiêu tối ưu hóa trải nghiệm mua sắm của khách hàng và tăng cường doanh số bánhàng Hệ thống gợi ý này sử dụng các kỹ thuật phân tích dữ liệu lớn, kết hợp với cácthuật toán máy học để phân tích hành vi và sở thích của người dùng, từ đó đưa ra các đềxuất sản phẩm cá nhân hóa và phù hợp với nhu cầu của từng khách hàng
Dự án này sẽ tập trung vào việc áp dụng các phương pháp phân tích và mô hình học máyđể xây dựng một hệ thống gợi ý phim thông minh Kết quả mong đợi là một hệ thống cókhả năng học hỏi liên tục từ dữ liệu mới, cải thiện độ chính xác của các gợi ý và mang lạigiá trị thực tiễn
Báo cáo này bao gồm:Chương 1: Tổng quan về dữ liệu lớnChương 2: Xây dựng hệ thống với thuật toán gợi ý sản phẩmChương 3: Thực nghiệm và đánh giá
Chương 4: Kết luận và hướng phát triển
Trang 3MỤC LỤC
MỞ ĐẦU 2
MỤC LỤC 3
CHƯƠNG 1: TỔNG QUAN VỀ DỮ LIỆU LỚN 5
Giới thiệu Big Data 5
1 Định nghĩa: 5
2 Đặc trưng của Big Data 5
Giới thiệu về Hadoop 7
PySpark 8
1 Giới thiệu 8
2 Kiến trúc và thành phần của PySpark: 8
2.1 Kiến trúc của Apache Spark 8
3 Sử dụng MapReduce cho Content-Based Filtering: 14
Thuật toán Collaborative Filtering 14
1 Giới thiệu: 14
2 Quy trình thực hiện: 14
3 Sử dụng MapReduce cho Content-Based Filtering: 15
4 Sử dụng thuật toán ALS cho Collaborative Filtering: 16
CHƯƠNG 3: THỰC NGHIỆM VÀ ĐÁNH GIÁ 21
Trang 44.2 Hướng phát triển: 27
Tài liệu tham khảo 29
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ DỮ LIỆU LỚN Giới thiệu Big Data
1 Định nghĩa:
Big Data là thuật ngữ mô tả khối lượng dữ liệu lớn và phức tạp, mà các công cụtruyền thống không thể xử lý hiệu quả Big Data không chỉ đề cập đến khối lượngdữ liệu mà còn bao gồm sự đa dạng, tốc độ, và giá trị của dữ liệu Có thể nói, Dữliệu lớn là khối lượng lớn, tốc độ cao và/hoặc loại hình thông tin rất đa dạng màyêu cầu phương thức xử lý mới để cho phép tăng cường ra quyết định, khám phábên trong và xử lý tối ưu
2 Đặc trưng của Big DataVolume (Khối lượng): Khối lượng dữ liệu lớn cần phải xử lý, ở đây ta nói đến
những bộ dữ liệu khổng lồ, có thể đạt đến hàng terabyte (TB)
Velocity (Tốc độ): Dữ liệu được tạo ra và xử lý với tốc độ cao, thường là trong
thời gian thực
Variety (Đa dạng): Dữ liệu có nhiều dạng khác nhau, từ văn bản, hình ảnh, video
đến các dạng dữ liệu phi cấu trúc
Veracity (Độ tin cậy): Đảm bảo tính chính xác và tin cậy của dữ liệu, đòi hỏi các
phương pháp để làm sạch và xác minh dữ liệu.Có thể nói cả 4 đặc trưng trên của Big Data cốt để hướng đến đặc trưng số 5:
Value (Giá trị): Dữ liệu lớn gồm những giá trị kinh tế tiềm ẩn mà ta cần phải tìm
cách khai thác đúng cách từ đó mang lại những thông tin quý báu và lợi ích kinhdoanh
Toàn bộ các đặc điểm chính của Big Data được trình bày trong hình 1.1
Trang 6Hình 1.1: 5 đặc điểm chính của Big Data
3 Các nguồn dữ liệu lớn
Dữ liệu lớn có thể đến từ nhiều nguồn khác nhau như:
● Dữ liệu trong kinh doanh ● Dữ liệu sinh ra từ các trang mạng xã hội ● Dữ liệu sinh ra từ các hệ thống ERP ● Dữ liệu sinh ra theo thời gian thực từ các cảm biến, đồ dùng điện tử như IoT
(Internet of Things)Về tổng quan các nguồn dữ liệu lớn được thể hiện ở hình 1.2
Trang 7Hình 1.2: Các nguồn dữ liệu lớn
Giới thiệu về Hadoop
Trong các ứng dụng Big Data việc xử lý dữ liệu một cách phân tán là vô cùng quantrọng, vì lẽ đó Apache Hadoop ra đời như là một framework mã nguồn mở được sửdụng để lưu trữ và xử lý các tập dữ liệu lớn trên các cụm máy phân tán Hadoopđược thiết kế để mở rộng từ một vài máy chủ lên hàng ngàn, triệu máy chủTổng quan Hadoop gồm 4 module chính:
● Hadoop Distributed File System (HDFS): Đây là hệ thống lưu trữ file
phân tán, cung cấp khả năng lưu trữ dữ liệu lớn trên nhiều máy chủ, đảm bảotính khả dụng và độ tin cậy cao khi sao chép dữ liệu
● Hadoop Common: Bao gồm một loạt các tiện ích hỗ trợ cho các module
khác của Hadoop
● Yet Another Resource Negotiator: Đây là một hệ thống quản lý tài nguyên,
chịu trách nhiệm phân bổ tài nguyên hệ thống cho các ứng dụng chạy trêncụm Hadoop
Trang 8● Hadoop MapReduce: Là một dạng công cụ hay mô hình lập trình cung cấp
khả năng chạy và xử lý các tác vụ song song cũng như tạo kết quả trên tậpdữ liệu lớn
Trong bối cảnh hiện nay, khi lượng dữ liệu người dùng tăng đột biến, việc sử dụngthuần Hadoop MapReduce cho các thuật toán gợi ý người dùng trở nên bất khả thi- hay nói cách khác là khó thực hiện trong thời gian ngắn, bởi vậy nhóm phát triểnsử dụng Apache Spark thay thế cho Hadoop MapReduce với thời gian chạy và tốcđộ xử lý vượt trội hơn; cụ thể, các thuật toán trong dự án đều được cài đặt bằngPySpark Dưới đây sẽ là phần giới thiệu về PySpark cũng như Apache Spark
PySpark 1 Giới thiệu
PySpark là một API của Apache Spark dành cho ngôn ngữ lập trình Python.Apache Spark là một framework mã nguồn mở mạnh mẽ dùng để xử lý và phântích dữ liệu lớn theo cách phân tán và song song PySpark cho phép các nhà pháttriển và nhà khoa học dữ liệu sử dụng Spark với Python, mang lại sự linh hoạt vàtiện lợi của Python cùng với hiệu suất cao và khả năng mở rộng của Spark
2 Kiến trúc và thành phần của PySpark:2.1 Kiến trúc của Apache Spark
Apache Spark có kiến trúc dựa trên cụm (cluster) bao gồm các thành phần chính:
● Driver Program: Điều khiển việc thực thi của ứng dụng Spark Driver tạo
ra SparkContext, xác định các RDDs (Resilient Distributed Datasets), vàthực hiện các hành động trên chúng
● Cluster Manager: Quản lý các tài nguyên trong cụm máy tính, chẳng hạn
như YARN, Mesos hoặc Kubernetes
● Workers: Các máy tính trong cụm thực hiện các tác vụ (tasks) được giao
bởi Driver
Trang 92.2 Thành phần của PySpark
PySpark bao gồm các thành phần chính:
1 SparkContext: Là cổng vào của Spark, dùng để kết nối với cụm Spark 2 RDD (Resilient Distributed Datasets): Cấu trúc dữ liệu cơ bản trong
Spark, giúp xử lý dữ liệu theo cách phân tán và bất biến
3 DataFrame: API cấp cao hơn của RDD, cung cấp giao diện dữ liệu dạng
bảng với các thao tác SQL và tích hợp tốt với các công cụ dữ liệu khác nhưPandas
4 Spark SQL: Cho phép thao tác và xử lý dữ liệu thông qua ngôn ngữ SQL 5 MLlib (Machine Learning Library): Thư viện học máy của Spark, cung
cấp các thuật toán và công cụ học máy phân tán
6 GraphX: Thư viện xử lý đồ thị và phân tích đồ thị 2.3 So sánh Apache Spark với Hadoop MapReduce
Do Apache Spark chạy trên trực tiếp trên bộ nhớ (in-memory processing) do đó nónhanh hơn đáng kể so với Hadoop MapReduce, điều này thể hiện trong một sốbenchmark giữa 2 framework như hình 1.3, 1.4 và 1.5
Trang 10Hình 1.3: So sánh thời gian chạy trương trình WordCount
Trang 11Hình 1.4: So sánh thời gian xử lý dữ liệu lớn
Hình 1.5: So sánh thời gian chạy Linear Regression
Do đó, việc chọn Apache Spark thay cho Hadoop MapReduce trong bài toán gợi ý,đề xuất sản phẩm cho người dùng là hoàn toàn hợp lý bởi có thể thấy hiện nay cáchệ thống lớn như Netflix, Spotify, Amazon, … việc gợi ý mỗi sản phẩm cho ngườidùng thường được tính bằng giây và thay đổi liên tục theo thời gian khi người dùngtương tác (rating, click chuột, xem, mua, …) với sản phẩm
2.4 Ứng dụng của PySpark
● Xử lý và Phân tích Dữ liệu Lớn: PySpark được sử dụng rộng rãi để xử lý
và phân tích dữ liệu lớn trong nhiều lĩnh vực khác nhau như thương mại điện
Trang 12tử, tài chính, y tế và công nghiệp Các công ty như Netflix, Amazon và eBaysử dụng PySpark để phân tích hành vi người dùng, dự đoán xu hướng và tốiưu hóa dịch vụ của họ.
● Học Máy và Trí Tuệ Nhân Tạo: Với thư viện MLlib, PySpark cung cấp các
công cụ và thuật toán học máy phân tán, cho phép triển khai các mô hìnhhọc máy trên các tập dữ liệu lớn Điều này giúp cải thiện độ chính xác vàhiệu quả của các mô hình dự đoán
● Xử lý Dữ liệu Thời Gian Thực: PySpark hỗ trợ xử lý dữ liệu thời gian thực
thông qua Spark Streaming, cho phép xử lý và phân tích luồng dữ liệu liêntục từ các nguồn dữ liệu như Kafka, Flume và Kinesis
Trang 13CHƯƠNG 2: XÂY DỰNG HỆ THỐNG VỚI THUẬT
TOÁN GỢI Ý SẢN PHẨM Thuật toán content-based filtering
1 Giới thiệu:
Thuật toán Content-based filtering cung cấp các đề xuất cho người dùng dựa trênsự phân tích nội dung của các mục đã được người dùng đánh giá cao hoặc quantâm trước đó
Content-based filtering thường được sử dụng trong các lĩnh vực như thương mạiđiện tử, dịch vụ streaming, và mạng xã hội để gợi ý sản phẩm, phim ảnh, bài viết,và nhiều loại nội dung khác
2 Quy trình thực hiện:Bước 1: Thu thập dữ liệu
- Dữ liệu sản phẩm Ví dụ: Tên sản phẩm, thể loại, mô tả sản phẩm, - Dữ liệu lịch sử tương tác của người dùng: lịch sử người dùng đánh giá sản
phẩm
Bước 2: Trích xuất đặc trưng
- Đặc trưng của sản phẩm: biểu diễn một tập các đặc trưng như thể loại, lĩnhvực, từ khóa, mô tả thành các vector đặc trưng
- Đặc trưng người dùng: Tạo vector đặc trưng người dùng dựa vào lịch sửtương tác VD trung bình đặc trưng sản phẩm yêu thích
Bước 3: Tính toán độ tương đồng
- Tính toán độ tương đồng giữa đặc trưng người dùng và đặc trưng sản phẩm.Các biện pháp có thể sử dụng như cosine similarity hoặc Euclidean distance
Trang 14Bước 4: Đưa ra đề xuất
- Xếp hạng các sản phẩm dựa trên độ tương đồng đã tính ở bước 3- Đưa ra đề xuất sản phẩm cho người dùng
3 Sử dụng MapReduce cho Content-Based Filtering:3.1 Giai đoạn Map:
Đặc trưng sản phẩm: Tạo các cặp khóa - giá trị, trong đó khóa là ID sản phẩm, giátrị là các vector đặc trưng của sản phẩm
Xử lý dữ liệu lịch sử tương tác người dùng: Tạo ra các cặp khóa - giá trị, trong đókhóa là ID người dùng, giá trị là (vector đặc trưng sản phẩm, đánh giá)
3.2 Giai đoạn Shuffle và Sort: Sắp xếp các cặp khóa - giá trị và nhóm lại dựa
2 Quy trình thực hiện:Bước 1: Thu thập dữ liệu
Trang 15- Dữ liệu lịch sử tương tác của người dùng: lịch sử người dùng đánh giá sảnphẩm.
Bước 2: Trích xuất đặc trưng
- Xây dựng ma trận đánh giá người dùng và sản phẩm
Bước 3: Tính toán độ tương đồng
- Tính toán độ tương đồng giữa các người dùng Các biện pháp có thể sử dụngnhư cosine similarity hoặc correlation coefficient
Bước 4: Đưa ra đề xuất
- Tính điểm đề xuất sản phẩm cho mỗi người dùng: dựa trên độ tương đồng
giữa các người dùng- Xếp hạng sản phẩm tương đồng dựa trên điểm đánh giá sản phẩm- Đưa ra đề xuất sản phẩm cho người dùng
3 Sử dụng MapReduce cho Content-Based Filtering:3.1 Giai đoạn Map:
Xử lý dữ liệu lịch sử tương tác người dùng: Tạo ra các cặp khóa - giá trị, trong đókhóa là ID người dùng, giá trị là (ID sản phẩm, đánh giá)
3.2 Giai đoạn Shuffle và Sort: Sắp xếp các cặp khóa - giá trị và nhóm lại dựa
trên khóa
3.3: Giai đoạn Reduce:
Xây dựng ma trận đánh giá người dùng - sản phẩmTính toán độ tương đồng giữa các người dùngTính toán điểm các sản phẩm cho mỗi người dùngXếp hạng sản phẩm
Xuất cặp khóa - giá trị : user_id - danh sách gợi ý
Trang 164 Sử dụng thuật toán ALS cho Collaborative Filtering:4.1 Giới thiệu:
Alternating Least Squares (ALS) là một kỹ thuật phân rã ma trận hiệu quả, đượcdùng trong collaborative filtering để tạo ra các hệ thống gợi ý cá nhân hóa.Thuậttoán này phân rã ma trận đánh giá của người dùng đối với các mục thành hai matrận nhỏ hơn để tìm ra các yếu tố tiềm ẩn (latent factors) đại diện cho người dùngvà các mục ALS được ưa chuộng nhờ khả năng mở rộng và tính hiệu quả khi xử lýcác tập dữ liệu lớn
4.2 Nguyên lý hoạt động:
Ma trận đánh giá𝑅 có kích thước𝑚 × 𝑛(với𝑚là số người dùng,𝑛là số mục)được phân ra thành ma trận𝑈(ma trận người dùng) và𝑉(ma trận sản phẩm) vớikích thước𝑚 × 𝑘và𝑘 × 𝑛, trong đó𝑘là yếu tố tiềm ẩn Mục tiêu là tìm các matrận𝑈 𝑉và sao cho tích chúng gần ma trận gốc𝑅nhất:𝑅 ≈ 𝑈𝑉 𝑇
4.3 Quy trình thực hiện: Bước 1: Khởi tạo ma trận𝑈 𝑉và
Bước 2: Tối ưu hóa luân phiên
Cập nhật ma trận người dùng:𝑈 = arg min𝑈
{(𝑖,𝑗)} ∈ 𝑅}∑ (𝑅𝑖𝑗− 𝑈 𝑉 ) + λ||𝑈 ||𝑖 𝑗𝑇 2 𝑖 2Cập nhật ma trận sản phẩm:𝑉 = arg min𝑉
{(𝑖,𝑗)} ∈ 𝑅}∑ (𝑅𝑖𝑗− 𝑈 𝑉 ) + λ||𝑉 ||𝑖 𝑗𝑇 2 𝑖 2
Bước 3: Lặp lại bước 2 đến khi hội tụ hoặc đạt số lần lặp tối đa 4.4 Sơ đồ ALS hoạt động:
Trang 17Hình 2.2: Luồng hoạt động của thuật toán ALS
Trang 18Hình 2.3: Luồng hoạt động của thuật toán ALS trên PySpark
Trang 19Xây dựng ETL pipeline cho hệ thống
Nhóm phát triển đề xuất hệ thống tổng quan như sau:
Hình 2.2: Tổng quan luồng ETL của hệ thống
Môi trường cài đặt nhóm phát triển dự kiến sẽ nằm trên GCP (Google CloudPlatform)
Ở đây, đi từ Data source chúng ta sẽ thu thập dữ liệu từ Netflix hoặc IMDb, dữ liệubao gồm UserId, MoviesID và rating Sau đó dữ liệu được đi qua ETL với cácbước như sau:
Bước 1: Dữ liệu từ Data source được Extract và Transform bằng dịch vụ Cloud
Scheduler/Composer trên GCP (Google Cloud Platform) - có thể được viết bằngAirflows đồng thời Scheduler và Composer cũng có nhiệm vụ điều hướngcrawler.py script crawl lượng dữ liệu về vào lúc nào và khi nào
Bước 2a: Dữ liệu có thể được lưu vào Google BigQuery để phục vụ cho việc truy
vấn, join các bảng biểu phức tạp
Bước 2b: Dữ liệu luôn được lưu vào (load) Google Cloud Storage dưới dạng Data
Warehouse
Bước 3: Thực hiện một số thử nghiệm với data trích xuất ra từ Data Warehouse,
nếu mô hình gợi ý đem lại kết quả tốt (RMSE 0.8 - 0.9), tiến hành sang bước 4
Trang 20Bước 4: Ta thực hiện huấn luyện mô hình bằng thuật toán ALS (Do thuật toán này
mang lại kết quả tốt nhất và nhanh nhất - Được trình bày ở chương 3) sử dụng dịch
vụ Vertex AI với PySpark
Bước 5: Sau khi huấn luyện thành công model ta chuyển model thành một API sử
dụng Fast API như một dịch vụ (service) để thử nghiệm với môi trường bên ngoài
Trang 21CHƯƠNG 3: THỰC NGHIỆM VÀ ĐÁNH GIÁ3.1 Bộ dữ liệu:
Sử dụng 2 bộ dữ liệu để thử nghiệm là MovieLens 2M gồm chứa 2.204.506 dữ liệuvới các cột là User_Id, Movie_Name, Rating, Genre và Year và Large MoviesDataset với 200000 movies và 25 triệu ratings khác nhau trên Kaggle
3.2 Thuật toán Content-based Filtering: 3.2.1 Kết quả
Hình 3.1: Kết quả chạy thuật toán Content-based filtering
Trang 223.2.2 Phân tích và đánh giá: Thuật toán cho ra kết quả khá thấp vì có nhiều hạn chế:
● Giới hạn về feature matrix: Thuật toán yêu cầu các item được mô tả chi
tiết và cụ thể Nếu thông tin mô tả của các item không đầy đủ hoặc thiếuchính xác, hệ thống sẽ gặp khó khăn trong việc gợi ý chính xác
Ở đây, bộ dữ liệu thử nghiệm chỉ trích xuất thông tin thể loại phim mà khôngcó các đặc trưng khác như đạo diễn, diễn viên… dẫn đến thiếu thông tin,thuật toán hoạt động không hiệu quả
● Thiếu khả năng khám phá: Hệ thống chỉ dựa trên các sản phẩm mà người
dùng đã tương tác từ trước Điều này dẫn đến việc đưa ra gợi ý các sản phẩmmới mà người dùng chưa từng khám phá là rất khó Hay nói cách khác,người dùng có thể bỏ lỡ các sản phẩm tiềm năng hoặc các sản phẩm mới ramắt mà họ có thể quan tâm nhưng chưa từng tương tác trước đó
● Vấn đề cold start của người dùng: Đối với người dùng mới hoặc người
dùng chưa từng đánh giá bất kỳ sản phẩm nào, hệ thống sẽ ở tình trạngkhông có dữ liệu lịch sử tương tác của người dùng Lúc này, Hệ thống khôngcó đủ thông tin xây dựng hồ sơ sở thích dẫn đến việc gợi ý không chính xáchoặc không có gợi ý
Mặc dù có nhiều hạn chế, thuật toán vẫn được sử dụng rộng rãi vì các ưu điểm sau:
● Không phụ thuộc vào dữ liệu người dùng khác, cần ít dữ liệu huấn
luyện: Thuật toán chỉ dựa trên thông tin về sản phẩm và sở thích cá nhân
của người dùng mà không cần thông tin của những người dùng khác
● Khả năng đề xuất cá nhân hóa: Thuật toán có thể tạo ra các đề xuất cá
nhân hóa dựa trên sở thích và hành vi của từng người dùng cụ thể