{"id":19271869,"url":"https://github.com/noisywinds/recommend","last_synced_at":"2025-04-21T22:30:40.743Z","repository":{"id":91111359,"uuid":"127859606","full_name":"NoisyWinds/Recommend","owner":"NoisyWinds","description":"Python 3.6 下的推荐算法解析，尽量使用简单的语言剖析原理，相似度度量、协同过滤、矩阵分解等","archived":false,"fork":false,"pushed_at":"2018-06-09T00:41:32.000Z","size":3867,"stargazers_count":105,"open_issues_count":1,"forks_count":36,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T16:12:22.683Z","etag":null,"topics":["analyzing-recommender-systems","collaborative-filtering","distance-measures","svd"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NoisyWinds.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-03T06:10:17.000Z","updated_at":"2025-03-29T16:10:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"944dcd5e-a26e-4215-b395-ff41e8cfff38","html_url":"https://github.com/NoisyWinds/Recommend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoisyWinds%2FRecommend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoisyWinds%2FRecommend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoisyWinds%2FRecommend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoisyWinds%2FRecommend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NoisyWinds","download_url":"https://codeload.github.com/NoisyWinds/Recommend/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250143623,"owners_count":21382050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analyzing-recommender-systems","collaborative-filtering","distance-measures","svd"],"created_at":"2024-11-09T20:34:34.977Z","updated_at":"2025-04-21T22:30:40.733Z","avatar_url":"https://github.com/NoisyWinds.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# analyzing-recommend-system\n## Environment \n- Python 3.6 upper\n- Numpy 1.4 upper\n\n## 2018.05.16 update\n- 矩阵奇异值分解（SVD）\n    - [算法解析](https://github.com/ThomasHuai/Recommend/tree/master/matrix_factorization/svd)\n    - [图片降噪](https://github.com/ThomasHuai/Recommend/tree/master/matrix_factorization/svd/image_denoising)\n    - [Funk-SVD](https://github.com/ThomasHuai/Recommend/blob/master/matrix_factorization/svd/svd.pyx)\n\n\u003e 在推荐系统众多方法中，基于用户的协同过滤推荐算法是最早诞生的，原理也较为简单。该算法1992年提出并用于邮件过滤系统，两年后1994年被 GroupLens 用于新闻过滤。一直到2000年，该算法都是推荐系统领域最著名的算法。\n\n\u003e 俗话说“物以类聚、人以群分”，拿看电影这个例子来说，如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影，另外有个人也都喜欢这些电影，而且他还喜欢《钢铁侠》，则很有可能你也喜欢《钢铁侠》这部电影。\n\n\u003e 所以说，当一个用户 A 需要个性化推荐时，可以先找到和他兴趣相似的用户群体 G，然后把 G 喜欢的、并且 A 没有听说过的物品推荐给 A，这就是基于用户的协同过滤算法。\n\n\u003e 根据上述基本原理，我们可以将基于用户的协同过滤推荐算法拆分为两个步骤：\n\n\u003e 1. 找到与目标用户兴趣相似的用户集合。\n\u003e 2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户。\n\u003e 豆瓣电影是中国最著名的电影sns社区，它允许用户对每部电影进行评价。 \n\n\n\u003e 现在从豆瓣的用户中抽取了500左右个比较活跃的用户，这些用户都是忠实的电影迷，大部分人涉猎了上百部电影。\n\n\u003e 这里有个80多万行的[文本文件](http://www.qlcoder.com/download/train.txt)，文件的每行是三个数字，分别是userid，movieid，rating。代表一个用户对一部电影的评分。rating代表评分的星级，如上图中的红框所示，星级从低到高依次是1-5。\n\n\u003e 接下来有个行数为10001的[文本文件](http://www.qlcoder.com/download/test.txt)（第一行为title），文件的每行为2个数字，分别代表userid和movieid，请你预测如果该用户观看了这部电影，会给该电影打多少分，你的预测值为1个大小为1-5的整数。\n\n\u003e 本题的答案是一个长度为1万的字符串，字符串的第k位代表你对第k行的预测结果。\n\n\u003e 如果你的预测结果和实际答案的差值的绝对值的和小于6000，通过该题。\n\n\u003e 答案提交链接 [qlcoder 千里码](http://www.qlcoder.com/task/7650)\n\n\n## run\n```\npython main.py\n```\n\nyou get answer","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoisywinds%2Frecommend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoisywinds%2Frecommend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoisywinds%2Frecommend/lists"}