加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

对不同数据类型的属性进行距离运算

(2014-10-26 00:26:11)
标签:

数据类型

距离

不同数据类型

分类: 智能算法
一、区间尺度变量(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作为区间标度变量值对待。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有