数据结构与算法笔记:高级篇 - 向量空间:如何实现一个简单的音乐推荐系统?

news2024/12/23 23:52:52

概述

很多人喜都喜爱听歌,以前我们用 MP3 听歌,现在直接通过音乐 App 在线就能听歌。而且,各种音乐 App 的功能越来越强大,不仅可以自己选歌听,还可以根据你听歌的喜好,给你推荐你可能会喜好的音乐,而且有时候推荐的音乐还非常适合你的口味,甚至会经验到你!如此智能的一个功能,你知道它是怎么实现的吗?


算法解析

实际上,要解决这个问题,并不需要特别高深的理论。解决思路的核心思想非常简单、直白,用两句话就能概括出来。

  • 找到跟你口味偏好相似的用户,把他们爱听的歌曲推荐给你;
  • 找出跟你喜爱的歌曲特征相似的歌曲,把这些歌曲推荐给你。

接下来,我们就分别讲解一下这两种思路的实现方式。

1.基于相似用户做推荐

如何找到跟你口味偏好相似的用户呢?或者说如何定义口味偏好相似呢?实际上,思路也非常简单,我们把跟你听类似歌曲的人,看做口味相似的用户。你可以看下面这个图。用 “1” 表示 “喜爱”,用 “0” 笼统的表示 “不发表意见”。从图中可以看出,你跟小明共同喜爱的歌曲最多,有 5 首。于是,我们就可以说,小明跟你的口味非常相似。

在这里插入图片描述

我们只需要遍历所有的用户,对比每个用户跟你共同喜爱的歌曲个数,并设置一个阈值,如果你和某个用户共同喜爱的歌曲个数超过这个阈值,我们就把这个用户看做跟你口味相似的用户,把这个用户喜爱但你还没有听过的歌曲,推荐给你。

不过,刚刚的方案中有一个问题,我们如何知道用户喜爱那首歌曲呢?也就是说,如何定义用户对某首歌曲的喜爱程度呢?

实际上,我们可以通过用户的行为,来定义这个喜爱程度。我们给每个行为定义一个得分,得分越高表示越喜爱。

在这里插入图片描述

还是刚刚那个里子,我们如何把每个人对每首歌曲的喜爱程度表示出来,就是下面这个样子。图中,某个人对某首歌曲是否喜爱,我们不再用 “1” 或者 “0” 来表示,而是对应一个具体的分值。

在这里插入图片描述

看了这样一个用户对歌曲的喜爱程度的对应表之后,如何来判断两个用户是否口味相似呢?

显然,不能再像之前那样,采用简单的计数来统计两个用户之间的相似度。还记得我们之前讲字符串的相似度度量时,提到的编辑距离吗?这里的相似度度量,我们可以用另外一个距离,那就是欧几里得距离(Euclidean distance)。欧几里得距离是用来计算两个向量之间的距离的。这个概念中有两个关键词,向量和距离,我来给你解释下。

一维空间是一条线,我们用 1,2,3... 这样单个的数,来表示一维空间中的某个位置;二维空间是一个面,我们用 (1,3), (4,2), (2,2) ... 这样的两个数,来表示二维空间中的某个位置;三维空间是一个立体空间,我们用 (1,3,5), (3,1,7), (2,4,3) ... 这样的三个数,来表示三维空间中的某个位置。一维、二维、三维应该都不难理解,那更高维中的某个位置该如何表示呢?

类比 一维、二维、三维的表示方法,K 维空间中的某个位置,我们可以写作 ( X 1 , X 2 , X 3 , . . . , X k ) (X_1, X_2, X_3,..., X_k) (X1,X2,X3,...,Xk)。这种表示方法就是向量(vector)。我们知道,二维、三维空间中,两个位置之间有距离的概念,类比到高维空间,同样也有距离的概念,这就是我们说的两个向量之间的距离。

那如何计算两个向量之间的距离呢?我们还是可以类比到二维、三维中距离的计算方法。通过类比,我们就可以得到两个向量之间距离的计算公式。这个计算公式就是欧几里得距离的计算公式:

在这里插入图片描述

把每个用户对所有歌曲的喜爱程度,都用一个向量表示。我们计算出两个向量之间的欧几里得距离,作为两个用户的口味相似程度的度量。从图中的计算可以看出,小明与你的欧几里得距离最小,也就是说,你俩在高维空间中靠的最近,所以,我们就可以断定,小明跟你的口味最相似。

在这里插入图片描述

2.基于相似歌曲推荐

刚刚讲了基于相似用户的歌曲推荐方法,但是,如果用户是一个新用户,我们还没有收集到足够多的行为数据,这个时候该如何推荐呢?我们现在再来看另一种推荐方法,基于相似歌曲的推荐方法,也就是说,如果某首歌曲跟你喜爱的歌曲类似,我们就把它推荐给你。

如何判断两首歌曲是否相似呢?对于人来说,这个事情可能会比较简单,但是对于计算机来说,判断两个歌曲是否相似,那就需要通过量化的数据来表示了。我们应该通过什么数据量化两个歌曲之间的相似程度呢?

最容易想到的是,我们对歌曲定义一些特征项,比如是伤感的还是愉快的,时摇滚还是民谣,是柔和还是高亢的等等。类似基于相似用户的推荐方法,我们给每个歌曲的每个特征项打一个分数,这样每个歌曲就都对应一个特征项向量。我们可以基于 这个特征项向量,来计算两个歌曲之间的欧几里得距离。欧几里得距离越小,表示两个歌曲的相似程度越大。

但是,要实现这个方案,需要有一个前提,那就是我们能够找到足够多,并且能够全面代表歌曲特点的特征项,此外,我们还要人工给每首歌标注每个特征项的得分。对于收录量海量歌曲的音乐 App 来说,这显然是一个非常大的工程。此外,人工标注有很大的主观性,也会影响到推荐的准确性。

既然基于歌曲特征项计算相似度不可行,那我们就换一种思路。对于两首歌,如果喜欢的人群都是差不多的,那侧面就可以反映出,这两首歌比较相似。如图所示,每个用户对歌曲有不同的喜爱程度,我们依旧通过上一个解决方案中定义的得分标准,来定义喜爱程度。

在这里插入图片描述

你有没有发现,这个图跟基于相似用户推荐中的图几乎一样。只不过这里把歌曲和用户的主次颠倒了一下。

  • 基于相似用户的推荐方法中,针对每个用户,我们将对各个歌曲的喜爱程度作为向量。
  • 基于相似歌曲的推荐思路中,针对每个歌曲,我们将每个用户的打分作为向量。

有了每个歌曲的向量表示,我们通过计算向量之间的欧几里得距离,来表示歌曲之间的相似度。欧几里得距离距离越小,表示两个歌曲越相似。然后,我们在用户已经听过的歌曲中,找出他喜爱程度较高的歌曲。然后,我们找出跟这些歌曲相似度很高的其他歌曲推荐给他。

总结

实际上,这个问题是推荐系统(Recomendation System)里最典型的一类问题。之所以讲这部分内容,主要还是给你展示,算法的强大之处,利用简单的向量空间的欧几里得距离,就能解决如此复杂的问题。不过,本章只讲解了基础理论,实践中遇到的问题还有很多,比如冷启动问题,产品初期积累的数据不多,不足以做推荐等等。这些更加深奥的内容,你可以之后自己在实践中慢慢探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1868802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Polyplus转染试剂的优点,你知道吗?

Polyplus专注于为生命科学研究、体内转染、生物制品制造以及细胞和基因治疗的客户,提供创新的核酸递送解决方案。其深耕转染领域,产品力强劲。在科研领域,其产品转染效果以及价格都优于lipo系列。无论是在基础科学研究中,还是在临…

数字AI化银行数字化转型实战手册银行数字化转型大客户营销销售讲师培训师唐兴通谈存量客户理财金融科技与场景化

推动银行数字化转型的五个关键因素 推动银行数字化转型的五个关键因素: 客户体验。为客户提供便利和个性化是数字化转型的关键因素。银行应开发和实施创新的数字渠道,例如移动应用程序、网上银行、聊天机器人等,以方便获取金融服务并提高客户…

【哈尔滨等保测评二级多久需要测试一次?】

哈尔滨二级等级保护测评一般为两年一次。 在确定周期时,应综合考虑多种因素。 首先,公司的大小与复杂性是影响公司发展的主要原因。大型企业在进行等保评估时,往往会花费较长的时间,因为他们的信息系统比较庞大、复杂。同时&…

国标GB/T 28181详解:国标GBT28181-2022的目录通知流程

目录 一、定义 二、作用 1、实时同步设备目录状态 2、优化资源管理和调度 3、增强系统的可扩展性和灵活性 4、提高系统的可靠性和稳定性 5、支持多级级联和分布式部署 6、便于用户管理和监控 三、基本要求 1、目录通知满足以下基本要求 2、关键要素 (1…

探索AIGC治愈系创作:Stable Diffusion 带你轻松复刻某书爆款动漫卡通文案!

hello,大家好我是安琪! 情感治愈类一直是受众群体很高非常火爆的赛道,安琪也关注到在某书平台上,漫画治愈类风格的内容也是非常的受欢迎。先来看看以下一些案例 看看这几个账号内容的质量就可以看出该部分内容是很受欢迎的&#x…

Oracle 19C19.3 rac安装并RU升级到19.14

19C支持RU补丁安装。 下载好19.14的RU补丁 [rootrac1 soft]# ll total 9830404 -rw-r--r-- 1 grid oinstall 3059705302 Jun 18 15:26 LINUX.X64_193000_db_home.zip -rw-r--r-- 1 grid oinstall 2889184573 Jun 18 15:27 LINUX.X64_193000_grid_home.zip -rw-r--r-- 1 grid …

java设计模式(七)适配器模式(Adapter Pattern)

1、模式介绍: 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户希望的另外一个接口。适配器模式通常用于需要复用现有的类,但是接口与客户端的要求不完全匹配的情况。它包括两种形式&…

通过CDS View读取HANA View

HANA View在HANA 数据库层,CDS View在​ABAP层。那我们可以用CDS view直接读取HANA View​。在CDS View里还可以加些​逻辑。 ​具体怎么做呢? 首先你有了一个HANA的calculation view。这个calculation view, 它是可以被HANA SQL访问的&#…

【新闻】技术工种魅力大增,美国Z世代职场新出路

美国需要更多水管工,Z世代正在响应这一号召。 长期受到劳动力短缺困扰的技工行业,如今对美国最年轻的就业群体产生新的吸引力,他们中许多人正选择放弃读大学。随着从焊接到机械加工等领域出现技术迭代,薪资正在上涨,这…

DV SSL证书如何升级到OV SSL 证书

随着互联网的发展和用户对数据安全性的关注,越来越多的网站开始采用SSL证书来保护用户的隐私和数据。在选择SSL证书时,有些网站可能会首先选择经济实惠的DV(域名验证)证书,但随着业务的发展和用户需求的增加&#xff0…

人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命

随着科技的浪潮不断向前推进,人工智能(AI)正以惊人的速度重塑着我们的世界,特别是在创意产业的核心领域——UI设计与视频剪辑中,AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代,…

Python学习01

一、课程简介 1、学习目标 2、学习成果 二、初识python-python介绍 python程序员 python的创始 python语言的优点 三、初始python-软件安装 0、软件安装 1、程序编译 2、python解释器的安装 官网地址:Welcome to Python.orgThe official home of the Python Progr…

数字人源头工厂是骗局吗?数字人源码部署内幕曝光!

随着数字人应用的不断普及,其行业前景和发展潜力也逐渐展现在了在人们的眼前,连带着数字人源头工厂和数字人系统源码部署的热度也也持续飙升。不过,就目前的市场情况来看,绝大多数数字人源头工厂部署出的数字人系统源码都不尽人意…

创意学生木工工具——木工锯床

开展创意木工课程丰富了学校的课程多样性,强化了实践教育,并实现了跨学科的融合,在教育理念方面,创意木工课程强调了学生的主体地位,注重了学生的全面发展,并倡导了实践育人的理念,培养学生的综…

字节码编程ASM之两数之和

写在前面 源码 。 看下如何使用ASM来写如下的类: package com.dahuyou.demo.asm;public class AsmSumOfTwo {public AsmSumOfTwo() {}public static void main(String[] var0) {int var1 (new AsmSumOfTwo()).sum(1, 2);System.out.println(var1);}public int su…

单段时间最优S型速度规划算法

一,背景 在做机械臂轨迹规划的单段路径的速度规划时,除了参考《Trajectory Planning for Automatic Machines and Robots》等文献之外,还在知乎找到了这位大佬 韩冰 写的在线规划方法: https://zhuanlan.zhihu.com/p/585253101/e…

ChatGPT自媒体创作秘籍:高效生成优质文章和视频

在这个信息爆炸的时代,自媒体已经成为人们获取信息、表达观点和分享生活的重要途径。而作为自媒体创作者,如何高效地生成优质内容,吸引更多的关注和互动,是每一个创作者都在思考的问题。今天,我将为大家分享利用ChatGP…

ComfyUI+PhotoMaker|一键创造个性化人物形象

ComfyUI和PhotoMaker,两款引领AI图像编辑潮流的软件,以其强大的功能和便捷的操作,深受广大艺术爱好者和专业人士的喜爱。本文将带你深入了解ComfyUI和PhotoMaker的结合使用,助你轻松打造个性化人物形象,让你的作品更加…

海富泰可直动式比例阀控制器EVRD-03C26SB-C1D24-B00

控制EVOTEK海富泰可直动式及先导式比例方向阀EVRD-03A04SA-C1D24-V00、EVRD-03C08SB-C1D24-B00、EVRD-03A16SA-C1D24-V00、EVRD-03C26SB-C1D24-B00、EVRD-05A30SA-C1D24-V00、EVRD-05C60SB-C1D24-B00、EVRD-P05A80SA-IIC1D24-B00、EVRD-P07C100SB-EEC1D24-V00、EVRD-P07A150SA-…

靠!AI绘画月入过万!是否现实?

前言 AI人工智能已经出现在了越来越多领域中,比如最近一段时间,AI绘画就受到了许多人的关注,一来,其背后隐藏的版权问题、替代性问题引发了人们的广泛讨论,再者,AI绘画在短期时间内成为了流量密码&#xf…