Zing MP3 Song — Song Suggestion
Ngày nay, hệ thống khuyến nghị (Song suggestion) là phần không thể thiếu trong các hệ thống cung cấp dich vụ, sản phẩm trực tuyến. Với số lượng content nhiều và đa dạng trên các dịch vụ như Zing MP3, YouTube, Spotify… các hệ thống khuyến nghị đóng vai trò quan trọng trong việc giúp người dùng khám phá và tìm kiếm các nội dung phù hợp với mình.
Với thư viện hàng triệu bài hát, Zing MP3 rất coi trọng việc giúp users khám phá các bài hát phù hợp với mình. Hướng đến mục tiêu đó, một trong những tính năng Zing MP3 đã xây dựng là “Gợi Ý” bài hát (Song-Song Suggestion). Tính năng này sẽ gợi ý một tập bài hát phù hợp với bài hát mà users đang nghe. Danh sách gợi ý này đang đóng góp hơn 30% lượt nghe bài hát trên trang web Zing MP3. Bài viết này sẽ giới thiệu cách mà nhóm đã nghiên cứu và hiện thực tính năng trên.
Các mô hình khuyến nghị trong lịch sử
Trước hết phải điểm qua các mô hình khuyến nghị trước giờ. Các hệ thống khuyến nghị thực ra đã được nghiên cứu và xây dựng khá lâu, hơn hai thập kỷ qua. Có rất nhiều mô hình được đề xuất và tựu trung có thể nhóm về 3 thể loại chính: Collaborative Filtering, Content-based và Hyrib Methods.
Collaborative filtering (CF)
Collaborative Filtering dựa vào lịch sử tương tác/ratings của các users lên các items. Nguyên tắc chính là tìm những users/items có lịch sử tương tác/ratings tương tự nhau để giới thiệu cho nhau.
Đi sâu vào cách thức hiện thực, có thể chia ra 2 dạng mô hình collaborative filtering phổ biến là memory-based và model-based.
Memory-based methods
Memory-based là mô hình cổ điển của Collaborative filtering, còn được biết đến với tên neighbourhood-based collaborative filtering. Ý tưởng chính của memory-based là dự đoán điểm rating của user U lên item I dựa vào những user (hoặc item) tương tự. Mô hình neighbourhood-based từ đó cũng chia làm 2 hướng chính:
● User-based: Tìm top-k user có hành vi tương tự user U, dựa vào rating của top-k user này lên I để dự đoán cho rating của U lên I.
● Item-based: Tìm top-k item được rating giống item I, dựa vào rating của user U lên top-k item này để dựa đoán cho rating của U lên I.
Những bài toán thuộc họ memory-based có ưu điểm là không đòi hỏi phải phân tích nội dung của item hoặc user, dễ hiện thực và giải thích. Tuy nhiên, không hoạt động tốt với những dataset bị sparse (user/item ít được tương tác) do khó tìm ra user/item tương tự.
Model-based methods
Bài toán Recommendation có thể được đưa về bài toán dự đoán xác suất Pu,i user U thích item I (hoặc không). Đối với các dạng bài toán này, các tham số của mô hình được học trong ngữ cảnh tối ưu cho việc dự đoán xác suất Pu,i.
Việc chọn model phụ thuộc vào từng bài toán và dữ liệu cụ thể. Có thể ví dụ một vài model phổ biến như Decision Trees, Rule-based Models, Bayesian hay Latent Factor Models … hay như gần gây là Deep Learning. Việc đưa bài toán về dạng model-based có thể tận dụng được rất nhiều giải thuật Prediction hoặc Classification.
Theo góc nhìn này, memory-based cũng là một dạng đặc biệt của model-based, dự đoán xác suất user U thích item I dựa vào features là rating của các users và items tương tự.
Content-based models (CB)
Bài toán Recommendation kiểu content-based sẽ tìm ra một tập các đặc tính để mô tả items, rồi dựa vào tương tác của user lên các đặc tính này trong quá khứ để dự đoán xác suất user thích item tiếp theo.
Do chỉ phải phân tích đặc tính của item, hệ thống content-based gợi ý tốt cho các item mới có đặc tính tương tự. Các hệ thống content-based ngày nay còn xây dựng tập đặc tính của user nhằm phục vụ cho việc gợi ý các user mới.
Những đặc tính dùng để mô tả items thường là từ khoá hoặc nội dung. Items với tập từ khoá hoặc nội dung không nằm trong lịch sử của user có rất ít khả năng được gợi ý. Điều này làm cho hệ thống Recommendation trở nên thiếu tính đa dạng, nhàm chán và dễ dự đoán.
Context-based models
Nhiều bài nghiên cứu đã chỉ ra rằng các hành vi tương tác của người dùng thường phụ thuộc vào thời gian, địa điểm cũng như các tương tác xã hội…. Ví dụ, trong giờ làm việc bạn thường nghe nhạc nhẹ, ở phòng tập gyms thường mở nhạc điện tử… Các mô hình context-based được sinh ra với mục đích chính là dự đoán hành vi của user trong một ngữ cảnh cụ thể.
3 dạng ngữ cảnh phổ biến thường được phân tích là thời gian (time-sensitive awared), địa điểm (location awared) và tương tác xã hội (social-network awared).
Hybrid methods
Các mô hình gợi ý nêu trên đều tồn tại ưu, nhược điểm, yêu cầu nguồn input dữ liệu và các tình huống sử dụng khác nhau. Ví dụ CF dựa vào tương tác của cộng đồng, không gợi ý tốt đới với những người dùng hay item mới. Trong khi CB phân tích đặc tính của items, có thể gợi ý cho các item mới nhưng dễ gây nhàm chán ….
Các hệ thống khuyến nghị trong thực tế thường kết hợp, tận dụng sức mạnh của các giải thuật khác nhau để tăng khả năng gợi ý chính xác hơn. Mô hình tổng hợp này thường được gọi là ensemble-based recommender system.
Song Song Suggestion cho Zing MP3
Hệ thống Suggestion đang được sử dụng cho Zing MP3 là một hybrid system, kết hợp giữa Collaborative Filtering và Content-Based. Các CF models dựa vào lịch sử nghe để tìm kiếm các bài hát được nghe giống nhau bởi các tập users giống nhau. Trong khi đó, NLP models phân nhóm các bài hát dựa vào các thông tin metadata như title, playlist, ca sĩ, nhạc sĩ, etc.
Việc kết hợp hai nguồn thông tin, hai loại giải thuật khác nhau mang lại nhiều lợi ích:
● Tận dụng được nhiều features khác nhau, tăng tính chính xác.
● Tăng cường độ đa dạng, các bài hát mới vẫn có cơ hội được giới thiệu.
● Cách tổng hợp kết quả của các models được điều chỉnh theo feed-back của users.
Data Flow
Dữ liệu tương tác (log) của người dùng lên Zing Mp3 từ nhiều platforms khác nhau (web lẫn mobile) được tập trung và lưu trữ vào Hadoop (1). Tiếp đó dữ liệu sẽ đi qua hệ thống tiền xử lý (2). Tại đây, dữ liệu được làm sạch, loại bỏ nhiễu, abnormal, cũng như rút trích các đặc tính phù hợp, sau đó đi vào hệ thống learning (3).
Model được sinh ra trong learning sẽ được đánh giá offline đến khi đạt được độ chính xác cần thiết trước khi đưa ra thực tế. Hệ thống đánh giá online sử dụng A/B testing đo lường hành vi của user lên các giải thuật khác nhau, từ đó tinh chỉnh lại giải thuật, hoặc rút trích thêm các đặc tính cho phù hợp hơn.
Data processing
Hệ thống tiền xử lý dữ liệu của ZingMp3 bao gồm Luigi, một framework được phát triển bởi Spotify để quản lý luồng dữ liệu. Luigi được định thời gọi các Spark jobs để rút trích, tổng hợp dữ liệu được lưu trong Hadoop. Dữ liệu được xử lý sẽ đi qua hệ thống mô tả để dễ dàng giám sát.
Một số kết quả
Một số kết quả được hiển thị bên dưới. Các bài hát được giới thiệu có sự liên quan với nhau và giống với bài hát đang được nghe. Các bài hát khá đa dạng. Các danh sách bài hát được gợi ý đang đóng góp 31% lượt nghe các bài hát trên website Zing MP3.
By Zalo R&D team