一、区间尺度变量(Interval-Scaled Variable)
区间尺度变量包含int、float的数据类型,具体包括重量、高度、年龄等,两个变量之间具备可比性,是最常见的变量类型。
一般使用z-score对区间尺度变量进行标准化,以下是它的计算过程
1、计算对象属性的平均值
M = (x1 + x2 + ... + xn) /
n
2、计算平均绝对偏差(Mean Absolute Deviation)
Sf = (|x1 - M| + |x2 - M| +
... + |xn-M|)/n
其中,x1,x2,...,xn是对象的属性值,M为所有属性的平均值。
3、计算z-score值
zi = (xi - M) / Sf
二、二元变量(Binary Variable)
二元变量就是我们常用的Boolean型变量,一个二元变量只有两个状态:0或1,true或false。
一般使用简单匹配系统来定义二元变量属性的差异性。
1、建立交叉表
true false
true
q
r
false
s
t
q表示两个对象之间,同一属性都为true的数量,同理可表示t;
r表示两个对象之间,同一属性,A为true,B为false,同理可表示s。
2、计算简单匹配系数
d(A, B) = (r + s) / (q + r +
s + t)
三、名义变量(Nominal Variable)
名义变量是二元变量的推广,常见的是枚举类型的数据变量,可以具有多于两个的状态值,也是常用的数据类型之一。例如我们经常使用的颜色、国家、地区、运营商等。
名义变量两个对象A和B之间的差异度可以用简单匹配法来计算
d(A, B) = (p - m) / p
其中,p为属性的总数,m为A和B的属性中相同属性的个数。
四、序列型变量(Ordinal Variable)
序列型变量在日常生活中最常见为时间序列变量,其实还有职业的发展顺序等等,序列型变量不仅仅关心数据的值,还关心数据的排序顺序。
序列型变量中的数据类型可以包括以上三种变量,但是一般都将它们离散化为名义变量进行处理。
计算序列型变量的差异性,可以通过z-score来实现,具体计算步骤如下:
1、假设一个变量 f 有 Mf 个状态,这些有序的状态定义了一个序列
1,…,Mf
2、用对应的 rif代替 xif, rif∈ {1,…,Mf}。
3、通过用 z if 代替 rif 来实现
Zif=(rif–1) / (Mf-1)
4、使用Zif替换原来的变量f即可。
五、混合类型变量
一般数据库中的变量,都是混合类型变量,很难找到一种纯数据的表了,因此,我们在计算对象间的距离的时候,90%以上,都是需要涉及到混合类型变量的距离。以下是处理混合类型变量的距离的步骤:
这个公示比较大,以下慢慢地说:
其中,p为变量的个数,如果 xif或 xjf 缺失(即对象 i 或对象 j 没有变量 f
的度量值),或者 xif =xjf=0,且变量 f 是不对
称的二元变量,则指示项 δij(f)=0;否则,指示项 δij(f)=1 。
1、如果 f 是二元或名义变量:如果 xif =xjf, dij(f) =0;否则
dij(f)=1 ;
2、如果 f 是区间标度变量: dij(f)= |xif-xjf|/
(maxhxhf-minhxhf),这里的 h 包含了所有有变量 f 值的对象;
3、如果 f 是序数型或者比例标度型变量:计算秩 rif和 zif = (rif – 1) /
(Mf-1),将 zif作为区间标度变量值对待。
加载中,请稍候......