创建手动相似度测量

如需计算两个示例之间的相似度,您需要将这两个示例的所有特征数据合并为一个数值。

例如,假设某个鞋类数据集只有一个特征:鞋码。您可以通过计算不同鞋子大小之间的差异来量化两只鞋子的相似程度。鞋子尺码之间的数字差异越小,鞋子之间的相似度越高。这种人工相似度衡量方法称为手动相似度衡量

如果您想通过尺寸和颜色找出鞋子之间的相似之处,该怎么办?颜色是分类数据,很难与数值大小数据结合使用。我们会发现,随着数据变得越来越复杂,创建手动相似度衡量措施会变得更加困难。当您的数据变得足够复杂时,您将无法创建手动衡量。在这种情况下,您需要切换到监督式相似性测量,即监督式机器学习模型计算相似度。

我们稍后会使用监督式相似度衡量指标,并侧重于此处的手动衡量指标。目前,请记住,如果您在创建手动相似度测量值时遇到问题,请切换到监督式相似度测量。

为了了解手动相似度衡量机制的工作原理,我们来看一下鞋子的示例。假设该模型有两个特征:鞋子尺码和鞋子价格数据。 由于这两个特征都是数字,因此您可以将其组合为一个表示相似性的数值,如下所示。

  • 大小:鞋子大小可能构成高斯分布。确认这一点。 然后对数据进行归一化。
  • 价格 (p):数据可能是泊松分布。确认这一点。如果您有足够的数据,请将数据转换为分位数,并调节为 \([0,1]\)。
  • 使用均方根误差 (RMSE) 合并数据。 在此示例中,相似度为 \(\sqrt{\frac{s^2+p^2}{2}}\)。

举个简单的例子,我们计算美国两种尺码(美国尺码 8 和 11,价格为 120 和 150)的相似度。因为我们没有足够的数据来了解分布,所以我们只会缩放数据,而不进行归一化或使用分位数。

操作方法
缩放大小。 假设鞋的大小上限为 20。将 8 和 11 除以最大大小 20,即可得到 0.4 和 0.55。
调整价格。 将 120 和 150 除以最高价格 150,得到 0.8 和 1。
找出差距。 \(0.55 - 0.4 = 0.15\)
找出差价。 \(1 - 0.8 = 0.2\)
找到 RMSE。 \(\sqrt{\frac{0.2^2+0.15^2}{2}} = 0.17\)

直观地说,特征数据变得相似时,测量的相似性应增加。实际上,测量得出的相似度会降低。从 1 中减去,使测量后的相似度遵循您的直觉。

\[\text{Similarity} = 1 - 0.17 = 0.83\]

通常,您可以按照准备数据中所述准备数值数据,然后使用欧几里得距离组合数据。

如果您有分类数据,该怎么办?分类数据可以是:

  • 单值(单价),例如汽车颜色(“白色”或“蓝色,但绝不会同时使用”)
  • 多值(多值),例如电影类型(可以是“action”和“comedy”,也可以只是“action”)

如果一元数据匹配,相似度为 1;否则为 0。多价数据更难以处理。例如,电影类型可能并非易事。为解决此问题,我们假设电影是按一组固定的类型分配的。使用常见值的比率计算相似度,称为 Jaccard 相似度

示例:

  • [“喜剧”、“动作”] 和 [“喜剧”、“动作”] = 1
  • [“喜剧”“动作”] 和 [“动作”] = 1⁄2
  • [“喜剧”、“动作”] 和 [“动作”、“戏剧”] = 1⁄3
  • [“喜剧”、“动作”] 和 [“非小说”、“传记”] = 0

下表提供了另外几个如何处理分类数据的示例。

示例
邮政编码 表示彼此靠近的区域的邮政编码应具有较高的相似度。如需对计算此相似度所需的信息进行编码,您可以将邮政编码转换为纬度和经度。对于一对邮政编码,请分别计算其纬度和经度之间的差异。然后,添加差异以获得单个数值。
颜色 假设您将颜色数据作为文本。将文本值转换为数值 RGB 值。现在,您可以找到两种颜色的红色、绿色和蓝色值之间的差异,并使用欧几里得距离将差异转换为数值。

一般来说,您的相似度测量必须直接对应于实际的相似度。如果您的指标没有,则表明它没有对必要的信息进行编码。上述示例将邮政编码转换为纬度和经度,因为邮政编码本身没有对必要的信息进行编码。

在创建相似度衡量之前,请谨慎处理您的数据。虽然此页面上的示例依赖于简单的小型数据集,但大多数实际数据集要大得多、复杂得多。请注意,分位数是处理数值数据的理想默认选项。