数据的相似性和相异性我们可以怎么分析

摘要:
也就是说,我们需要一个标准来评估对象之间比较的相似性或不相似性,即数据的相似性和不相似性。数据矩阵和相异性矩阵说到相似性和相异性,我们首先来谈谈数据矩阵和不相似性矩阵。在我们了解了数据矩阵和相异性矩阵之后,我们将讨论测量不同数据属性相异性的方法。我相信通过以上介绍,我们对如何衡量数据的不同性和相似性有了一个基本概念。这是一种基本的聚类算法,具有广泛的应用。稍后我们将在讨论集群时提到它。

在数据挖掘中,在确定适用的算法模型之后,应该让我们的数据也能适用我们的算法。例如聚类,最近邻分类等算法,在这些算法中我们往往需要给我们的数据分类,相似的分为一类,不相似的分为不同类。 比如为了精准营销,商店需要建立顾客画像,得出具有类似特征(例如类似的收入,居住区域和年龄,职业等)的顾客组。也就是我们需要一个评判标准,评估对象之间比较的相似或不相似程度的标准,也就是数据的相似性和相异性。

数据矩阵和相异性矩阵

说到相似性和相异性,我们要先说说数据矩阵和相异性矩阵。

数据矩阵,上个图先看下。

数据的相似性和相异性我们可以怎么分析第1张

也叫对象-属性结构:这种数据结构用关系表的形式或 n*p ( n 个对象 p 个属)矩阵存放 n 个数据对象,每行对应一个对象 。

相异性矩阵,如图

数据的相似性和相异性我们可以怎么分析第2张

也叫对象-对象结构:存放 n 个对象两两之间的邻近度。 d(i,j)是对象i和对象j之间的相异性的度量。一般来说,d(i,j是个非负数)。当i和j高度相似或‘接近’时,它的值接近于0,越不同,这个值越大。

那么我们也可以由相异性度量推出相似性。例如,对于标称属性来说。

数据的相似性和相异性我们可以怎么分析第3张

我们了解完数据矩阵和相异性矩阵后,接下来讲讲不同数据属性的度量相异性的方法。我们在这里详细得讲了数据属性,每种属性的相异性度量是不一样的。

标称属性的临近性度量

标称属性可以取两个或多个状态。例如color是一个标称属性它可以有5种状态:黄,红,绿,粉红,蓝。两个对象i和j之间的相异性可以根据不匹配率来计算。如下图所示

数据的相似性和相异性我们可以怎么分析第4张

其中,i,j 是对象,m 是匹配的数目(就是 i 和 j 取值相同状态的属性数),而 p 是刻画对象的属性总数

数据属性的相异性

度量数据属性数据的相异性,有很多种方法。被广泛应用得有欧几里得距离,曼哈顿距离,闵柯夫斯基距。

计算前提是:我们应该让数据规范化。比如高度有可能是米或者寸,我们应该先统一它们的单位。规范化方法我们在数据预处理的时候会讲。这里我们知道什么是规范化就可以了。

最流行的距离度量是欧几里得距离公式,如下所示

数据的相似性和相异性我们可以怎么分析第5张

其中Xi1,Xi2分别是i对象的属性们,Xj1,Xj2分别是j对象的属性们。 另一个著名的度量方法是曼哈顿距离,如下

数据的相似性和相异性我们可以怎么分析第6张

二元属性的邻近性度量

我们先来讲讲对称和非对称二元属性刻画的对象间的相异性和相似度度量。那么我们怎么计算两个二元属性之间的相异性呢。

前文我们说到二元属性只有两种状态:0 或 1.例如患者的属性smoker,1表示抽烟,0表示不抽烟。假如所有的二元属性都看做具有相同的权重,则我们可以得到一个行列表 如图

数据的相似性和相异性我们可以怎么分析第7张

上图中, q 是对象 i 和 j 都取 1 的属性数,r 是在对象 i 中取 1,在对象 j 中取 0 的属性数,s 是在对象 i 中取 0,在对象 j 中取 1 的属性数,而 t 是对象 i 和对象 j 中都取 0 的属性数。属性的总数 p,

其中 p=q+r+s+t。

对称的二元属性,每个状态都同样重要,因此基于二元属性的相异性称作对称的二元相异性。如果对象i和j的相异性都用对称的二元属性刻画,则i和j的相异性为,如图所示 

数据的相似性和相异性我们可以怎么分析第8张

那么对于不对称的二元属性,,两个状态不是一样重要的。取值为0 的意义很小,我们可以忽略不计,我们称作非对称的二元相似性。所以i和j的相异性为,如图所示

数据的相似性和相异性我们可以怎么分析第9张

这个也叫 Jaccard系数,它是比较常用的一个系数。

接下来我们来看看如何利用我们上面所说的度量方法来度量患者之间的相异性

下面是一张患者记录关系表,如图

数据的相似性和相异性我们可以怎么分析第10张

假如一个患者的记录表包含属性name(姓名),gender(性别),fever(发烧),cough(咳嗽),test-1,test-2,test-3,test-4。其中name是对象标识符,gender是对称属性。其它的属性都是非对称二元。

对于非对称属性,值 Y (yes)和 P (positive)被设置为 1,值 N (no)被设置为 0.假设三个对象之间的距离只基于非对称属性来计算。那么三个患者 Jack,Mary,Jim 两两之间的距离 d(Jack,Jim) = ?

分析:

Jack和Jim之间的非对称属性fever(1,1),cough(0,1),test-1(1,0),test-2(0,0),test-3(0,0),test-4(0,0),根据非对称属性相异性的算法,我们不把(0,0)列入参考, q(1,1)的个数为 1, r(1,0)的个数为1,s(0,1)的个数为 1,根据非对称属性

d(i,j)=(r+s)/(q+r+s) 得出

d(Jack,Jim) = (1 + 1)/(1 + 1 + 1) = 0.67

同理我们能得出:

d(Jack,Mary)=(0 + 1)/(2 + 0 + 1) = 0.33

d(Jim,Mary)= (1 + 2)/(1 + 1 + 2) = 0.75

最后比较得出

数据的相似性和相异性我们可以怎么分析第11张

因此这些度量显示 Jim 和 Mary不大可能患类似的疾病,因此他们具有最高的相异性以及Jcak和Mary最有可能患类似的疾病。

相信通过上面的介绍,我们基本对如何度量数据的相异性和相似性有一个基本的概念,这是聚类的一个基础算法,有着广泛的应用,后面我们讲聚类的时候会在提及。

推荐阅读 :
从分治算法到 MapReduce
Actor并发编程模型浅析
大数据存储的进化史 --从 RAID 到 Hadoop Hdfs
一个故事告诉你什么才是好的程序员

数据的相似性和相异性我们可以怎么分析第12张

更多干货,欢迎关注公众号,哈尔的数据城堡,关注免费领取学习资料~

免责声明:文章转载自《数据的相似性和相异性我们可以怎么分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇后台返回的json数据传到前端页面并在页面的表格中填充设置VMWare虚拟机使拷贝虚拟机后固定原有的IP地址下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VTK 空间几何变换(Transform),平移、旋转和缩放

先看下面的模型,这是一个Cow的三维模型, 在使用中,你是否会有下面的操作? 1.将Cow移动到某个位置——平移 2.转动到Cow背面——旋转 3.改变它大小——缩放 等等 可能你会说,这还不简单,通过操作相机就好了。然而并不是这样,操作相机,只使得相机的空间位置发生了变化,对三维物体并没有改变,要想改变模型,就需要对模形本身做空间变换。 空间变换的基础...

python 根据二维数组画出彩色图像

方法:采用seaborn中的heatmap importseabornimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltnew_show=pd.DataFrame(new_show) fig=plt.figure seaborn.heatmap(new_show) plt...

jenkins全局安全设置

         如何进入安全设置界面          在Jenkins的主界面,点击 configure Global Security 选项,进入Jenkins的系统安全设置界面。安全界面如下图。在这里我们分别介绍各个选项的功能。            启用安全          启用安全,如果启动此项,你必须使用用户名/密码登录才能配置和执行构建...

机器学习笔记(6)-降维

机器学习笔记(6)-降维 这一节我们来讲降维算法,主要介绍下主成分分析(principle component analysis,PCA),介绍之前先简单复习下矩阵分解和方差、协方差等概念。 均值(mean) 描述的是样本集合的中间点,一般所谓的数据中心化就是样本值减去均值。 [ar x=frac{sum_{i=1}^{n}x_{i}}{n} ] 方差...

delphi 数组定义

在c语言中 有:a[5]={1,2,3,4,5} ; 那么在 delphi中,这个数组的赋值该怎么写?? 问题补充:下面有人说的对,我就是想在声明数组的时候赋初值,至于初值的内容你们不需要知道,我想知道的只是申明的时候赋值的格式,而不是通过一个过程去实现 var  a:=array[1..5] of integer=(1,2,3,4,5) 只有全局变量才能...

OpenCV-C++ Mat对象的使用

这一篇文章中主要介绍有关Mat类的使用,主要包括: 通过构造函数定义Mat对象; Mat对象常用属性以及方法 创建一个空白图像并进行赋值 创建一个小数组 通过构造函数定义Mat对象 Mat中提供了很多的构造函数,这里使用两种方式: Mat(Size size, int type); Mat(int rows, int cols, int type, c...