手动相似度衡量

如刚才所示,k-means 会将点分配给它们最近的质心。但“最接近”是什么意思?

如需将 k-means 应用于特征数据,您需要定义一种将所有特征数据合并为单个数值的相似度衡量标准,称为手动相似度衡量标准

考虑一个鞋子数据集。如果该数据集的唯一特征是鞋码,则您可以根据两只鞋的尺寸差异来定义两只鞋的相似性。尺码之间的数值差异越小,鞋子之间的相似度就越高。

如果该鞋子数据集包含两个数值特征(尺码和价格),您可以将它们组合成一个表示相似度的数字。首先,对数据进行缩放,使这两个特征具有可比性:

  • 尺码:鞋码可能呈现高斯分布。请确认这一点。 然后对数据进行归一化。
  • 价格 (p):数据可能采用泊松分布。请确认这一点。如果您有足够的数据,请将数据转换为百分位数并缩放到 \([0,1]\)。

接下来,通过计算均方根误差 (RMSE) 来组合这两个特征。此粗略的相似度衡量方法由\(\sqrt{\frac{(s_i - s_j)^2+(p_i - p_j)^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\)

直观地讲,特征数据越相似,相似度衡量值就应该越高。相反,相似度衡量值 (RMSE) 实际上会降低。将相似度测量值从 1 中减去,使其符合直觉。

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

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

如果该数据集同时包含鞋码和鞋子颜色,该怎么办?颜色属于分类数据,如需了解详情,请参阅机器学习速成课程中的处理分类数据部分。分类数据更难与数值大小数据结合使用。它可以是:

  • 单值(单值),例如汽车的颜色(“白色”或“蓝色”,但不能同时是这两种颜色)
  • 多值(多元),例如电影的类型(一部电影既可以是“动作片”,也可以是“喜剧片”,或者仅是“动作片”)

如果单值数据匹配(例如,两双蓝色鞋子),则示例之间的相似性为 1。否则,相似度为 0。

多值数据(例如电影类型)较难处理。如果电影类型是固定的,则可以使用共同值的比率来计算相似度,称为 Jaccard 相似度。Jaccard 相似性计算示例:

  • [“comedy”,”action”] and [“comedy”,”action”] = 1
  • [“comedy”,”action”] and [“action”] = ½
  • [“comedy”,”action”] and [“action”, "drama"] = ⅓
  • [“comedy”,”action”] and [“non-fiction”,”biographical”] = 0

Jaccard 相似度并非对分类数据进行手动相似度衡量的唯一可能方法。下面是另外两个示例:

  • 在计算邮政编码之间的欧几里得距离之前,可以将其转换为纬度和经度。
  • 颜色可以转换为数值 RGB 值,并将值差异组合为欧几里得距离。

如需了解详情,请参阅处理分类数据

一般来说,手动相似度衡量标准必须直接与实际相似度相对应。如果您选择的指标不符合上述条件,则表示该指标未编码您希望编码的信息。

请先仔细预处理数据,然后再计算相似度测量值。本页面上的示例进行了简化。大多数现实世界的数据集都非常庞大且复杂。如前所述,对于处理数值数据,四分位数是一个不错的默认选择。

随着数据复杂性的增加,手动创建相似度衡量标准的难度也会增加。在这种情况下,请改用监督式相似度衡量方法,其中监督式机器学习模型会计算相似度。我们稍后会对此进行详细讨论。