余弦相似度是分类还是聚类技术?

机器算法验证 机器学习 分类 聚类 文本挖掘 余弦相似度
2022-03-31 09:03:14

在文档分类中,余弦相似度被认为是分类还是聚类技术?但是您需要具有余弦相似度的训练数据来创建质心,对吗?

4个回答

不。

可以在任意向量之间计算余弦相似度。它是一种相似性度量(可以转换为距离度量,然后用于任何基于距离的分类器,例如最近邻分类。)

cosφ=abab

其中ab是您要比较的任何向量。

如果要进行 NN 分类,则将a作为新文档,将b作为已知样本文档,然后根据最相似的样本对新文档进行分类。

或者,您可以计算整个类的质心,但这会假设该类本身非常一致,并且质心是余弦距离的合理估计量(我对此不确定!)。NN 分类对您来说要容易得多,并且不太依赖于您的语料库本身就非常一致。

假设你有“运动”这个话题。一些文件会谈论足球,其他文件会谈论篮球,其他文件会谈论美式足球。质心可能毫无意义。为 NN 分类保留一些好的样本文档可能会更好。

当一个类由多个集群组成时,通常会发生这种情况。这是一个经常被误解的事情,类不一定等于集群。当多个类在数据中难以辨别时,它们可能是一个大集群。另一方面,如果一个类不是很统一,它很可能有多个集群。

聚类可以很好地从训练数据中找到好的样本文档,但还有其他更合适的方法。在有监督的情况下,有监督的方法总是比无监督的表现更好。

我想你还没有理解聚类和分类之间的区别。

文档分类(或监督学习)需要一组文档和每个文档的类别信息(例如:文档的主题)。分类的目标是建立一个模型,该模型可以预测类别(在此示例中为主题)未知的文档的类别。当模型应用于已知类的文档时,可以通过将预测的类与真实类(因此是监督的)进行比较来评估它们。用于训练但不评估模型的数据称为训练数据

文档聚类(或无监督学习)需要一组文档而不是类信息。目标是在数据中找到组/集群,以便

  • 根据指定的距离函数相似的文档在一个簇中。示例:包含大致相同关键字的文档。
  • 根据指定的距离函数不相似的文档在不同的簇中

生成的集群不能像分类模型一样进行评估,因为真正的集群是未知的(因此是无监督的)。因此,没有训练数据之类的东西,您只需使用所有数据来构建集群。

另请参阅:分类与聚类

现在这两种技术之间的联系,恕我直言,您的困惑来源:通过将文档聚类生成的集群定义为 class,可以在数据上训练分类模型。示例:如果您按单词对文档进行聚类,您可能会检测到生成的聚类确实在描述主题。现在您可以为该自动派生类构建分类模型。

最后,正如 Anony-Mousse 等人所说,余弦相似度可用于

余弦相似度函数返回向量之间的余弦。余弦是余弦,不应依赖于数据。然而,我们如何决定将一个对象(如文档)表示为一个向量很可能取决于数据。

通常,我们将文档表示为一个向量,其中每个维度对应一个单词。如果这个词没有出现,我们将值 0 分配给该维度。如果单词确实出现,则该值对应于该单词在文档中出现的次数,该次数由该单词在包含我们数据的所有文档中出现的次数标准化。这是 TF/IDF 背后的总体思路。由于不同的文档集将具有不同的单词分布,因此文档的 TF/IDF 矢量表示取决于您正在使用的特定文档集。

许多分类和聚类方法依赖于距离和相似性或对象之间距离的某种度量。如果他们这样做,那么他们可以使用余弦相似度。

相似性度量本身不是机器学习算法,但它们起着不可或缺的作用。从原始数据中提取特征后,选择类或由相似性度量的属性隐式定义的集群。

考虑欧几里得距离而不是余弦相似度可能会有所帮助。欧几里得距离是一种学习算法吗?不,但你可以用它来定义一个。