我们如何衡量分类数据之间的相似距离?

sta*_*icx 5 distance similarity categorical-data

我们如何衡量分类数据之间的相似距离?

示例:性别:男、女 数值:[0 - 100]、[200 - 300] 字符串:专业人士、初学者等,...

提前致谢。

Kas*_*ols 6

有不同的方法可以做到这一点。最简单的方法之一如下。

1) 为每个属性分配数值,以便顺序尽可能与属性背后的含义相匹配。如果可以测量属性,那么将属性值从低到高排序很重要。如果不可能并且财产是分类的(如性别、职业等),只需为每个可能的值分配数字。

P1 - Gender
-------------------
0 - Male
1 - Female

P2 - Experience
-----------
0 - Beginner
5 - Average
10 - Professional

P3 - Age
-----------
[0 - 100]

P4 - Body height, cm
-----------
[50 - 250]
Run Code Online (Sandbox Code Playgroud)

2) 对于每个概念,找到比例因子和偏移量,以便所有属性值都落在相同的选定范围内,例如 [0-100]

Sx = 100 / (Px max - Px min)
Ox = -Px min
Run Code Online (Sandbox Code Playgroud)

在提供的示例中,您将获得:

S1 = 100
O1 = 0

S2 = 10
O2 = 0

S3 = 1
O3 = 0

S4 = 0.5
O4 = -50
Run Code Online (Sandbox Code Playgroud)

3) 现在您可以创建一个包含所有属性值的向量。

V = (S1 * P1 + O1, S2 * P2 + O2, S3 * P3 + O3, S4 * P4 + O4)
Run Code Online (Sandbox Code Playgroud)

在提供的样本中,它将是:

V = (100 * P1, 10 * P2, P3, 0.5 * P4 - 50)
Run Code Online (Sandbox Code Playgroud)

4) 现在您可以通过从另一个中减去一个来比较两个向量 V1 和 V2。结果向量的长度将说明它们的不同之处。

delta = |V1 - V2|
Run Code Online (Sandbox Code Playgroud)

通过减去每个维度来减去向量。向量长度可以计算为向量维数平方和的平方根。

假设我们有 3 个人:

John
P1 = 0 (male)
P2 = 0 (beginner)
P3 = 20 (20 years old)
P4 = 190 (body height is 190 cm)

Kevin
P1 = 0 (male)
P2 = 10 (professional)
P3 = 25 (25 years old)
P4 = 186 (body height is 186 cm)

Lea
P1 = 1 (female)
P2 = 10 (professional)
P3 = 40 (40 years old)
P4 = 178 (body height is 178 cm)
Run Code Online (Sandbox Code Playgroud)

向量将是:

J = (100 * 0, 10 * 0, 20, 0.5 * 190 - 50) = (0, 0, 20, 45)
K = (100 * 0, 10 * 10, 25, 0.5 * 186 - 50) = (0, 100, 25, 43)
L = (100 * 1, 10 * 10, 40, 0.5 * 178 - 50) = (100, 100, 40, 39)
Run Code Online (Sandbox Code Playgroud)

为了确定我们需要减去向量:

delta JK = |J - K| =
= |(0 - 0, 0 - 100, 20 - 25, 45 - 43)| = 
= |(0, -100, -5, 2)| =
= SQRT(0 ^ 2 + (-100) ^ 2 + (-5) ^ 2 + 2 ^ 2) = 
= SQRT(10000 + 25 + 4) = 
= 100,14

delta KL = |K - L| = 
= |(0 - 100, 100 - 100, 25 - 40, 43 - 39)| = 
= |(-100, 0, -15, 4)| =
= SQRT((-100) ^ 2 + 0 ^ 2 + (-15) ^ 2 + 4 ^ 2) =
= SQRT(10000 + 225 + 16) =
= 101,20

delta LJ = |L - J| = 
= |(100 - 0, 100 - 0, 40 - 20, 39 - 45)| = 
= |(100, 100, 20, -6)| =
= SQRT(100 ^ 2 + 100 ^ 2 + (20) ^ 2 + (-6) ^ 2) =
= SQRT(10000 + 10000 + 400 + 36) =
= 142,95
Run Code Online (Sandbox Code Playgroud)

从这里您可以看到 John 和 Kevin 比其他任何人都更相似,因为 delta 更小。


小智 6

有许多方法可用于查找分类数据之间的相似性。下文将简要讨论这些措施。

https://conservancy.umn.edu/bitstream/handle/11299/215736/07-022.pdf?sequence=1&isAllowed=y

如果您尝试在 R 中执行此操作,则有一个名为“nomclust”的包,它具有所有这些可用的相似性度量。

希望这可以帮助!

  • 是否有这篇论文的工作链接? (2认同)