三元特征的距离测量

数据挖掘 聚类 距离
2022-03-09 18:32:19

我有一个由 100 个特征组成的数据集,每个特征都是三元的:如果它存在于一个类别中,则值为 -1,如果它不存在,则值为 0,如果它存在于第二个类别中,则值为 1。例如

F1 F2 F3 ... F90 F91 F92 ... F99 F100
0  0  0  ... 1   -1  0   ... 0   -1
0  -1 0  ... -1   0  1   ... 0   0

数据非常稀疏,100 个特征中约有 20 个特征的每行数据的值为 -1 或 1。我想通过热图可视化和树状图找到相似的数据行,但我对是否使用欧几里得距离或城市街区距离感到困惑。我对数据挖掘很陌生,在阅读scipy页面时,我发现了许多我不知道意味着什么的距离度量。我的数据集类型有一个好的距离度量吗?

4个回答

由于显然每个功能都在对两个不同类别的内容进行编码,因此我建议您应该将其替换为两个 features你的两个特点是(x,y)在哪里x根据是否存在于第一类中为 0 或 1,并且y根据是否存在于第二类中为 0 或 1。换句话说,你可以使用 -1、0 和 1,而不是(1,0),(0,0), 和(0,1), 分别。我认为这更接近真实数据,并且可能会产生更好的结果。它还可能使您的结果更易于解释。

然后,您可以尝试这两种距离指标,看看哪个更有帮助——但它可能不会产生很大的不同。

如果您将数据的每一行视为一个向量,那么“距离”(相似性)的合理方法将是cosine similarity这通常用于在协同过滤中查找用户-用户或项目-项目向量之间的相似性。

坦率地说,我认为在这种情况下,无论您使用城市街区还是Minkowski 距离的任何概括,只要在计算字符串/向量距离时度量不给出不同的预期值,我认为这并不重要。您可以使用城市街区距离,因为如果您有许多组合要计算,它的计算速度比欧几里得要快。

我认为这里也可以考虑汉明距离。

在信息论中,两个相等长度的字符串之间的汉明距离是对应符号不同的位置数。