Nạp tập dữ liệu MovieLens vào các RDD
Collaborative filtering là một kỹ thuật cho hệ thống gợi ý, trong đó điểm đánh giá và tương tác của người dùng với nhiều sản phẩm khác nhau được dùng để đề xuất các mục mới. Với sự phát triển của Machine Learning và xử lý dữ liệu song song, hệ thống gợi ý đã trở nên phổ biến rộng rãi trong những năm gần đây và được ứng dụng trong nhiều lĩnh vực như phim, nhạc, tin tức, sách, bài báo nghiên cứu, truy vấn tìm kiếm, thẻ xã hội. Trong bài tập gồm 3 phần này, mục tiêu của bạn là xây dựng một hệ thống gợi ý phim đơn giản bằng PySpark MLlib sử dụng một tập con của MovieLens 100k dataset.
Ở phần đầu tiên, bạn sẽ nạp dữ liệu MovieLens (ratings.csv) vào RDD và từ mỗi dòng trong RDD có định dạng userId,movieId,rating,timestamp, bạn cần ánh xạ dữ liệu MovieLens sang đối tượng Ratings (userID, productID, rating) sau khi loại bỏ cột timestamp, và cuối cùng bạn sẽ chia RDD thành RDD huấn luyện và RDD kiểm tra.
Lưu ý, bạn đã có SparkContext sc trong không gian làm việc. Ngoài ra biến file_path (đường dẫn tới tệp ratings.csv) và lớp ALS (tức Rating) cũng đã có sẵn trong không gian làm việc của bạn.
Bài tập này là một phần của khóa học
Nền tảng Big Data với PySpark
Hướng dẫn bài tập
- Nạp tập dữ liệu
ratings.csvvào một RDD. - Tách RDD bằng dấu
,làm ký tự phân tách. - Với mỗi dòng của RDD, dùng lớp
Rating()để tạo một bộuserID, productID, rating. - Chia ngẫu nhiên dữ liệu thành dữ liệu huấn luyện và dữ liệu kiểm tra (0.8 và 0.2).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Load the data into RDD
data = sc.____(file_path)
# Split the RDD
ratings = data.____(lambda l: l.split('____'))
# Transform the ratings RDD
ratings_final = ratings.____(lambda line: Rating(int(line[0]), int(____), float(____)))
# Split the data into training and test
training_data, test_data = ratings_final.____([0.8, 0.2])