一不小心就被推荐了
推荐系统现在在各种网站和应用中可谓是大行其道,从令人类泪目的网易云音乐推荐,到淘宝搜索后满目的相关推送,再到今日头条上点击了一条重口味新闻然后满屏的都是相关讯息。
各个网站使用的推荐算法或许各有不同,但是其归根结底都属于几个大类的推荐系统。下面,小州就简单介绍一下4种常用的推荐系统。日后可能会有推荐系统的实战文章,便于大家理解。
协同过滤推荐系统
协作过滤是推荐引擎的基本形式。在这种类型的推荐引擎中,通过用户的偏好协同完成大量替代项目的筛选项目。
协同过滤推荐系统的基本假设是,如果两个用户过去有相同的兴趣,他们将来也会有相似的品味。例如,如果用户A和用户B具有相似的电影偏好,并且用户A最近观看了《妖猫传》(用户B还没有看到),则协同过滤的想法是将《妖猫传》推荐给用户B。
协同过滤推荐系统有两种基本类型:
基于用户的协同过滤:在基于用户的协同过滤中,通过考虑用户邻居的偏好来生成推荐。基于用户的协作过滤分两步完成:
-- 根据类似的用户偏好识别类似的用户;
-- 根据类似用户对未被活跃用户评价的项目给出的评价,将新项目推荐给活跃用户。
基于物品的协同过滤:在基于物品的协同过滤中,推荐是使用物品的邻居生成的。 与基于用户的协作过滤不同,我们首先找到物品之间的相似性,然后推荐与活跃用户过去评分过的项目相似的非评级项目。基于物品的推荐系统分两步构建:
-- 根据物品的偏好计算物品相似度
-- 找到与活跃用户评分最高的物品类似的物品,并向他们推荐
在构建协同过滤推荐系统的同时,我们将了解以下几个方面:
如何计算用户之间的相似度?
如何计算物品之间的相似度?
如何给出推荐建议?
如何处理数据未知的新物品和新用户?
协同过滤系统的优点是它们实现简单,非常准确。 但是,它们有其自身的一些局限性,例如冷启动问题,这意味着协同过滤系统无法向系统中第一次提供信息的用户进行推荐。
基于内容的推荐系统
在协同过滤中,我们只考虑用户和物品偏好来构建推荐系统。 虽然这种方法是准确有效的,但如果我们在构建推荐引擎时考虑用户属性和物品属性,则更有意义。 与协作过滤不同,我们在构建基于内容的推荐引擎时,使用项目属性和用户偏好来指定物品属性。
如同名称所表示的,基于内容的推荐系统使用物品的内容信息来构建推荐模型。 内容推荐系统通常包含:
以生成对活动用户的推荐。 基于内容的推荐系统通过获取物品和用户简历的内容或特征向用户推荐物品。 例如,如果你在淘宝上搜索了小米手机,那么基于内容的推荐系统将会了解你的偏好,并推荐与小米手机和其他与数码产品相关的商品给你。
简单地说,系统建议的物品与用户过去喜欢的物品类似。 根据与其他比较物品相关的特征计算物品的相似度,并与用户的历史偏好相匹配。
在构建基于内容的推荐系统时,我们需要考虑到以下问题:
我们如何选择产品的内容或功能?
我们如何创建类似于产品内容的用户配置文件?
我们如何根据物品的特点创建物品之间的相似性?
我们如何创建和更新用户配置文件?
这种技术不需要考虑用户的邻居偏好。因此,它不需要大量的用户组对项目的偏好,它只考虑用户的过去偏好和项目的属性/特征,以获得更好的推荐准确性。
混合推荐系统
这种类型的推荐引擎通过组合各种推荐系统来构建更强大的系统。 通过结合各种推荐系统,我们可以用另一个系统的优点来代替一个系统的缺点,从而建立一个更强大的系统。 例如,通过将模型在新物品没有评分时失败的协同过滤方法与基于内容的系统(其中关于物品的特征信息可用)相结合,可以更准确和有效地推荐新物品。
例如,如果你经常阅读今日头条的新闻,则其底层推荐引擎会将由与你类似人员阅读的热门新闻文章与你的个人偏好结合起来,并根据你以前的点击信息计算出推荐新闻文章。
在构建混合推荐系统之前,我们应该考虑以下问题:
混合推荐引擎的优点是与单独的推荐技术相比,这种方法将提高推荐的效率。这种方法也向用户提出了一个很好的组合建议,无论是在个人层面还是在邻居层面。
情景感知推荐系统
个性化推荐系统(如基于内容的推荐系统)效率低下,因为他们不能提出有关当前情景的建议。 例如,假设一个妹子非常喜欢吃冰淇淋,再假定这个妹子元旦去了雪乡旅游。
嗯!现在,个性化推荐系统提供最近流行的网红冰淇淋品牌的可能性很大。 但是反问一下自己:在雪乡寒冷的地方向一个人推荐冰淇淋是否正确? 相反,建议一杯热奶茶才是缓缓的更贴心。 这种个性化和情境感知的推荐被称为情境感知推荐系统。 在前面的例子中,地点就是上下文情景。
用户偏好可能随情景而不同,诸如一天中的时间,季节,心情,地点,位置,系统提供的选项等等。 不同地点的人在不同的时间与不同的人可能需要不同的东西。 情景感知推荐系统在计算或服务推荐之前考虑情景因素。这种推荐系统在不同的环境下针对不同的人群不同的需求。
在构建上下文感知模型之前,我们应该考虑以下问题:
最后
上述4种推荐系统都是很常见的推荐系统,基于这些类型,有各种算法进行建模,当然,用Python构建推荐系统也是很方便的。大家可以去了解一下。