[音乐播放] 脑SCASSELLATI:欢迎 到CS50 AI系列。 我的名字是Scass,今天我们要去 说说推荐系统。 现在,推荐系统声音 像那种一个奇怪的名字。 这听起来像也许它应该 是推荐系统, 样的,我同意你的看法。 但是,这些都是帮助系统 选择了类似的事情,只要 您选择网上的东西。 Netflix公司,例如会建议其他 电影,你可能想要观看。 或者潘多拉会建议不同 歌曲,你可能要听。 亚马逊将提出什么样的 其他的产品则可能需要购买。 Facebook的甚至会建议 一些其他的朋友 你可能需要添加。 每个系统进行操作使用 相同的基本算法种类的, 而这正是我们 要谈论今天。 现在,这些算法 令人惊讶的大企业。 Netflix公司几年前在 2009年提供了$ 1百万 如果你能提高自己的奖金 推荐系统,只需10%。 有10%,不过,表示 大量的业务。 估计是难以 来的,但很多人 相信这些建议 一个在线采购系统 系统像亚马逊导致地方 在10%和25%的增加收入。 所以,你可以想像 种量,你是 说起当我们思考 即使这些小的算法。 因此,让我们得到一些例子。 它是如何,这些 系统真的有用吗? 有两种基本 种的算法的 在作怪,当我们谈论 生成建议。 第一个的人被称为 基于内容的过滤。 而基于内容的过滤依赖 于项之间的相似 自己,那就是两部电影之间 两首歌曲或两个购买的物品。 我们将使用电影 作为一个例子,但本 可以适用,真的,任何类型的 的对象,我们要寻找的。 所以,如果我想一些 从去年的电影, 只见里面出与 我的孩子们,他们喜欢它。 但我们也有一个选择。 我们可能已经看到喽罗, 我们可以看到ULTRON的年龄, 或者,我们可以看到 蚂蚁人在影院上映。 对于任何这些 电影中,我们可以想像 产生的特征的列表或 有关这些不同的电影品质。 因此,例如,我可以考虑 其中,这些电影是动画。 那么,无论是由内而外 和喽罗是动画。 ULTRON的年龄都没有,也没有 蚂蚁人都是动画电影。 我能想象建设 起来的结构中,一个表,该表 列出这些属性。 他们是否动画或不? 然后,我可以添加更多 功能,以该表 通过添加更多的行成这种结构。 我可以问是否 不,他们是奇迹的电影。 那么,由内而外和喽罗 没有奇迹的电影, ULTRON和Ant人的年龄肯定是。 而且我可以问任何种类的 不同质量的 我想,任何种功能 这可能是对我很重要。 他们有一个超级大坏蛋? 那么,有没有超级大坏蛋里面 退房手续,但也有那些在喽罗 和在,很明显, 2超级英雄电影。 我还可以问之类的东西,那么, 确实,他们通过Bechdel测试? 是否有两个命名 女性角色谁 花一些显著量 有一个谈话时间 不涉及人的中投? 那么,在这种情况下,由内向外传递 测试中,喽罗失败,ULTRON的年龄 通过测试,和蚂蚁人失败。 这些功能中的任何一个 我能想到的 作为对某些人来说很重要。 我还可以问之类的东西都 在这些影片有没有人说 来自校友比方说,公园和 娱乐,我最喜欢的节目之一。 好了,里面走出了艾米 波勒,这是一个校友。 才是最重要。 乔恩哈姆是喽罗。 保罗陆克文是蚂蚁人,但没有人 在ULTRON的年龄在公园和所需物品 为好。 所以,我可以建立起来的这个名单 功能,并且真正做到了 约看电影什么。 它们可能是什么 纵横比他们被射中, 它可能是多少个座位,他们 在他们的首个周末售出。 我想任何功能 生成我可以把这个表。 现在,在这种情况下,我已经建立 所有类金银价值, 是或否,通过或失败, 但它们可以是任何东西。 他们可以是任意值。 对于基于内容过滤, 我们要做些什么 是我们要考虑的 此表中的两列 ,看看他们是如何的相似。 因此,举例来说,如果我 去看了由内而外, 我可能会问,有什么其他电影 我可能愿意去看看。 也就是说,什么愿意 花我的钱去看看。 我可以通过只考虑比较这 两列,一列从内而外 和一个来自任何的 其他电影,只是看到 有多少他们的特点相匹配。 所以,如果我比较内而外 与喽罗,嗯,有 三件事这里比赛。 他们都是动态的,他们都没有 是奇迹的电影,两者的 有公园和所需物品的校友。 所以,我可以计数如何 很多场比赛有, 并且在这种情况下,存在会是3。 如果我再比较而外 与假设ULTRON的年龄, 我可以看看在列表中向下 并说,嗯,有 匹配有只有一件事。 他们都通过了德尔测试,所以 这将是一分。 而由内而外的 和蚂蚁人,我再次 可能是由于线路比较线多少 事情他们两个人之间的匹配。 那么,一个人的动画,一个人的不是。 一个是一个奇迹的电影,人们不是。 一个人的得到了一个超级大坏蛋, 另一个没有。 一通柏克德 测试,一次失败了, 但他们都有公园和所需物品的校友, 如此反复,它得到一分。 所以,如果我正在寻找电影 在类似于内而外, 我可以寻找具有电影 得分最高的这个内容中 过滤方案。 因此,在这种情况下,我 会考虑喽罗 要更加密切和 可能是什么 我会花钱去看 比ULTRON或蚂蚁人的年龄。 这些基于内容的 过滤系统依赖只是 上的性质 电影,所以我 只需通过了解建立这些 一些有关产品 我有。 我可以使用任何类型的 的功能,我想, 我可以建立更多 复杂的功能, 涉及到更复杂的测试 质量作为我走。 事实上,我甚至可以查看该表 不是作为一个静态的对象, 而作为维 在较大的状态空间。 我可以开始谈论 不同的电影之间的距离。 这些都是事 我们知道他们是如何 做使用多种数据结构 我们已经看到在CS50。 所以,我能想象建设 的数据结构的电影。 还有,我已经一个结构 构建所谓的电影, 并且它具有在其5布尔条目。 难道是动画,它是一个奇迹 电影,它有一个超级大坏蛋, 它通过Bechdel考验, 是否有公园和Rec校友呢? 与每个这些是一个 数据结构,我 可以占用该特定的电影。 然后计算是否将两个 电影是相似与否, 他们的成绩是,我可以 写出一组伪那 生成相同的功能。 也就是说,考虑到一些电影M1,我可以 找到最类似电影到它 通过以下的伪代码。 我认为这是最好的 进球我发现系统, 我已经找到了最好的对比。 对于每一个其他的电影 我会去通过, 我将设置一个匹配率等于0。 我会去通过 电影,M1,电影 我开始,我会检查 每一个功能 他们有看 如果有一个匹配。 如果有一场比赛,我会 增加比赛得分。 而如果在结束比赛分数, 我已经比目前最好的更好 进球,那我就 请记住,最好的成绩, 这是最好的比赛,我有。 最后,无论电影 坐在最佳匹配, 这是最接近 我已经能来。 因此,这些内容的基础 过滤系统, 它们都具有这样的基本结构。 他们依靠项目 问题并没有什么 任何用户首选项。 我们在使用其他机制 为了建立推荐系统 被称为协同过滤。 协同过滤依赖 而不是对象本身的品质, 但如何人,其他 网友认为,他们怎么样了 针对这些相同的对象。 因此,要继续我的电影的例子, 我可能会采取一帮朋友 并调查他们关于是否 他们不喜欢特别的电影。 现在不同的地方会产生 此数据以不同的方式。 您可以直接调查你 用户,也可以只 看看他们的选择,如果 你,例如Netflix的。 没有他们看哪些电影? 我可能会质疑我的一些 这里的朋友,并找出 杰森喜欢每一部电影 他看见了,也就不足为怪了那里。 安迪只喜欢喽罗和阿姨人。 莎拉喜欢内向外 复仇者,安迪的对立面。 和SAM,以及,萨姆喜欢 所有的超级英雄电影, 但没有的动画电影。 然后我可以查询一些新的 个人,其他一些用户喜欢自己 并要求,好吧,如果我喜欢 这些电影之一, 你可以做一个大概的预测 而其他的电影我可能会喜欢。 也就是说,如果我喜欢里面 出,这是其它电影 我可能也想看看 根据什么相似的人做? 也就是说,我会去通过 我将筛选通过这个列表 并找到刚才 个人谁也喜欢 由内而外,谁符合我的喜好。 嗯,这意味着,安迪和 山姆,他们不喜欢由内而外, 所以我不会去考虑他们。 我要摆脱自己的 数据进行这种比较。 那么我可以看看贾森 和萨拉思想和理货 了其中,他们看到的电影 我没有,他们是否喜欢他们 或不。 我可以指望了,让我们说票。 所以喽罗,例如可能有一个 选它,因为杰森喜欢它。 这两个贾森和莎拉喜欢复仇者, 所以它有两票。 而且,只有贾森喜欢蚂蚁人, 所以它会得到一票。 所以,如果我不得不然后推荐 为自己而这些电影 我可能是最容易看,我会 要选择ULTRON的年龄:复仇者。 因此,对于任何这些 系统,现在,我使用 已生成不是关于数据 电影本身,而是偏好 来自其他用户。 这具有当然还有一些困难。 如果你没有任何其他的用户? 嗯,这就是所谓的启动问题。 你必须有一些 之前的数据量你 能够开始制作 这些建议。 它的另一面是,一旦 你开始收集数据, 如果你能收集更多 和越来越多的数据, 你会越来越好 和更好的建议。 现在,我们可以翻译 此为代码。 我们可以定义一个不同的 样的结构, 在这种情况下,我们会打电话给它的用户。 而且它有有关功能 这电影该用户的喜爱。 难道他们想由内而外, 喽罗,复仇者,和蚂蚁人。 然后,我们可以产生 一些伪跟随 同样的过程,我之前使用。 即,给定一个特定的 用户X,让我们推荐一个电影 是X可能会喜欢。 我们可以通过与 对于所有的电影, 我们可以初始化一个分数 对于那部电影是0。 然后我们就可以找到所有 其他用户的谁 具有相同的首选项为x。 然后,每 电影,他们喜欢, 我们将增加那部电影的评分。 无论电影中的 结束得分最高, 那是一个我要建议。 这一切都不是真的不清楚。 这一切都不是具有挑战性的。 这些都是基本算法 你可以实现的今天。 现在有了真正的推荐系统, 你遇到了一些问题。 如果有没有谁 精确匹配您的喜好? 如果有用户谁 正是您的喜好, 但随后大幅偏离 从你喜欢什么? 我喜欢经典的哥斯拉 电影,但是我的妻子没有。 我喜欢看他们,我 Netflix的帐户中包含他们。 她的没有。 当我们开始会发生什么 混合像这样的数据? 这些都是挑战 你可以克服, 他们只需要稍微 更复杂的算法。 现在在现实世界中,这 实际上操作, 我们使用基于内容的过滤或 我们使用的协同过滤? 答案是,我们使用其中的两者。 几乎所有的主要用户 这种情况下,亚马逊,Facebook和Netflix公司, 潘多拉,它们都使用相结合 这些不同的推荐系统。 而当我们结合选择从 每次,我们称之为混合系统。 它们以某种方式取决于 物体本身的特性, 而且在某些方面,他们依靠 其他用户的喜好。 这些混合系统, 他们是大企业, 而且他们什么是当前的今天。 所以,非常感谢您来到我身边。 我希望你已经得到了一点点 的理解有点什么 使得这些系统的工作。 下一次你在线,请记住, 不仅是你影响你的选择, 但可能其他人的为好。 再次感谢。