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.

Advertisement

Một suy nghĩ 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?

    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?

        Đã thích bởi 1 người

  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!

    Thích

  3. Chào anh,
    Hiện tại bên em đang chuẩn bị làm 1 project về recommend engine để phân tích khách hàng, từ đó recommend spam. Anh có thể share em vài keyword được không ạ 🙂
    Cám ơn anh 😀

    Thích

  4. 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 đỡ

    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:

      Click to access EvaluationMetrics.17.pdf

      Click to access gunawardana09a.pdf

      Đã thích bởi 1 người

Trả lời

Điền thông tin vào ô dưới đây hoặc nhấn 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 )

Facebook photo

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

Connecting to %s