Code Monkey home page Code Monkey logo

basics-of-recsys's Introduction

Basics of Recsys

Coggle 30 Days of ML(22年4月)

任务介绍

在本次学习中我们将学习推荐系统的基础操作,包括协同过滤、矩阵分解和向量召回等基础内容。

  • 任务1:推荐系统基础
  • 任务2:Movienles介绍
    • 下载并读取Movielens 1M数据集(用户、电影、评分)
    • 统计如下指标:
      • 总共包含多少用户?
      • 总共包含多个电影?
      • 平均每个用户对多少个用户进行了评分?
      • 每部电影 & 每个用户的平均评分是?
    • 如果你来进行划分数据集为训练和验证,你会如何划分?
  • 任务3:协同过滤基础
  • 任务4:协同过滤进阶
    • 编写User-CF代码,通过用户相似度得到电影推荐
    • 编写Item-CF代码,通过物品相似度得到电影推荐
    • 进阶:如果不使用矩阵乘法,你能使用倒排索引实现上述计算吗?
  • 任务5:矩阵分解SVD
  • 任务6:Slope One
    • 阅读Slope One基础原理
    • 编写Slope One用于电影推荐的流程
    • 比较Slope One、SVD、协同过滤的精度,哪一个模型的RMSE评分更低?
  • 任务7:词向量基础
    • 学习word2vec基础
    • 将用户历史观看电影转为列表数据(一个用户一个列表)
    • 使用gensim训练word2vec,然后对用户完成聚类
  • 任务8:向量召回基础
    • 基于任务7的基础上,使用编码后的用户向量,计算用户相似度。
    • 参考User-CF的过程,通过用户相似度得到电影推荐
  • 任务9:多路召回实践
    • 基于任务3、任务5、任务6、任务7、任务8,总共5个召回模型,进行多路召回。
    • 可以考虑对每个召回模型的物品打分进行相加,也可以加权求和。
    • 分别计算每个模型 & 多路召回模型的Top10、Top20、Top50的命中率。

学习资料

https://github.com/datawhalechina/fun-rec

总结

关注到这个打卡活动时已经4月22日,比较晚了,为了在四月完成打卡,整体上做得比较匆忙。中间有很多问题还没有解决,在此罗列出来:

  1. 任务4,协同过滤进阶中,ItemCF 和 UserCF 用 5 分制评分计算皮尔逊相似度时会出现 nan ,直接把 nan 置为 0 了(0 表示不相关);维度为 1 的向量(标量)无法计算皮尔逊相似度,直接置为 1 。可能不合理。另外 5 分制的算法跑完结果都很差,可能有bug。
  2. 任务5,用 pytorch 实现了 MF,没有负采样时效果很差,加入负采样以后效果有提示,但还没有仔细调参,实验结果一般般。在task5/MF_pytorch.py 实现的是 5 分制下的推荐,最后在任务9 里用的是 0-1 评分制下的推荐,还没整合。
  3. 任务6,SlopeOne 5 分制的推荐效果很差(可能有bug),0-1评分制没有意义。
  4. 任务9,因为各模型在 5 分制评分下效果都不好,所以最后用了各模型的 0-1 评分版本。又因为用的是 0-1 评分制,所以 SlopeOne 算法没有参与最后的多路召回。
  5. 代码注释和博文里很多词混用:"用户/user"、"评分过/交互过/看过/购买过/点击过''、"物品/商品/电影/item","MF/SVD","向量/embedding"。

有空再解决这些问题,最近好忙啊~~

basics-of-recsys's People

Contributors

guadzilla avatar

Stargazers

GoAl avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.