Giter VIP home page Giter VIP logo

datawhalechina / fun-rec Goto Github PK

View Code? Open in Web Editor NEW
3.5K 33.0 728.0 103.83 MB

推荐系统入门教程,在线阅读地址:https://datawhalechina.github.io/fun-rec/

License: Other

Python 11.06% Shell 0.05% Vue 2.90% Less 0.01% CSS 0.73% JavaScript 0.89% HTML 0.05% Jupyter Notebook 82.58% TypeScript 1.46% SCSS 0.28%
recommender-system tensorflow tianchi-competition deep-learning algorithm-engineering interview-questions recommendation-algorithms machine-learning

fun-rec's Introduction

本教程主要是针对具有机器学习基础并想找推荐算法岗位的同学。教程内容由推荐系统概述、推荐算法基础、推荐系统实战和推荐系统面经四个部分组成。本教程对于入门推荐算法的同学来说,可以从推荐算法的基础到实战再到面试,形成一个闭环。每个部分的详细内容如下:

  • 推荐系统概述。 这部分内容会从推荐系统的意义及应用,到架构及相关的技术栈做一个概述性的总结,目的是为了让初学者更加了解推荐系统。
  • 推荐系统算法基础。 这部分会介绍推荐系统中对于算法工程师来说基础并且重要的相关算法,如经典的召回、排序算法。随着项目的迭代,后续还会不断的总结其他的关键算法和技术,如重排、冷启动等。
  • 推荐系统实战。 这部分内容包含推荐系统竞赛实战和新闻推荐系统的实践。其中推荐系统竞赛实战是结合阿里天池上的新闻推荐入门赛做的相关内容。新闻推荐系统实践是实现一个具有前后端交互及整个推荐链路的项目,该项目是一个新闻推荐系统的demo没有实际的商业化价值。
  • 推荐系统算法面经。 这里会将推荐算法工程师面试过程中常考的一些基础知识、热门技术等面经进行整理,方便同学在有了一定推荐算法基础之后去面试,因为对于初学者来说只有在公司实习学到的东西才是最有价值的。

特别说明:项目内容是由一群热爱分享的同学一起花时间整理而成,大家的水平都非常有限,内容难免存在一些错误和问题,如果学习者发现问题,也欢迎及时反馈,避免让后学者踩坑! 如果对该项目有改进或者优化的建议,还希望通过下面的二维码找到项目负责人或者在交流社区中提出,我们会参考大家的意见进一步对该项目进行修改和调整!如果想对该项目做一些贡献,也可以通过上述同样的方法找到我们!

为了方便学习和交流,我们建立了FunRec学习社区(微信群+知识星球),微信群方便大家平时日常交流和讨论,知识星球方便沉淀内容。由于我们的内容面向的人群主要是学生,所以知识星球永久免费,感兴趣的可以加入星球讨论(加入星球的同学先看置定的必读帖)!FunRec学习社区内部会不定期分享(FunRec社区中爱分享的同学)技术总结、个人管理等内容,跟技术相关的分享内容都放在了B站上面。由于微信群的二维码只有7天内有效,所以直接加下面这个微信,备注:Fun-Rec,会被拉到Fun-Rec交流群,如果觉得微信群比较吵建议直接加知识星球!。

image-20220408193745249

注意:不建议直接在github上面阅读(公式图片容易解析错误),推荐点击上面的在线阅读或者离线下载下来之后使用markdown工具(如typora)查看!

内容导航

推荐系统概述

推荐系统算法基础

经典召回模型

经典排序模型

推荐系统实战

竞赛实践(天池入门赛-新闻推荐【建议使用tf1.14】)

新闻推荐系统实践

推荐系统算法面经

备注

2.1 竞赛实践(天池入门赛-新闻推荐)

image-20211213165802957 image-20211213165847593

2.2 新闻推荐系统实践前端展示和后端逻辑(项目没有任何商用价值仅供入门者学习)

image-20211205142026937 Fun-Rec新闻推荐系统

致谢

核心贡献者

  • 罗如意-项目负责人(Datawhale成员-西安电子科技大学-算法工程师)
  • 何世福-项目发起者(Datawhale成员-大连理工大学-算法工程师)
  • 吴忠强(Datawhale成员-东北大学-算法工程师-CSDN博客专家)
  • 赖敏材(Datawhale成员-上海科技大学-算法工程师)
  • 汪志鸿(Datawhale成员-东北大学-算法工程师)
  • 王辰玥(Datawhale意向成员-**地质大学(武汉)-在校生)

重要贡献者(根据内容+社区贡献程度筛选)

  • 唐鑫(Datawhale意向成员-西安电子科技大学-在校生)
  • 王宇宸(Datawhale意向成员-上海科技大学-在校生)

其他

感谢徐何军,李万业,陈琰钰,陈锴,梁家晖,王贺,宁彦吉,田雨,宋禹成,刘雯静,吕豪杰,张汉隆,吴丹飞,王云川,肖桐,管柯琴,陈雨龙,宋禹成等在最早期的时候对fun-rec所做的贡献!

关注我们

扫描下方二维码关注公众号:Datawhale

LICENSE

知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

fun-rec's People

Contributors

chungkingexpress avatar evan-wyl avatar gh1995 avatar hilbert-yaa avatar kenken-xr avatar lsgomyp avatar luzixiao avatar lyons-t avatar maxxbaba avatar morningsky avatar pearfl avatar ruyiluo avatar storyandwine avatar swallown1 avatar syc1123 avatar wangych6 avatar zhongqiangwu960812 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fun-rec's Issues

数据下载

请问天池的该比赛结束之后,还有别的途径下载数据吗

训练代码的输入有问题?

将输入数据转化成字典的形式输入

train_model_input = {name: data[name] for name in dense_features + sparse_features}
# 模型训练
history.fit(train_model_input, train_data['label'].values,
        batch_size=64, epochs=5, validation_split=0.2, )  

这里的 data 应该是处理好的 train_data吧?

公式错误

在面试题部分,逻辑回归推导有一步错误表示

req.txt

有pip freeze >> req.txt文件吗

1.3.1 AFM.md 的2.3里损失函数错了

$$ L = \sum_{x\in T} (\hat{y}{afm}(x) - y(x))^2 + \lambda ||x||^2 $$,后面那个不是对x正则,是W。应该是 $$ L = \sum{x\in T} (\hat{y}_{afm}(x) - y(x))^2 + \lambda ||W||^2 $$

1.1.3节 矩阵分解中代码有误

以下代码完成了对self.mu的初始化

cnt = 0  # 统计总的打分数,初始化mu用
for user, items in self.rating_data.items():
    self.P[user] = [random.random() / math.sqrt(self.F)
                    for x in range(0, self.F)]
    self.bu[user] = 0
    cnt += len(items)
    for item, rating in items.items():
        # insert self.mu += rating
        if item not in self.Q:
            self.Q[item] = [random.random() / math.sqrt(self.F)
                            for x in range(0, self.F)]
            self.bi[item] = 0
self.mu /= cnt

此时的self.mu为0,那么执行self.mu /= cnt后的结果仍然是0,所以应该在第8行加入self.mu += rating,把self.mu变成分数之和。

求修正一下格式

作者大大,您好!项目中很多地方的公式都已经显示不出来了,求修正一下,谢谢!

Youbute dnn的一个疑问

image
这里提到可以增加item的特征, 但是我在使用时出现报错 "Now YoutubeNN only support 1 item feature like item_id", 使用的版本是deepmatch(0.3.1), deepctr(0.9.3)
另一个问题是example_age的使用, 我理解这是一个item 的特征, 那么我是不是可以将其他的特征封装到user_feature_columns里面呢

无数bug,慎入

无数bug,慎入!!!
无数bug,慎入!!!
无数bug,慎入!!!

ItemCF 编程实现的错误

复制了 ItemCF 的代码,运行出现了以下错误:
屏幕截图 2024-02-26 102257

看了代码发现是 target_user 有问题,这里 Alice 前后有空格,导致读不到正常的 user
屏幕截图 2024-02-26 102403

请问概率计算函数是怎么定义的呢

在 DSSM 模型的实战代码中,负样本采样时使用了一个概率计算函数cal_pos,但是在上下文中好像没有定义和导入的操作,想问一下这个函数具体是怎么定义的呢?
image

余弦相似度公式错误

余弦相似度 余弦相似度衡量了两个向量的夹角,夹角越小越相似。首先从集合的角度描述余弦相似度,相比于Jaccard公式来说就是分母有差异,不是两个用户交互商品的并集的数量,而是两个用户分别交互的商品数量的乘积,公式如下:
$sim_{uv}=\frac{|N(u)| \cap |N(v)|}{\sqrt{|N(u)|\cdot|N(v)|}}$
这个公式有误,应该修改为:
$sim_{uv}=\frac{|N(u) \cap N(v)|}{\sqrt{|N(u)| \cdot|N(v)|}}$

请问这个package是什么?

codes/news_recsys/news_rec_server/recprocess/recall/u2i_usercf.ipynb notebook里有这个依赖:

from metric import PrintMetric

但是我找不到正确的metric包,我用pip install metric安装的metric包里没有PrintMetric

请问这个包在哪里下载?

谢谢啦

4.1 ML与DL基础

bagging与boosting分别从什么角度降低过拟合? bagging降低方差,boosting降低方差
bagging降低variance。boosting降低bias来提升预测精度。

【资料自荐】fun-rec项目或许可以加入如下repo

同学你好,很高兴能够看到这个开源项目能够帮助大家入门推荐系统。
在此,希望自荐我的个人开源项目:https://github.com/Doragd/Algorithm-Practice-in-Industry
询问是否能够加入到fun-rec项目中

【为什么想加入】:推荐系统是一个非常偏工业界实践的领域,除开基础知识和代码实践外,我觉得非常有用的资料是各个大厂的技术分享文章以及搜广推顶会上的文章。因此,我认为我的项目或许能够帮助fun-rec完善这一部分。
【我的项目是什么】:我的项目收集了:

  • 知乎上的关于搜广推算法系列串讲/经典问题
  • 各个大厂的搜广推实践分享,大概有400多篇吧(2017-2023)
  • 搜广推顶会列表以及翻译:2012-2023,涵盖了sigir/www/recsys/kdd/cikm/wsdm等

希望同学可以不吝赐教我的项目:https://github.com/Doragd/Algorithm-Practice-in-Industry
希望以一种合适的方式能够加入fun-rec中,为这个项目添砖加瓦。

此致,
Gordon Lee

fun-rec V1.0 TODO

项目最新版内容

初版内容地址:https://datawhalechina.github.io/fun-rec/#/

以上述目录为准,将之前已完成的内容全部都重新检查优化一遍,未完成的内容都补充完整,预计4月底完成初版所有内容。优化完的内容会逐步的更新到新版目录中。

所有代码重新以给定的包版本,规范的数据集、以一种容易理解的pipline全部重新写一遍。

当前未完成内容有:

  • 推荐系统的意义【完成】
  • 推荐系统的应用【完成】
  • 推荐系统的架构【完成】
  • 推荐系统技术栈【完成】
  • Swing(Graph-based)【完成】
  • FM召回【完成一半,待优化】
  • word2vec原理【完成】
  • Airbnb召回【未完成】
  • 经典双塔【未完成】
  • Youtube双塔【完成一半,待优化】
  • PinSAGE【完成】
  • TDM【完成】
  • xDeepFM【完成】
  • DISN【完成】

当前完成一半待优化的内容:

  • YoutubeDNN召回【完成】
  • EGES【完成】
  • SDM【完成】
  • AutoInt【完成】
  • FiBiNET【完成】
  • DIEN【完成】
  • 规则类召回【完成一半,待优化】
  • 打散策略【完成一半,待优化】
  • 任务监控与调度【完成一半,待优化】

其余所有内容初版基本完成都需要进行优化

内容优化后提交注意事项

  1. 所有内容提交直接在github上进行PR
  2. 对于优化内容的同学,应该先找到老版本中是否已经有沉淀好的文档或者代码,对已经存在的内容进行优化(有些不在上面的,可能是有人在做了),优化内容不需要重新创建新文档,直接在原文档的基础上进行优化即可
  3. 优化内容主要包括,检查文档内容是否存在错误,存在错误需要及时修改;对于内容描述不全的内容,需要通过查阅相关资料对器进行补充
  4. 对于想参与内容优化的同学,可以联系 Fun-Rec 群主,分配目前还没有被其他同学选择优化的内容,未加群的可以先加下面的微信,恢复Fun-Rec

基于新闻推荐 特征工程

特征工程中只有基于召回结果构建的监督数据集label都为0,没有找到构建label为1的日志数据的这部分代码,是省略了吗?

可以上传pdf文件吗?

md文件中较多图片无法加载,一些公式并没有如预想的显示,是否可以上传pdf版本?非常感谢!

关于协同过滤中计算最终得分的问题

例如基于物品的协同过滤中,通过相似的k个物品计算用户对这个物品的分数,但是如果用户对于对于相似物品的评分也是nan的时候,是作为0处理吗?还有在完整实现代码这种,为什么计算分数就仅仅只是相似度的一个求和,而没有使用说的加权以及减去平均的这种做法呢?

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.