实用推荐系统:寻找有用的用户行为(代码片段)

博文视点 博文视点     2023-01-30     405

关键词:

大多数关于推荐系统的图书都讲述了算法及其优化方法。这些书都认为你已经有了一个大的数据集来供算法使用。数据集不会像变魔术那样凭空出现。要想收集到正确的用户偏好数据,就需要投入精力和进行思考。它会成就你的系统,或者搞砸你的系统。“垃圾进,垃圾出。”(Garbage in, garbage out.)这句著名的编程箴言对于推荐系统同样适用。

   遗憾的是,适用于某个系统的数据可能不适用于另一个系统。出于这个原因,我们将认真讨论可用的用户行为数据,以及如何在你自己的站点中收集数据。

用户参与度高的网站使其拥有者能够收集到大量相关的数据,而大多数只有一次性访客的网站则需要重点关注内容之间的关系。如果你没有一个拥有大量用户交互的流媒体服务来收集数据,也不要失望,很可能还有很多其他可以收集的东西。

理想情况下,推荐系统收集用户与内容交互时的所有数据,包括测量大脑活动、接触商品时血液中释放的肾上腺素或用户手上出汗的程度。我们的生活连接得越紧密,这种场景听起来就越现实。

在电影《机器人瓦力》(WALL-E)中,人类变成一种没有形状的东西,一生都活在屏幕前的一把椅子上,所有跟他们有关的东西都被输入计算机(想想看,我大部分时间都坐在屏幕前,但至少我会在屏幕之间移动)。由于大多数人除了被连接到推荐系统之外还有其他事要做,因此我们需要降低一些期望值。但是通过网络,我们比任何实体店都更接近用户,所以我们可以了解到更多东西。

内容与提供商的关系

分类法中有一个维度就是目的。目的很重要,因为它可能会产生用来计算推荐的特定策略,以及你想要推荐的内容。

我们拿一部电影来举例子 :如果你在 Netflix 上看了一部糟糕的电影,它会告诉你一些关于 Netflix 上的内容质量的事情,因此你会认为 Netflix 有些方面做得不够好。如果亚马逊出售了一部糟糕电影的蓝光光盘,你可能不会认为这是亚马逊的错,但是如果你在亚马逊上找这部电影却找不到,你就会认为这是亚马逊的错了。

Netflix 的目的是展示你喜欢的好电影。亚马逊向你展示要买的东西,但你是否喜欢它们并不重要。要说亚马逊完全不在意你是否喜欢也不公平,毕竟它在推动用户写评论和给内容打分上投入了大量资源,但为了举例,我们假设它是这样的。

一、捕获访客印象

为了更好地说明消费者 - 商品关系生命周期中发生的事件,我将其分为以下步骤,如下图所示。

1 消费者浏览网站。就像在实体店一样,消费者会四处看看店里有什么,他们没有明确的目标。需要注意的是消费者在哪些地方停留并表现出兴趣。

2 消费者对一种或多种商品感兴趣。这有可能是消费者从一开始就知道他在寻找特定的东西,也可能是偶然间产生的兴趣。

3 消费者将商品添加到购物车或待购清单中。

4 消费者购买商品。

5 消费者消费商品。例如,观看电影或阅读书籍。如果这个商品是一次旅行,那么消费者会踏上旅程。

6 消费者为商品评分。有时候消费者会返回商店 / 网站为商品评分。

7 消费者转售或以其他方式处置商品。商品的使用寿命已经结束,它被处理、删除或转售 ;在这种情况下,商品可能会再次经历相同的循环。

稍后我们将探讨在这些步骤中可以收集到什么。但是请注意,明确的反馈是以评分的方式在第 6 步或之后的步骤中完成的。这已经到了整个过程的后期。因此,如果人们通常谈论的第一件事是商品评分,你应该在这之前准备好数据(比如默认的初始的评分)。

二、可以从浏览者身上学到什么

现在我们来详细解读上图中第 1~3 步中发生的事情。浏览者也就是浏览内容的消费者。他们可能会随机地浏览许多不同的内容,但往往会在相关或感兴趣的内容上停顿。在实体商店中,浏览者在店中漫步,没有表现出任何方向或目的。从某种意义上说,消费者正在为其日后的购买收集情报。

浏览者

浏览者就是一个浏览内容的消费者。正如我之前所说的,浏览者应该尽可能多地接触不同的事物,而系统的推荐应该反映出这一点。如果你能将一个访客界定为浏览者,那么你就可以利用这些信息来生成适合这种氛围的推荐。

这里你需要收集的数据是浏览者在何处停留和研究商品。同样值得跟踪的是浏览者看过哪些内容而这些却没有引起他的兴趣。但是你能确定页面视图(商品视图)总是正确的吗?

页面视图

电商网站中的页面视图(page view)可能意味着很多事情。它可以识别出访客(或浏览者)对网站感兴趣,也可以识别出那些人在网站中迷路或在随意单击。在后一种情况下,大部分的单击不是积极的。迷路的用户会在访问网站时有很多次单击行为但没有产生任何转化。

另一方面,一个优秀的推荐系统可以减少页面浏览量。这是因为人们可以从推荐的链接和商品中找到他们想要的一切,而无须先到处浏览。

页面持续时间

要确定浏览你网站的访客对什么内容感兴趣,可以测量他在内容页面持续停留的时间。但这种方法够直截了当吗?如果你假设用户没有做任何其他事情,那么接下来他要做的就是通过当前页面上的链接跳转到一个新页面。表 2.3 给出了一种方法,解释了浏览者在页面上所花时间的可能含义。

你可以调整页面持续时间以适应你的业务领域,但我认为大多数人会同意上面这些解释应该是正确的。哪些数据值得保留下来?好吧,所有都值得。停留不到 5秒表明不喜欢,5 秒到 1 分钟可能意味着用户“感兴趣”,1~5 分钟可能意味着用户认为“这很棒”,5 分钟及以上就很难说了。所有这些都取决于页面的内容。这不是一门精确的科学。

扩展单击

除了页面持续时间之外,还有其他方法可以记录用户对内容的兴趣。添加小控件交互,能帮助你确定用户在做什么。例如,网站经常使用指向更多信息的链接,如图 2.4 所示。这对用户来说很方便,如果他们感兴趣,他们可以快速浏览或扩展链接。同样,用户可以向下滚动查看评论或技术细节。如果用户执行了其中的某个操作,就可以认为他对此感兴趣。

社交媒体链接

你还可以为那些非常喜欢某件东西、希望与其他人分享的人添加社交媒体按钮(参见下图)。你不能控制在 Facebook、Twitter 或其他社交媒体网站上发生的事情,但是你可以收集用户分享某件东西的事件。

保存以备后用

“保存以备后用”(Save for Later)的功能允许用户将东西添加到列表,该功能非常强大。如果用户发现了一些感兴趣的东西,为他们提供一个功能以便其保存那些东西以备后用(如果他们不立即购买的话),是一个很好的点子。这个功能的形式可以简单到像为页面添加一个书签链接。更进一步,可以做成愿望列表、收藏夹列表或浏览列表,这取决于内容的类型。其他表明用户感兴趣的迹象可能是下载宣传册、观看有关特定内容的视频,或者针对某个特定主题注册一个消息通知。

检索词

访问网站可能意味着人们要么正在浏览,要么正在寻找一些特别的东西。如果页面布局良好,大多数用户可以快速找到他们想要的内容。Netflix 表示,每次有人开始搜索,都被视为推荐系统的一次失败,因为这意味着人们在推荐系统中找不到任何想要观看的内容。我可以肯定地说我不认可这个观点 :我就经常使用搜索功能,因为有人推荐了一些我平时可能不会观看的内容。在任何情况下,检索词都是理解用户所需内容的最佳方式之一。

下图展示了一个 Netflix 搜索窗口。这个网站拥有海量的电影,所以如果你搜索“Wonder Women”(《神奇女侠》),它会显示类似标题的影片,即使“Wonder Women”不在目录中。

即使系统不能提供用户所搜索的内容,记录下该事件依然是有价值的。如果用户正在寻找电影,你就知道他对该内容感兴趣。有了这些信息,你的推荐系统可以推荐类似的内容。

将搜索到的项目与最终消费相关联

关于检索词(用户在搜索字段中输入的内容)需要考虑的另一件事是,将搜索的内容与消费的内容联系起来,这是一个好主意。比如说,用户搜索 Star Wars(《星球大战》)并观看了 Harlock: Space Pirate(《哈洛克 :太空海盗》),而这部影片又会涉及 Babylon A. D.,于是用户最终会看它。也许把 Babylon A. D. 放到对Star Wars 的搜索结果中是值得尝试的。

三、购买行为

购买商品意味着消费者认为该商品有用或可爱,或者它可能可以作为礼物。很难确定某次购买商品是消费者为自己买的,并因此而将其作为理解其偏好的部分证据,或者也许它是一个礼物或诸如此类应该被忽略的东西。

弄清楚哪些购买是在买礼物而哪些不是,这是一个有趣的问题。此次购买的商品与该用户迄今为止所消费的商品风格不同,可能表明这是该用户偏好的一个新维度,也可能说明它是一个礼物。不管怎样,它都应被视为数据中的离群点(outlier,异常值)。

从图形上看,显示为远离主体的点,如下图所示。因为你不能确定离群点的含义(是礼物还是新的兴趣),所以最好忽略它。相反,它也可能是新趋势的第一个指示器,那这就是一个可以探索的机会。

买东西的行为意味着该商品用一种很好的方式进行了展示,尽管它没有说明消费者是否喜欢这个商品。至少,如果这是消费者第一次购买商品,事实就是如此。第一次购买可能并不意味着认可,但第二次购买很大可能就是认可。无论哪种方式,购买都可以被解读为积极的信号。

四、消费商品

当有东西被购买时,商店就失去了与商品的联系,而且如果它不是由网站提供的流式商品或服务,就无法跟踪它的使用方式。

Endomondo

电影和音乐不是在线消费的唯一内容。Endomondo 是另一个提供在线服务的网站样例。这个社交健身运动网通过允许用户使用运动跟踪器来收集关于用户活动的统计数据。

Endomondo 会跟踪用户使用其功能的程度,该公司会据此推荐类似服务或了解应该在何处开发新服务。电话公司还可测量消费者如何使用他们的电话,它们可以用恐怖的方式跟踪我们。下面将讨论你可以从流式商品中学到什么。

流式商品

在流媒体服务(包括音乐、电影甚至书籍)的案例中,所有的用户交互都可以被视为隐式评分。用户听了一首歌,表示他喜欢它。但是,可以对这些数据做进一步分析。下面列出了用户与音乐或电影的互动。

1 开始播放 :用户感兴趣,这已经具有积极的意义了。

2 停止播放 :哦,等等,也许用户由于好奇开始播放,但开始播放后觉得它很糟糕,所以停止了。在前 20 秒内停止播放一首歌(或在前 20 分钟内停止播放一部电影)可能是一个不好的迹象。在接近结束的地方停止可以被认为是其他情况。

3 继续播放 :好吧,忘记系统里记录的所有负面隐式评分。停止后再恢复可以有很多种含义。如果在 5 分钟内恢复播放,可能是某人或某事打断了消费者,所以这种停止和恢复就无须考虑。但如果用户停止播放并在 24 小时之后恢复播放,则说明用户可能会喜欢这个内容。

4 快进 :如果用户在中间跳过某些内容,这可能不是一个好兆头—当然前提是这是他第一次观看。比方说,如果这部电影是这个用户第 10 次被观看,那么跳过一个无聊的场景可能并不会使电影的整体感受变差。本书的技术审校者就谈到,对于音乐,他常常快进歌曲来了解一首歌唱的是什么,或是否值得一听。歌曲的上下文比较少,所以通过快进,你可以知道自己是否喜欢其中的内容。但这不适用于电影。

5 播放到最后 :我们有了一个胜利者!这是一个很好的信号—用户可能不会对它评价很高,但如果他们坐在那里看完整部电影,可能意味着他们会观看类似的电影(播放到结尾意味着一直播放到电影结束并且片尾开始滚动)。

6 重播 :重播对于电影和音乐来说可能都是积极的信号,但对于提供教育视频的网站来说,可能表示该专题太难了。

这些步骤适用于大多数流媒体商品。如何从流式商品收集证据取决于所使用的播放器类型。

对于 Endomondo(它也是一种流媒体服务)而言,这些步骤和解释并不真正成立。从这个意义上来说,如果你启动 Endomondo 并表明你已经开始跑步(按“Play”按钮),那么如果你在 10 公里后暂停这个 App,这可能与你对这个 App 的喜爱程度没有任何关系,或许意味着你应该减肥了。

五、访客评分

最后,我们来讲每个人都挂在嘴边的东西 :评分。Netflix 的名言是 :

The more you rate, the better your suggestions.(你评价的越多,你的建议越好。)

这可能是一个真理,但需要做稍许修正,稍后你就会看到。大多数推荐系统都使用了评分,但那些用户评分通常会根据用户行为进行加权。评分对这些系统来说只是第一步。你想要的是采集用户的行为。

许多网站允许用户查看他们浏览、购买或使用过的内容。这使系统能够更好地了解用户的喜好,以便将来更好地为用户提供建议。你可以通过添加一定数量的星星(帽子、笑脸表情等)来确定评分,但在这些图案背后,其实是一个代表某个等级的数字。和大多数地方一样,亚马逊试图通过给出一段提示文字来帮助你了解每一颗星星的含义。下图展示了亚马逊图书评论的一个例子。

在亚马逊上,当用户将鼠标光标移到星星上时,会显示一条描述信息。在这种情况下,四颗星实际上意味着用户说“我喜欢它”。除了评分之外,某些网站,例如 TripAdvisor,还鼓励用户撰写评论。

可以说一个五星评分加上一篇书面评论可以算作一个五星以上的评价,因为写评论的人会思考得更多。一颗星评分的情况也是如此。但是,如果一个人为所有的评分都给了一篇书面评论,我们可能不能认为这种情况有更多的附加值。买了东西而不打分,这能表明你喜欢它吗?

控制感

当仅需要添加水就能做出蛋糕的蛋糕粉(参见下图)首次上市时,遭遇了巨大的失败。对于忙碌的消费者来说,这款商品似乎是完美的 :他们唯一要做的事情就是加水。通过对消费者的研究发现,问题不在于流程简单,而在于流程过于简单。烘焙蛋糕是为了创造,但是预先准备好一切使得这个过程变得太容易了,它剥夺了消费者的控制感。制造商们说,“好吧,我们也会让他们加鸡蛋。”于是,生产成本降低了,消费者感觉拥有了更多的自主权。当这种蛋糕粉再次上架,并加上添加水和鸡蛋的说明后,就取得了巨大的成功。

许多网站允许用户添加他们的偏好也是出于同样的原因 :就是给用户一种控制感,使他们觉得自己能控制系统,让其知道自己的偏好是什么。Netflix 声称许多人表示他们喜欢纪录片和外国电影,但实际在看美国情景喜剧。那么,Netflix 应该给出什么样的推荐 :是那些你自己选择的但感受很差的娱乐节目,还是你真正想要看的内容?

这就是为什么很难用带有评分的数据集来测试推荐系统是否优秀的原因之一。数据集可以测试你的预测计算是否有效,但不能测试推荐系统是否会吸引更多用户。

保存评分

当用户添加评分时,它是一个事件,并且该事件应该像其他事件那样被保存在证据中。它可能也值得被直接保存在你的内容数据库中,这样当你向用户展示内容时,同时显示该内容的平均评分。

负面用户评分

如果你作为一个消费者想要表明不喜欢某些内容,事情就会变得有点棘手,因为要评价某样东西你至少必须给它一颗星。一颗星都没有意味着你根本没有打分。如果你讨厌什么东西,你就不会想给它任何星星,哪怕一颗星也不想给。从某种意义上说,不评分比“我讨厌它”要好,而对于后者,你可以在亚马逊上用一颗星来表示,如图所示。

不喜欢某件东西可能意味着不必费心去评价它。但是如果有什么事情真的让你很恼火,你可能会想在某个地方释放你的懊恼,而这通常是以一个负面评论的形式出现的。

上图中的评分不是我给的。如果你有机器学习的背景,我绝对推荐 Deep Learning(MIT Press,2016)这本书 ;否则,你最好从 Andrew Trask 的 Grokking Deep Learning(Manning,2016)开始学习。

投票

许多网站围绕用户对某个事物是好是坏的投票,已经成功地建立起一个社区。例如,TripAdvisor 唯一的服务就是对酒店和餐馆的评分。另一个例子是 Hacker News,其中用户负责添加内容,这些内容可以是文章和博客的链接,主题是“优秀黑客发现的有趣的东西”。添加内容后,你可以对其投票。内容获得的票数越多,在页面上的位置就越靠前(几乎就是这么简单,稍后你可以好好看一下算法)。使用投票的网站被称为信誉系统(reputation system)。

▊《实用推荐系统》

关于作者
Kim Falk 是一位数据科学家,他在构建数据驱动的应用程序方面有着丰富的经验。他对推荐系统和机器学习很感兴趣。他所训练的推荐系统,为用户推荐合适的电影,为人们推送广告,甚至帮助律师找到判例法的内容。自2010 年以来,他一直从事大数据解决方案和机器学习方面的工作。Kim 经常参与有关推荐系统的演讲和写作。

当Kim 不工作的时候,他就是一个居家男人,是一位父亲,会带着他的德国短毛指示犬进行越野跑。

媒体评论

“这本书涵盖了技术背景知识,并以清晰简短的Python代码演示了实现。”

——Andrew Collier,Exegetic公司

“你有没有想过Amazon和Netflix是如何了解你对产品和电影的喜好,并提供相关推荐的?这本书会告诉你它们是如何做到的!”

——Amit Lamba, Tech Overture公司

“这本书讲了关于推荐系统的一切,从入门到高级概念。”

——Jaromir D.B. Nemec,DBN公司

“这是一本实用的深入了解推荐系统的图书!”

——Peter Hampton,阿尔斯特大学

关于本书

要构建一个实用的“智能”推荐系统,不仅需要有好的算法,还需要了解接收推荐的用户。本书分为两部分,第一部分侧重于基础架构,主要介绍推荐系统的工作原理,展示如何创建推荐系统,以及给应用程序增加推荐系统时,应该如何收集和应用数据;第二部分侧重于算法,介绍推荐系统的算法,以及如何使用系统收集的数据来计算向用户推荐什么内容。作者还讲述了如何使用最流行的推荐算法,并剖析它们在Amazon 和Netflix 等网站上的实际应用。

推荐系统推荐业务架构介绍(代码片段)

11.1黑马头条推荐业务架构介绍1.1.1业务在头条APP海量用户与海量文章之上,使用lambda大数据实时和离线计算整体架构,利用黑马头条用户在APP上的点击行为、浏览行为、收藏行为等建立用户与文章之间的画像关系,通... 查看详情

推荐系统学习总结(代码片段)

...生原始日志,并存在文件系统。1.用户行为在个性化推荐中分为两种:显示反馈和隐形反馈(浏览)。各网站例子:(1)视频网站:显性:用户对视频评分;隐性:用户观看视频日志/浏... 查看详情

基于卷积神经网络cnn的电影推荐系统(代码片段)

...目使用文本卷积神经网络,并使用MovieLens数据集完成电影推荐的任务。推荐系统在日常的网络应用中无处不在,比如网上购物、网上买书、新闻app、社交网络、音乐网站、电影网站等等等等,有人的地方就有推荐。根据个人的喜... 查看详情

推荐系统(蒋凡译)—第二章协同过滤推荐(代码片段)

  协同过滤推荐的主要思想:利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些东西或对哪些东西感兴趣。  纯粹的协同过滤方法的输入数据只有给定的用户—物品评分矩阵,输出数据一般有以下几种类型:表... 查看详情

推荐系统-协同过滤

一、基本介绍1.推荐系统任务推荐系统的任务就是联系用户和信息一方面帮助用户发现对自己有价值的信息,而另一方面让信息能够展现在对它感兴趣的用户面前从而实现信息消费者和信息生产者的双赢。2.与搜索引擎比较相同点... 查看详情

rschap1:好的推荐系统

一、什么是推荐系统1.个性化推荐系统:从庞大的电影库中找几部符合你兴趣的电影供你选择。2.推荐系统是帮助用户快速发现有用信息的工具。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的... 查看详情

django基于用户画像的电影推荐系统源码(项目源代码)(代码片段)

...签,并使用Hadoop、Spark大数据组件进行分析和处理的推荐系统。管 查看详情

推荐系统-协同过滤原理与实现

一、基本介绍1.推荐系统任务推荐系统的任务就是联系用户和信息一方面帮助用户发现对自己有价值的信息,而另一方面让信息能够展现在对它感兴趣的用户面前从而实现信息消费者和信息生产者的双赢。2.与搜索引擎比较相同点... 查看详情

胡扯推荐算法(协同)及其dome实现(代码片段)

文章目录前言推荐系统定义基本分类相似度计算欧式距离皮尔逊系数余弦相似度协同过滤案例数据定义相似度计算推荐svd奇异值分解优化完整代码总结前言打瞌睡遇到送枕头的感觉真爽嘿嘿@BoyC啊废话不多说,开始吧。推... 查看详情

从数据库底层说起,探究用户画像系统的储存该如何选型(代码片段)

...在给用户画像做定义之前,我们先来了解一下什么是推荐系统场景:在现在的互联网时代,网上购物已经称为常态,当我们在各大电商平台购物的时候,不难发现这样一个现象。当你搜索某个上面进行浏览的... 查看详情

推荐系统(029~036)(代码片段)

文章目录推荐系统算法基于人口统计学的推荐算法基于内容的推荐算法基于内容推荐系统的高层次结构相似度计算特征工程数值型特征处理类别型特征处理时间型特征处理统计型特征处理推荐系统常见反馈数据基于UGC的推荐基于... 查看详情

markdown有用的实用程序(代码片段)

查看详情

推荐系统实践(项亮)—第2章利用用户行为数据

...行为;用户数据的统一表示;2.2用户行为分析  在设计推荐算法之前需要对用户行为数据进行分析,了解数据中蕴含的一般规律可以对算法的设计起到指导作用。用户活跃度和物品流行度均近似符合长尾分布:e.g.物品流行度... 查看详情

推荐系统--隐语义模型lfm(代码片段)

...于找到文本的隐含语义,相关名词有LSI、pLSA、LDA等。在推荐领域,隐语义模型也有着举足轻重的地位。下述的实验设计见推荐系统–用户行为和实验设计基本思想核心思想:通过隐含特征(latentfactor)联系用户兴趣和物品。具体来... 查看详情

基于用户行为数据为用户推荐商品

...通过分析这些数据来推测用户喜爱哪种商品,从而为用户推荐他们更偏爱的商品。2、用户行为分类  根据反馈的明确性来说,用户行为在个性化推荐系统中一般分两种:①显性反馈行为:明确表示用户对商品喜恶的行为,比... 查看详情

商品推荐算法(代码片段)

淘宝网会为你推荐一些商品,而这些商品是如何被推荐过来的想必你也很好奇,今天我们就来聊一下商品推荐的一些算法,当下主流的推荐算法协同过滤推荐算法,让我们一起来看看它是如何工作的。首先,我们先了解下余弦相... 查看详情

推荐系统

本文结构:1.推荐系统2.常用方法1.简介2.模型cost,gradient表达式3.代码实现3.应用实例参考:Coursera-AndrewNg的MachineLearningSirajology的RecommendationSystems-LearnPythonforDataScience1.推荐系统根据用户的兴趣特点和购买行为,向用户推荐用户感... 查看详情

推荐系统-task03离线物料系统的构建(代码片段)

...。进行离线计算,为每个用户提供一个热门页列表和推荐页列表并缓存,为后续在线部分服务。离线系统基本内容:新闻物料爬取:主要采用scrapy爬虫工具,在每天晚上23点将当天的新闻内容从网页中进行抓取... 查看详情