本文亮点:使用python实现了书中涉及的标称属性,二元属性,数值属性,序数属性和混合属性的距离计算。talk is cheap, this is my code ,请在我们公众号"数据臭皮匠"后台回复"第二章3"获取本文涉及的代码、思维导图、数据集等资料
在诸如聚类、离群点分析和最近邻分类等数据挖掘应用中,我们需要评估对象之间的相似程度或不相似程度。典型的,相似性值介于0到1之间,如果两个对象i,j完全相同,相似性为1;完全不同,相似性为0,相异性则反之。
由于书中使用的名词相对拗口, 本文使用的名词会与书中有所不同, 比如使用相似性代替临近性, 距离代替相异性等。
1.数据矩阵和相异性矩阵
假设我们有n个对象,被p个属性(又称维或特征,如年龄、身高、体重或性别)刻画。这些对象是
数据矩阵
具有n个对象p个属性的数据矩阵
相异性矩阵
其中d(i,j) 是对象i和对象j之间的距离(distance) 或称为相异性度量, 一般而言, d(i,j) 是一个非负值, 对象i,j 高度相似时, d(i,j) 接近于0 , 即距离接近于0 且d(i,j) = d(j,i) , 所以下面相异性矩阵只显示对角线左下部分。
对象i,j的相似性度量sim(i,j)可以表示成相异性度量d(i,j)的函数, 即:
sim(i,j) = 1- d(i,j)
2. 标称属性的相似性度量
在之前的文章(见文末链接第二章2)中,我们讲到了标称属性的定义, 简单讲, 标称属性是枚举型类别变量, 类别间无先后顺序, 如颜色: 红橙黄绿青蓝紫
如何计算标称属性所刻画的对象之间的相异性?
距离:
其中m为对象i,j相同的属性数, p为对象的属性总数(即对象i有p个属性)
计算标称属性距离举例