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.
đây là ngôn ngữ python, hệ thống em trên nền tảng ngôn ngữ C# thì sau anh ,anh có demo hay link nào viết bằng C# không anh ? cảm ơn anh
ThíchThích
Em có thể search thấy trên internet:
https://www.nrecosite.com/recommender_net.aspx
https://www.codeproject.com/Articles/620717/Building-A-Recommendation-Engine-Machine-Learning
ThíchĐã thích bởi 1 người
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íchThích
Đúng rồi e. Vì ta không thể lập trình cách quản lý master/slave hiệu quả nên mới nhờ đến Spark/Hadoop để làm thay việc đó.
ThíchThích
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Đã thích bởi 1 người
PySpark vẫn ok em. Trừ khi đụng đến GraphX thì thư viện này chỉ tồn tại ở Scala.
ThíchThích
Em cảm ơn anh nhiều ah
ThíchThích
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íchThích
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
ThíchThích
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íchThích
Em có thể tham khảo course này
https://www.coursera.org/specializations/recommender-systems
ThíchThích
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íchThích
Theo mình biết thì bạn có thể dùng phương pháp Train Test Split có trong Sklearn
ThíchThích
Ko biết em có thể dùng Mean Squared Error được không anh ongxuanhong nhỉ?
ThíchThích
được em.
ThíchThích
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Đã thích bởi 1 người