https://github.com/noisywinds/recommend
Python 3.6 下的推荐算法解析,尽量使用简单的语言剖析原理,相似度度量、协同过滤、矩阵分解等
https://github.com/noisywinds/recommend
analyzing-recommender-systems collaborative-filtering distance-measures svd
Last synced: 6 months ago
JSON representation
Python 3.6 下的推荐算法解析,尽量使用简单的语言剖析原理,相似度度量、协同过滤、矩阵分解等
- Host: GitHub
- URL: https://github.com/noisywinds/recommend
- Owner: NoisyWinds
- Created: 2018-04-03T06:10:17.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-06-09T00:41:32.000Z (over 7 years ago)
- Last Synced: 2025-04-01T16:12:22.683Z (6 months ago)
- Topics: analyzing-recommender-systems, collaborative-filtering, distance-measures, svd
- Language: Python
- Homepage:
- Size: 3.69 MB
- Stars: 105
- Watchers: 1
- Forks: 36
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# analyzing-recommend-system
## Environment
- Python 3.6 upper
- Numpy 1.4 upper## 2018.05.16 update
- 矩阵奇异值分解(SVD)
- [算法解析](https://github.com/ThomasHuai/Recommend/tree/master/matrix_factorization/svd)
- [图片降噪](https://github.com/ThomasHuai/Recommend/tree/master/matrix_factorization/svd/image_denoising)
- [Funk-SVD](https://github.com/ThomasHuai/Recommend/blob/master/matrix_factorization/svd/svd.pyx)> 在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。
> 俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。
> 所以说,当一个用户 A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体 G,然后把 G 喜欢的、并且 A 没有听说过的物品推荐给 A,这就是基于用户的协同过滤算法。
> 根据上述基本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤:
> 1. 找到与目标用户兴趣相似的用户集合。
> 2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户。
> 豆瓣电影是中国最著名的电影sns社区,它允许用户对每部电影进行评价。> 现在从豆瓣的用户中抽取了500左右个比较活跃的用户,这些用户都是忠实的电影迷,大部分人涉猎了上百部电影。
> 这里有个80多万行的[文本文件](http://www.qlcoder.com/download/train.txt),文件的每行是三个数字,分别是userid,movieid,rating。代表一个用户对一部电影的评分。rating代表评分的星级,如上图中的红框所示,星级从低到高依次是1-5。
> 接下来有个行数为10001的[文本文件](http://www.qlcoder.com/download/test.txt)(第一行为title),文件的每行为2个数字,分别代表userid和movieid,请你预测如果该用户观看了这部电影,会给该电影打多少分,你的预测值为1个大小为1-5的整数。
> 本题的答案是一个长度为1万的字符串,字符串的第k位代表你对第k行的预测结果。
> 如果你的预测结果和实际答案的差值的绝对值的和小于6000,通过该题。
> 答案提交链接 [qlcoder 千里码](http://www.qlcoder.com/task/7650)
## run
```
python main.py
```you get answer