机器学习笔记 - 构建推荐系统(1)的步骤

一、概述

        推荐系统旨在预测用户可能喜欢什么,尤其是当有很多选择时。他们可以明确地向用户提供这些推荐,或者他们可能会在幕后工作,在不给用户选择的情况下选择要显示的内容。

        无论哪种方式,“为什么”都很清楚:它们对某些类型的企业至关重要,因为它们可以让用户接触到他们可能没有找到的内容,或者让用户参与的时间比他们本来应该的时间更长。虽然构建一个简单的推荐系统可能非常简单,但真正的挑战是真正构建一个有效的系统,让企业从其输出中看到真正的提升和价值。

        推荐系统可以使用多种技术来构建,从简单的(例如,仅基于来自同一用户的其他评分项目)到极其复杂的技术。复杂的推荐系统利用各种不同的数据源(一个挑战是使用非结构化数据,尤其是图像作为输入)和机器学习(包括深度学习)技术。因此,它们非常适合人工智能世界,更具体地说是无监督学习;随着用户继续消费内容并提供更多数据,可以构建这些系统以提供越来越好的推荐。

二、推荐系统的两种类型

        推荐系统有两种主要类型,每种都有不同的子类型。根据目标、受众、平台和您推荐的内容,这些不同的方法可以单独使用,但通常情况下,最好的结果来自于组合使用它们:

1、协同过滤

        它主要根据其他人的输入或操作(而不仅仅是正在为其进行推荐的用户)提出建议。

        这种推荐系统的变体包括:

        按用户相似度:此策略涉及通过比较用户的活动并提供在该组的其他成员中受欢迎的推荐来创建用户组。在具有强大但多才多艺的受众的网站上,快速为信息很少的用户提供推荐非常有用。

        按关联:这 是上面提到的一种特定类型,也称为“查看 X 的用户也查看了 Y”。实施这种类型的推荐系统是查看购买序列或购买组,并显示类似的内容。此策略对于捕获与自然互补内容相关的推荐以及在用户生命中的某个时间点很有用。

2、基于内容

        基于内容的系统根据用户的购买或消费历史做出推荐,并且用户采取的动作(输入)越多,通常会变得越准确。

        更具体类型的基于内容的推荐系统包括:

        按内容相似度:作为基于内容的推荐系统的最基本类型,该策略涉及根据其推荐内容接近的内容。元数据. 这种方法适用于具有大量元数据并且与目录中的产品数量相比流量较低的目录。

        通过潜在因素建模:比内容相似性方法更进一步,该策略的关键是通过假设先前的选择表明某些品味或爱好来推断个人的固有兴趣。以前的策略是基于显式的、手动填充的目录元数据,而这种策略取决于发现隐含的关系。这是通过使用用户较大交互的历史(例如,观看的电影、购买的物品等)来学习这些品味来完成的。

        通过主题建模:这是潜在因素建模策略的一种变体,通过分析非结构化文本以检测感兴趣的特定主题,而不是考虑用户更大的行为,从而推断出兴趣。对于具有丰富但非结构化文本信息(例如新闻文章)的用例来说,这一点特别有趣。

        通过热门内容推广:这涉及根据产品的内在特征突出产品推荐,这些特征可能会让广大受众感兴趣:价格、功能、受欢迎程度等。此策略还可以考虑内容的新鲜度或年龄,因此启用使用最流行的内容进行推荐。这通常用于新内容占多数的情况。

三、构建推荐系统的 6 个步骤

        如果您遵循从原始数据发展到预测的基本步骤,那么构建一个成功且强大的推荐系统可能相对简单。话虽如此,当涉及到经常被忽视的推荐系统时,需要考虑一些特殊性,并且对于最有效的过程和最佳预测,值得引入(或重申)。

        本节将介绍在构建推荐系统的背景下完成数据项目的六个基本步骤。

1、了解业务

        非常简单和关键但经常被忽视,构建推荐系统的第一步是定义项目的目标和参数。这肯定会涉及数据团队和业务团队(可能是产品经理、运营团队,甚至是合作伙伴或广告团队,具体取决于您的产品)之间的讨论和输入。

        以下是一些需要考虑的特定主题,以更深入地了解业务需求并启动这些团队之间的讨论:

        项目的最终目标是什么?构建推荐系统的想法是否可以直接增加销售额/实现更高的平均购物篮大小/减少浏览时间并加快购买速度/减少未消费内容的长尾/提高用户对产品的参与时间?

        推荐真的有必要吗?这也许是一个显而易见的问题,但由于它们的构建和维护成本很高,因此值得一问。企业能否通过一组静态内容(如员工/编辑精选或最受欢迎的内容)来推动发现,从而实现其最终目标?

        什么时候会出现推荐?如果推荐在多个地方都有意义(即,在首次访问应用程序或网站以及购买或消费内容之后的主屏幕上),是否会在两个地方使用相同的系统,或者每个地方的参数和需求是否不同?

        有哪些数据可以作为推荐的依据?在推荐时,大约有多少百分比的用户登录(在这种情况下可能会有更多可用数据)与匿名用户(这可能会使构建推荐系统的事情变得复杂)?

        是否有必须首先进行的产品更改?如果团队想要使用更强大的数据构建推荐系统,是否必须首先进行产品更改以更早地识别用户(即邀请他们更早登录),如果是,从业务角度来看,这些更改是否合理?

        是否应该平等对待所有内容或产品?也就是说,除了自然推荐之外,业务团队是否想要(或必须)推广特定的产品或内容?

        如何细分品味相似的用户?换句话说,如果使用基于用户相似度的模型,你将如何决定是什么让用户相似?

2、获取数据

        最好的推荐系统使用 TB 的数据。因此,在汇总用于推荐系统的数据时,一般来说,越多越好。如果在您尝试为他们推荐时用户是未知的,这可能会很困难——即,他们没有登录,或者更具挑战性的是,他们是全新的。如果您的企业大多数用户未知,您可能需要依赖外部数据源或与偏好没有明确关联的一般数据,如人口统计、浏览历史等。

        当涉及到用户偏好时,有两种反馈:显式和隐式。

        明确的用户反馈是任何需要用户努力的事情,例如留下评论/评级或发起投诉或产品退货(通常来自客户关系管理、CRM、数据)。

        相比之下,隐式用户反馈是可以收集的关于用户偏好的信息,而无需他们实际指定这些偏好。例如,过去的购买历史、查看某些优惠、产品或内容所花费的时间、来自社交网络的数据等。

        好的推荐系统通常会结合使用这些类型的反馈,因为每种反馈都有优点和缺点。 

        明确的反馈可以非常清楚:用户已经逐字陈述了他们的偏好、喜欢或不喜欢。但出于同样的原因,它本质上是有偏见的。用户不知道他不知道什么(换句话说,他可能喜欢某事但从未尝试过,因此不会将其列为偏好或正常与该类型的项目或内容进行交互)。

        相比之下,隐式反馈则相反——它可以揭示用户没有——或不会——否则,在个人资料中承认的偏好(或者他们的个人资料信息可能是陈旧的)。另一方面,隐式反馈可能更难以解释。仅仅因为用户花时间在给定的项目上并不意味着他喜欢它,所以最好依靠隐式信号的组合来确定偏好。

3、探索、清理和扩充数据

        特别是在为推荐系统探索和清理数据时要考虑的一件事是改变用户的品味。根据您推荐的内容,较早的评论、操作等可能不是推荐的最相关依据。考虑只查看更有可能代表用户当前口味的特征,并删除可能不再相关的旧数据,或添加权重因子以与旧操作相比更重视最近的操作。

        推荐系统的数据集可能很难使用,因为它们通常是高维的,但与此同时,许多特征没有任何值也很常见,这可能使聚类和异常值检测变得困难。

4、预测排名

        鉴于前面步骤中完成的工作,您可能已经构建了一个推荐系统,只需按用户对这些分数进行排名,您就可以推荐产品。该策略不使用机器学习或预测元素,但这完全没问题。对于某些用例,这已经足够了。

        但是,如果您确实想构建更复杂的东西,在用户消费推荐的内容后可以完成许多子任务,这些内容可用于进一步完善系统。有几种方法可以利用混合方法来尝试获得最高质量的建议:

        并排展示来自不同类型系统的建议。

        并行维护多个算法,其中决定哪个算法优于另一个算法本身取决于机器学习。

        使用纯机器学习方法来组合多个推荐系统(逻辑回归或其他加权回归方法)。一个具体的例子是使用不同技术的两个(或更多)推荐的加权平均值。

        也有可能不同的模型在产品或网站的不同部分会更好地工作。例如,用户尚未采取行动的主页与用户以某种方式单击或消费内容之后的主页。

5、可视化数据

        在推荐系统的上下文中,可视化有两个主要目的:

        当仍处于探索阶段时,可视化可以帮助揭示有关数据集的信息或提供有关模型性能的反馈,否则这些信息很难看到。

        将推荐系统部署到位后,可视化可以帮助向业务或产品团队传达​​有用的信息(例如,哪些内容做得很好但未被发现,用户口味之间的相似性,共同消费的内容或产品等)这样他们就可以根据这些信息做出改变或做出决定。

        可视化此类数据的主要问题是存在的数据量,这使得以有意义的方式消除噪音变得困难。但出于同样的原因,良好的可视化将有助于理解大量数据,否则很难从中获得有意义的见解。

6、迭代和部署模型

        在开发环境或沙箱中工作的推荐系统没有任何好处。这一切都是为了将​​系统投入生产,这样您就可以开始看到对您一开始制定的业务目标的影响。

        此外,请记住,您拥有的用于为推荐系统提供信息的数据越多,它就会变得越好。因此,这种类型的数据项目可能比其他项目更重要,评估性能并继续微调至关重要,例如添加新数据源以查看它们是否具有积极影响。

         事实上,通过定期监控其性能来确保您的推荐系统能够适应和发展是该过程中最重要的部分之一——如果推荐系统随着时间的推移未能正确适应口味或新数据,可能无济于事即使系统一开始表现良好,您最终也会实现最初的项目目标。建立一个反馈循环来了解用户是否关心推荐将是有帮助的,并为未来的改进和决策提供了一个很好的指标。

        如果建议是您业务的核心,那么不断尝试新事物并改进您创建的初始模型将是一项持续的任务;推荐系统不是您可以创建和抛弃的东西。

四、面临的挑战

        创建一个可以根据您拥有的数据量进行扩展的推荐系统非常重要。如果它是为有限的数据集构建的并且该数据集增长,则计算成本呈指数增长,并且系统将无法处理大量数据。为避免以后必须重建推荐系统,您必须确保从一开始就将其构建为可扩展到预期的数据量。

        也有可能在花费时间、精力和资源构建推荐系统之后(甚至在拥有足够的数据和良好的初始结果之后),推荐系统只会给出非常明显的推荐。避免这个陷阱的关键实际上可以追溯到七个步骤中的第一步:了解业务需求。如果没有足够的内容长尾或不需要系统,那么您可能需要重新考虑是否需要首先构建推荐系统。

        最后,人们的品味不会随着时间的推移而保持不变,如果没有构建一个推荐系统来考虑这个事实,它可能永远不会像它应该的那样准确。同样,构建推荐系统也存在随着时间的推移不会变得更好的风险。随着用户继续消费内容和更多可用数据,您的推荐系统应该更多地了解用户并适应他们的口味。一个不够灵活而无法继续适应的推荐系统可能很快就会过时并且无法达到其目的。

五、未来的趋势

        基本推荐系统已经存在了很长一段时间,尽管它们继续变得更加复杂,并且已经被零售和内容巨头完善。但接下来是什么?如果企业正在寻求开发一个真正尖端的系统,他们应该考虑哪些最新趋势和发展?

        上下文感知推荐系统代表了一个新兴的实验和研究领域,旨在根据用户在特定时刻的上下文提供更精确的内容。例如,用户是在家还是在旅途中?使用更大或更小的屏幕?是早上还是晚上?鉴于特定用户的可用数据,上下文感知系统可能能够提供用户在这些场景中更有可能接受的建议。

        世界上一些最大和最强大的推荐系统(如 YouTube 和 Spotify)已经在使用深度学习。但随着数据量持续飙升,越来越多的企业发现自己面临着庞大的内容语料库并难以扩展,深度学习将成为不仅推荐系统而且所有学习问题的事实上的方法。

        解决冷启动问题也是前沿研究人员开始关注的问题,以便可以为数据很少的项目提出建议。对于内容周转量很大的企业来说,这是一个至关重要的领域,以便他们能够成功地推销畅销的商品(甚至在他们知道该商品的表现之前)。

六、总结

        推荐系统可以成为让用户接触到他们可能没有找到的内容的有效方式,这反过来又可以实现更大的业务目标,例如增加销售额、广告收入或用户参与度。但是有几个关键点可以让推荐系统取得成功。也就是说,推荐系统首先应该是必要的。

        构建一个需要经验丰富的员工和持续维护的复杂系统,而更简单的解决方案就可以做到,这会浪费数据团队资源,而这些资源可以用于其他地方以获得更大的影响。挑战在于构建一个真正会对业务产生影响的系统。建立系统本身不应该是最终目标。

        推荐系统也应该是敏捷的。也就是说,适应性强,能够像用户一样进化。将推荐系统投入生产并不是整个过程的最后一步。相反,这是一个持续的演变,看看哪些有效,哪些无效,考虑可能有助于提出更好建议的其他数据源等。

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/125715245