【问题标题】:What are the pre-processing requirements on cosine similarity?余弦相似度的预处理要求是什么?
【发布时间】:2013-02-12 11:13:30
【问题描述】:

余弦相似度的输入是代表我要比较的两个不同数据的两个向量。对向量的语义有要求吗?它可以简单地是每个文件的字节表示。然后计算每个字节的频率?这有意义吗?或者应该有一个文件的矢量化,其中每个维度不是来自文件的原始数据,而是一些元数据作为每个术语的频率,如果我们针对文本文件或 tf-idf 编码模型说话?换一种说法:为了“正确”,余弦相似度是否要求对数据进行复杂的预处理步骤,或者我可以将其作为输入整数值给出,表示我的数据的每个字节,而不考虑文本或只是频率每个字节的术语?

【问题讨论】:

    标签: similarity cosine-similarity


    【解决方案1】:

    数据的“语义”至关重要。例如,假设您正在比较英文文本文档。对于大型文档,各种字母出现的频率大致相同,因此如果向量的元素表示字母的数量,您将难以区分文档。如果你的向量的元素代表字数,你会得到更好的结果。如果向量的元素代表“词干”单词的数量,那就更好了。等等。

    余弦相似度是一种“愚蠢”的统计度量 - 由您决定是否给它一些有意义的比较。

    【讨论】:

    • 如果我想比较记录并且每个向量由数字数据、布尔值和字符串组成怎么办?即:[number][number][string][boolean]
    • @Curious - 我不确定你在问什么。您能否提供一个简短的示例,展示您正在考虑的一些矢量表示?
    • 假设我有两条记录。 r1=234,1023,不,今天是星期天。和 r2=876,423,是的,明天我要离开。我如何计算这两条记录的余弦?我如何计算它们的向量?我将逐个字符地获取它们的 ascii 表示并制作一个向量?那么没有语义和余弦可能会给出不准确的结果
    • @Curious - 向量的每个位置元素必须测量感兴趣实体的特定属性/特征。在您的示例中,这些元素可能代表 1)身高,2)体重,3)它吃肉 4)它吃的时候。由于余弦相似度是基于数字计算的,因此您可能必须将非数字转换为数字。例如,您可以使用 0、1 表示布尔值,使用 1 - 7 表示星期几。这种方法有几个问题。例如,不同属性的数量比例不同。此外,您不能指出第 1 天接近第 7 天。
    猜你喜欢
    • 2020-08-12
    • 2016-09-24
    • 2011-01-01
    • 2016-11-20
    • 2017-12-12
    • 2013-05-24
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多