推荐系统概述

时间:2022-12-07 14:45:38

博主呢,之前是知乎用户,现在习惯用知乎,所以遇到问题想到的也是老情人啊。总结一下推荐系统的概述,原文来自:https://www.zhihu.com/question/20326697 中一些大佬的优秀答案的总结 一、推荐算法有哪些 (一)非个性化推荐 让全局优秀的内容被大家看到”应该算是非个性化推荐,热门榜单/最多观看这类方法可以简单解决这个问题,很多时候简单粗暴往往也是行之有效的方法,“如果你不知道推荐什么,推荐大家喜欢的准没有错”。
(二)个性化推荐 不同的人对于“好”的理解不一样,换句话说也就是偏好不同,所以推荐新加入的好内容我认为是个性化推荐问题。 个性化推荐的两个主要思想八个字概括之:物以类聚、人以群分。主要的方法及变种应该有很多,像协同过滤、基于内容的推荐、基于标签的推荐等等。国内项亮著有《推荐系统实践》,对于解决推荐问题有比较详细的介绍。 一图胜千言 推荐系统概述推荐系统概述
推荐系统概述
1.基于内容的推荐(主流) 基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题。 冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐。 弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐的新闻和你浏览过的,内容一致; 另外一个弊端则是对于一些多媒体的推荐(比如音乐、电影、图片等)由于很难提内容特征,则很难进行推荐,一种解决方式则是人工给这些Item打标签
2.协同过滤的推荐(主流) 协同过滤算法,原理是用户喜欢那些具有相似兴趣的用户喜欢过的商品,比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法(user-based collaboratIve filtering)。 还有一种是基于Item的协同过滤算法(item-based collaborative filtering),这两种方法都是将用户的所有数据读入到内存中进行运算的,因此成为Memory-based Collaborative Filtering。 另一种则是Model-based collaborative filtering(基于模型的协同),包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等,这种方法训练过程比较长,但是训练完成后,推荐过程比较快。 常见的个性化推荐原理
  • 基于用户基本信息推荐 Demographic-based Recommendation
如:领域、职位、工作年龄、性别、所在地 这个是比较基础的推荐之一,基于用户的基本信息,可以根据他的这些信息给他推荐感兴趣的或者相关的内容。
  • 基于物品/内容基本信息推荐Content-based Recommendation
文章的一些显性属性如:领域、主题、类型、来源 这也是一种基础的推荐,基于被推荐物的基本信息,或者说是被推荐物的显性属性。
  • 协同推荐 Collaborative Filtering
需要通过用户行为来计算出用户或者物品间的相关性 - 基于用户社交关系推荐 有一种说法,一个人的身价等于他最好的5个朋友的身价的平均值。用户与谁交朋友与谁关系好,在一定程度上与他自身的品味和需求是正相关的。 - 基于用户的协同推荐 以人为本,找到和你相似的人后推荐他们看了而你没有看的内容。 推荐系统概述
推荐系统概述
这是一个用户关注内容的列表,当然是非常简化之后的。 显然在这个列表中,小张和小明关注的内容更为相似,那么就可以给小张推荐比特币。 两个步骤:找到和用户兴趣相似的用户集合,找到集合中用户喜欢且目标用户没有听说过的额物品推荐给用户。首先要计算用户相似度。对于冷门物品采取行为更能说明他们的兴趣相似度。如几乎说有人都买过新华字典,但是购买数据导论的人显然兴趣更加相似。 - 基于物品的协同推荐(目前业界使用最多的) 以物为本建立各商品之间的相似度关系矩阵,“用户看了x也会看y”。 推荐系统概述推荐系统概述

小张和小明都不约而同地看了产品经理和Google,这可以说明产品经理和Google有相似,那么之后有看了Google相关内容的用户就可以给推荐产品经理的相关内容。 基于用户和被推荐物推荐不需要特别多的数据,比较适合应用在冷启动阶段 而协同推荐是基于大数据的,所以我前面举的例子都是简化之后的,在实际的操作过程中用户的行为会比前面的例子复杂的多,但是道理都是相通的。 活跃用户对于物品的相似度的贡献要小于不活跃用户,加入一定的惩罚因素
3.基于规则的推荐 发现用户与物品之间的关联关系。协同规律推荐。 对于用户建模:基础数据、第三方数据、产品中操作(点赞、评论)、建立用户兴趣图谱(知识图谱)、标签体系树结构配上权重 对于物品的建模:如歌曲的风格,年份,演唱者。 4.基于知识的推荐算法(主流) 最后一种方法是基于知识的推荐算法,也有人将这种方法归为基于内容的推荐,这种方法比较典型的是构建领域本体,或者是建立一定的规则,进行推荐。 利用某一领域的一整套规则和路线进行推荐。参照可汗学院知识树。如随着阅历增长,程序员看书越来越有专业性,有一定的路线可寻。
5.混合推荐 混合推荐算法,则会融合以上方法,以加权或者串联、并联等方式尽心融合。现在的推荐系统往往不是单一的模型,而是多种方式混合:加权混合、切换混合、分区混合、分层混合。
6.基于人口统计信息的推荐 结合热门榜单可以进一步做个性化推荐,如手机的操作系统,城市位置,常用wifi 还是4G。每一项都有统计意义,性别-关联电视剧表,年龄-关联电视剧表,职业-关联电视剧表,根据权重相互叠加可以推荐列表。人口统计学越多,越能准确的预测用户的兴趣。 7.基于模型的推荐 机器学习的方式训练用户喜好的模型。技术驱动方向。基于一些反馈数据。
二、推荐算法程序架构 推荐系统概述
推荐系统概述推荐系统概述
三、如何判断一个推荐系统做得好不好
  • 获得反馈并一直迭代
与推荐系统的交互有用吗?他们对收到的推荐结果满意吗? 设计评测标准 1.能吸引更多的用户看内容的详情页 2.促使单个用户浏览更多内容 四、推荐系统被接受之后要考虑的问题 1.如何让全局优秀内容被大家看到 这属于热点检测的范围。热点检测可以针对内容在一段时间内获取的浏览、赞、评论、转发等数据来做,同时也要考虑到时间维度。因为有些内容已经热了很长时间,可能会因为马太效应,即放到热门栏目曝光增加,而继续热下去,这不是我们想要的,所以需要加入时间惩罚因子。 2.如何让新加入的“好”的内容被发现 新内容如何被发现?需要建立一个预测模型,通过对内容历史数据,譬如内容历史上每个小时的热度,来预测下一个小时的热度,然后将当前时间的预测热度和真实热度进行对比,使用相对熵计算差距,找到热门趋势。 五、推荐的一些其他大神的连接 推荐算法 我结合58招聘推荐的场景,基于长期的业务实践,写了一篇《分布式离线加实时增量更新的协同过滤算法》,希望能和大家一起学习交流。 阮一峰写过一系列基于用户投票的排名算法的文章。 这是第一篇:http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html 算法网站 这是我收藏的经典算法网站,对题主或许有用 有很多游戏开发相关的算法介绍: http://www.gamedev.net http://theory.stanford.edu/~amitp/GameProgramming http://www.gamasutra.com http://www.sudoku.com 俄罗斯方块游戏的算法网站: http://gforge.inria.fr/projects/mdptetrishttp://colinfahey.com/tetris/tetris.html leetcode,最近很火的算法网站: http://www.leetcode.com Topcoder,也很经典,每周都有竞赛,有奖金的: http://community.topcoder.com/tc 晋中教育网的“信息学竞赛辅导”: http://www.jzsyz.jzedu.cn/xxjs/suanfa/index.html 很多大学也有自己的竞赛题库,比如: 北大: http://poj.org/ 杭电: http://acm.hdu.edu.cn/ 华中科技大学: http://acm.hust.edu.cn/vjudge/toIndex.action