Hệ thống recommend bài nhạc

iTunes

Một trong những công nghệ giúp cho đời sống con người ngày càng dễ dàng hơn đó là recommender system. Recommender system giúp kết nối người dùng với sản phẩm mà họ tìm kiếm được thuận tiện và nhanh chóng hơn từ đó mang lại lợi thế cạnh tranh của sản phẩm so với các đối thủ khác. Bạn có thể bắt gặp hệ thống này ở các trang xem phim, nghe nhạc, mua bán, mạng xã hội, … Về cơ bản, bạn có thể áp dụng ngay kỹ thuật này vào hệ thống của bạn thông qua các hướng tiếp cận như: Popularity – liệt kê top các sản phẩm được nhiều người quan tâm nhất, Classification – dựa vào các chủ đề mà bạn cung cấp để lọc ra danh sách sản phẩm tương ứng. Tuy nhiên, các hướng tiếp cận này đều mang tính đại chúng, không nhắm vào một cá nhân cụ thể nào. Hơn nữa, không ai dễ dàng cung cấp thông tin cá nhân cho ứng dụng của bạn để có thể lọc thông tin phù hợp.

Do đó, trong bài viết này, tôi sẽ đi theo hướng tiếp cận Collaborative Filtering với hai phương pháp gồm Memory-Based Collaborative Filtering và Model-Based Collaborative filtering giúp trả lời hai câu hỏi “user nghe bài nhạc này thì sẽ có xu hướng nghe các bài như…” và “user có gu âm nhạc như bạn thì sẽ có xu hướng nghe các bài nhạc như…”. Trong đó, Model-Based sẽ sử dụng singular value decomposition (SVD) và Memory-Based sử dụng khoảng cách cosine để mô hình hóa hệ thống. Bạn có thể download dữ liệu từ đây Million Song Dataset Challenge.

Notebooks: song_recommender.ipynb
Source code:
Github.

16 thoughts on “Hệ thống recommend bài nhạc

  1. anh cho em hỏi là khi mình muốn scale hệ thống hay dữ liệu về bài hát, user trở nên lớn hơn và cần hợp sức của nhiều máy để chạy. Vậy thì làm sao để code python của mình chạy trên cluster được ah ?
    hay mình phải viết bằng ngôn ngữ khác như Scala on Spark ah?

    Số lượt thích

      1. Vậy nếu vẫn dùng python nhưng dùng với thư viện pyspark, vậy thì chương trình liệu có chạy được trên máy master/slave không ạ?
        Hiện tại em đang muốn xây dựng một app gợi ý nhạc cho người dùng dựa vào user profile (user rating, time listening, from socia) và dựa vào ngữ cảnh (đang đi bộ, đang chạy, đang lái xe, đang ở nhà,…)
        Em đang phân vân giữa chọn Python và Scala để lập trình.
        Anh có thể tư vấn giúp em được ko ah ? Dùng cái nào thì khi mình muốn scale hệ thống hay muốn tăng tốc độ xử lý thì hợp lý hơn ah?

        Liked by 1 person

  2. dạ anh có thể có em một ý tưởng về một hệ thống music recomend engine có thể khuyến nghị loại nhạc phù hợp với cảm xúc của người nghe. ví dụ như là em đang buồn, và mở bài hát “Nét Buồn” của Uyên Linh để nghe. Sau khi nghe xong bài này , hệ thống Youtube tự động chuyển sang bài “Ngẫu Hứng Sông Hồng” cũng do Uyen Linh hát. Tuy việc khuyến nghị này là hợp lý, song nó không đúng với cảm xúc của em ( vì em đang buồn và muốn nghe nhạc buồn). dạ anh có thể cho em một ý tưởng để fix lỗi này được không ạ! em xin chân thành cảm ơn anh!

    Số lượt thích

    1. a nghĩ đầu tiên mỗi bài nhạc cần phân loại rõ thuộc loại cảm xúc nào, sau khi đã phân tích ma trận user-item thành các ma trận thành phần bằng SVD. e có thể nhân thêm ma trận trọng số sao cho độ ưu tiên cho thuộc tính cảm xúc sẽ mạng giá trị cao hơn.
      http://machine-learning-class-notes.readthedocs.io/en/latest/lecture17.html

      Số lượt thích

  3. Hi anh,
    Trong bài dữ liệu đã được chia thành phần train and test. Tuy nhiên, làm thế nào để chia dữ liệu thành Train and Test? Mình dựa vào cơ sở nào để có thể làm dữ liệu đó dc?.
    Thực tế em muốn làm hệ khuyến nghị các sản phẩm tương tự gợi ý nhau.nhưng em ko biết phải xây dựng dữ liệu sau cho hợp lí và thực hiện được. mong anh giúp đỡ

    Số lượt thích

    1. hi em, trong bài viết này, ta đánh giá dựa trên dữ liệu offline là ratting score. Thực tế, ta cần evaluate online dựa vào metrics khác ngoài RMSE nêu trên. Về splitting train test là để mô hình học được phải generalize được các mẫu dữ liệu mới tránh bị overfitting. Em có thể chia theo tỉ lệ 80/20, 70/30, 10-fold cross validation (đối với dữ liệu nhỏ) hoặc 60/20/20 (train/validation/test).
      Em có thể tham khảo các bài viết sau:
      http://www.bgu.ac.il/~shanigu/Publications/EvaluationMetrics.17.pdf
      http://jmlr.csail.mit.edu/papers/volume10/gunawardana09a/gunawardana09a.pdf

      Liked by 1 person

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

w

Connecting to %s