出处: https://youtu.be/e9U0QAFbfLI?si=_RPCpqGtrbBDbZ3G
我认为 cosine 很好,所以我们将在这一行和那一行之间计算它,那个问题。你好,我是Josh Starmer,欢迎来到堆栈探索。今天我们将讨论余弦相似性,当你构建并部署时,你会清楚地理解它。非常棒的内容。它真的是一种快速且轻量级的工具。现在,光线,这个堆栈探索也由字母A,B和C,A提供支持。永远保持好奇,始终保持好奇。
想象一下,我们看到了关于1990年热门电影《巨魔2》的这些句子。很容易看出前三个句子彼此相似。它们都表达了对这部电影的正面情感。相比之下,最后一句话来自不喜欢《巨魔2》的人。当我们没有太多句子时,很容易看出哪些句子相似,哪些不同。
然而,如果我们收集了过去一个月的所有Twitter流量,我们如何确定推文之间的相似性和差异?在这种情况下,我们不能再依靠肉眼,而是必须让计算机来做这件事。
这就是余弦相似性派上用场的地方。余弦相似性是一个相对容易计算的指标,可以告诉我们事物之间的相似或不同之处。
为了了解余弦相似性的工作原理,让我们从一个超级简单的例子开始。这里我们想知道短语“hello world”与“hello”的相似程度。
所以我们要做的第一件事是为出现在短语“hello”和“world”中的单词制作一张表。在第一个短语“hello world”中,我们看到单词“hello”一次,单词“world”一次。相比之下,在第二个短语中,“hello”,我们只看到单词“hello”一次,我们根本没有看到单词“world”。
现在,鉴于每个短语中每个单词的计数表,我们可以创建一个二维图,其中x轴表示我们看到单词“hello”的次数,y轴表示我们看到单词“world”的次数。现在,由于第一个短语“hello world”每个单词各出现一次,我们可以在图的中心为它绘制一个点。相比之下,第二个短语的点,“hello”,位于x轴上的1处。
现在,如果我们从图的原点(0,0)到这些点画线,我们可以看到两条线之间的角度为45度,45度的余弦值为0.71,因此,“hello world”和“hello”之间的余弦相似性就是45度的余弦值,等于0.71。
注意,目前第二个短语是“hello”,但如果它是“hello”,“hello”,“hello”呢?现在表中“hello”出现了三次,因为它在短语中出现了三次,但我们仍然有“world”的计数为零。在这种情况下,代表“hello”,“hello”,“hello”的图上的点会进一步远离x轴。然而,两条线之间的角度仍然是45度,因此余弦相似性与我们之前得到的结果完全相同。45度的余弦值等于0.71。
换句话说,余弦相似性完全由两条线之间的角度决定,而不是由线的长度决定。砰!
现在,如果两个短语都是“hello world”,那么它们完全相同,我们最终会在图上将代表这两个短语的点重叠在一起,形成一种泥泞的绿色。从原点到这些点的线之间的角度为0度,余弦相似性是0度的余弦值,等于1。所以当两个短语完全相同时,它们之间的角度将是0度,余弦相似性为1。
相反,如果短语没有任何共同的单词,例如这里,第一个短语是“hello”,第二个短语是“world”,那么这两个短语之间的角度将是90度,余弦相似性将是90度的余弦值,等于0。
总结一下,当两个短语完全没有共同点时,余弦相似性为0,当短语完全相同时,余弦相似性为1,当两个短语有一些重叠但不完全相同时,余弦相似性介于0和1之间。双倍砰!
现在,我们计算余弦相似性的方式,步骤一,制作单词计数表,步骤二,绘制点,步骤三,找出角度,最后,步骤四,计算角度的余弦值相当繁琐。
好消息是有一个相对简单的公式,可以在计算机上快速计算出直接从单词计数表得出的余弦相似性。叮当,这个方程看起来很复杂。别担心,蹲下会一步一步地解释它。谢谢。
这些西格玛是加总许多东西的简写。i是索引的缩写,用于跟踪我们正在处理的单词。i最初设置为表中的第一个单词。在这种情况下,第一个单词是“hello”。
n是不同单词的数量。以及短语。在这种情况下,n等于2,因为我们有两个单词,“hello”和“world”。
最后,a和b指的是两个短语。在这种情况下,让我们让a是第一个短语,“hello world”,b是第二个短语,“hello”。
当i等于1时,我们插入第一个单词“hello”的单词计数。“hello”。当i等于2时,我们插入第二个单词“world”的单词计数。当我们进行计算时,我们得到0.71,这与我们取45度余弦时得到的值相同。砰!
注意,当我们的表中只有两个不同的单词时,就像我们在这里所做的那样,我们可以轻松地在二维图上绘制这些点,因为我们可以在x轴上放置一个单词,比如“hello”,第一个维度,另一个单词“world”放在y轴上,第二个维度。
但是当我们有包含超过两个不同单词的短语时,我们需要超过两个维度来绘制这些点。
例如,如果我们想计算这两个短语的余弦相似性,其中第一个短语“I love troll two”是短语a,第二个短语“I love Jim Coata”是短语b,那么表中将有五个不同的单词。这意味着我们需要一个五维图来绘制这些点。我不知道如何绘制五维图。
好消息是这是拥有余弦相似性的另一种方便之处。我们不需要担心如何绘制五维图,
我们只需将数字代入方程,然后进行计算,结果为0.58。因此,这两个短语之间的余弦相似性为0.58,三倍砰!
总结一下,余弦相似性是一个相对容易计算的指标,可以告诉我们事物之间的相似或不同之处。
注意,如果你还没有看过,Jim Coata是一部精彩的1985年体操电影,讲述了一位体操运动员使用双杠击败敌人的故事。砰!
现在是时候进行一些无耻的自我宣传了。如果你想离线复习统计学和机器学习,请查看堆栈探索PDF学习指南和我的书,《堆栈探索插图版机器学习指南》可在stack qudot.org找到。这里有适合每个人的内容,对吧?我们已经到了另一个激动人心的堆栈探索的结尾。如果你喜欢这个堆栈探索,并希望看到更多,请订阅。如果你想支持堆栈,考虑为我的Patreon活动捐款,成为频道会员,购买我原创的一两首歌曲、T恤或连帽衫,或者只是捐赠。链接在下方描述中。好了,下次见。继续探索。