特征与常见的特征距离度量

特征与常见的特征距离度量,第1张

本节,我们将介绍什么是特征,特征的分类以及常见的特征距离度量和它的简单实现。

在机器学习和模式识别中,特征是被观测对象的可测量性能或特性。在模式识别,分类和回归中,信息特征的选择,判别和独立特征的选择是有效算法的关键步骤。特征通常是数值型的,但语法模式识别可以使用结构特征(如字符串和图)。“特征”的概念与线性回归等统计技术中使用的解释变量有关。

以上内容来自于 维基百科 。

关于特征,特征工程这块内容很广泛,在业界广泛流传这么一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

这里,我们也不会对特征做太多学术上的叙述,只是结合例子对特征做一些简单的描述。

特征,可以认为是描述事物的一个特性。比如说我们描述一个人,可以使用的特征很多,身高,体重,性别等等,这些特征往往都会有相应的值,身高(180 cm),体重(70 kg),性别(男,女)。这些特征描述了一个人的基本特性,通过身高,体重,我们想象一个人大致的轮廓。比如简历或者病历,HR可以通过简历上的内容,了解到你的经历,例如学历,实习经历,年龄等等。同样地,医生可以通过病历上面的各项指标和参数,知道你身体的大致情况,从而做出大致的判断了。

那么在机器学习里面呢,我们都会接触各种各样的数据集,不妨以西瓜数据集为例吧。

在这个csv数据集的第一行(除了第一个),都可以看作是一个个特征,那最后一个往往就是标签了,比如色泽就是西瓜的一个特征,色泽就会有相应的特征值,如青绿,乌黑,浅白,对于密度这个特征呢,它的取值就是连续的浮点数了。这些特征都可以描述西瓜的一部分,而好瓜作为标签,决定了瓜的种类,它的取值便是好坏与否了。

接下来我们将介绍特征的分类。

在简单认识了特征后,我们就可以对特征分类了,从上面的西瓜数据集可以看出,每个特征都有相应的取值,描述西瓜的一部分。而是不同特征还是有一些区别的,比如色泽和密度,区别很明显,而有些区别,却不明显,如敲声,虽然它和密度不一样,但是我们还是可以感觉出一种“程度”,混响和沉闷之间还是有“程度”上的区别的,纳睁橡尽管它不如密度那样直观。

现在,我们对特征做个简单的分类吧,这里我们对特征和属性不作区分,即两者的代表意思相同。

通常,我们可以将特征划分为"连续特征"和"离散特征"。

“连续特征”在定义域上有无穷多个可能的取值,比如说密度这个特征,它有无穷多个取值;而“离散特征”在定义域上是有限个取值,比如性别,只有男女之分,调查问卷中的等级之分等等。

但是呢,在距离度量时,特征上“序”的概念,或者说“程度”也是很重要的。在连续特征上,不同特征值的大小关系是很明显的,密度值的不同带来的序的关系显而易见,对于离散特征,尽管它的取值是有限个,但是序的概念依然存在。

例如,调查问卷中常见的评分标准,{"差","较差","一般","较好","好"}的离散属性与连续属性更接近一些,我们能明显感知出"好","较好"的距离比"好","一般"更近一些。这样的特征称为“有序特征”;而诸如颜色(不考虑不同颜色对应的值),交通方式这样的特征,它们的定义域也是有限的,如交通方式{"飞机","火车","轮船","汽车"},它们没有明显的序的概念,称为“无序特征”。

至此,我们可以对特征简单地分类:

对于函数 ,我们首先看看距离度量需要满足的一些基本性质:

需注意的是,通常我们是基于某种形式的距离来定义"相似度度量",距离越大,相似度越小。然而,用于相似度度量的距离未必定要满足距离度的所有基本性质,尤其是直递早棚性。例如在某些任务中我们可能希望有这样的相似度度量:"人","马"分别与"人马"相似,但"人"与"马"很不相似;要达到这个目的,可以令 "人","马"与"人马"之间的距洞旁离都比较小 但"人"与"马"之间的距离很大,此时该距离不再满足直递性;这样的距离称为"非度量距离"。

如图:

接下来,我们将介绍常见的特征距离度量,第一个是针对无序特征的,其他的是针对连续特征和离散特征中的有序特征的度量方式。

在介绍连续特征和离散特征中的有序特征的度量方式前,我们先简单约定一些符号。

都是 维空间上的向量。

表示 和 之间的距离。

使用matlab实现部分度量方式。

对无序属性可采用 VDM (Value Difference Metric)。令 表示在属性 上取值为 的样本数, 表示在第 个样本簇中在属性 上取值为 的样本数, 为样本簇数,则属性 上两个离散值 与 之间的 VDM 距离为:

这个是我们从小到大接触的最多的距离了,其公式为:

matlab程序:

标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。标准欧氏距离将各个分量都“标准化”到均值、方差相等。

假设样本集X的均值为 ,标准差为 , 的“标准化变量”表示为:

标准化欧氏距离公式:

matlab程序:

切比雪夫距离为某一维度上的最大距离,其公式如下:

matlab程序:

曼哈顿距离也被称为“计程车距离”,或者说“城市街区距离”,它不是走两点之间的直线,而是类似于的街道这样的线段,其公式如下:

matlab程序:

闵可夫斯基距离是一组距离的定义,是对多个距离度量公式概括性的表述,其公式为:

当 ,为哈曼顿距离:

当 ,为欧氏距离:

当 ,为切比雪夫距离:

matlab程序如下:

马氏距离是基于样本分布的一种距离,其定义如下:

有 个样本向量 ,协方差矩阵为 ,均值记为向量 ,其中样本向量 到 的马氏距离为:

向量 与 的马氏距离为:

若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则 与 之间的马氏距离等于他们的欧氏距离:

若协方差矩阵是对角矩阵,则就是标准化欧氏距离:

特点:

matlab程序如下:

余弦距离可用来衡量两个向量的差异,其公式如下:

夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。

matlab程序如下:

两个等长字符串s1与s2的汉明距离为:将其中一个变为另外一个所需要作的最小字符替换次数。

汉明重量:是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。因此,如果向量空间中的元素 和 之间的汉明距离等于它们汉明重量的差 。

应用:汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。比如在信息编码过程中,为了增强容错性,应使得编码间的最小汉明距离尽可能大。但是,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离等算法。

matlab程序如下:

杰卡德相似系数:两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:

杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度:

用公式表示:

matlab程序如下(matlab中将杰卡德距离定义为不同的维度的个数占“非全零维度”的比例):

相关系数:是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关):

相关距离:

公式如下:

matlab程序:

信息熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度),分散程度,混乱程度(不一致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小,公式为:

其中, 是样本集 的类别数, 是 中第 类元素出现的概率。

设有两个概率分布 , 上, , ,则 和 的互信息为:

设 , 是两个随机变量,其

皮尔逊相关系数为:

其中, 是 , 的协方差, , 是 , 的标准差。

相对熵, , 是两个概率分布,其距离为:

它是非对称度量:

基于KL散度发展而来,是对称度量:

其中

量在再生 希尔伯特空间 中两个分布的距离,是一种核学习方法。两个随机变量的距离为:

其中, 是映射,用于把原变量映射到高维空间中。

以上便是一些机器学习里面常见的度量方式,其实还有很多,例如Principal angle,HSIC等,这里就不继续展开叙述了。

针对不同的特征,不同的问题,我们需要选择合适的度量方式。

本文参考了

求图像的熵,在型纯许多场合下都有应用,也可以有多种编写程序的方法,下面介绍作者编写的一个图像熵的函数yentropy(),可以直接调用首租晌。可者锋以用于求图像的局部熵,也可以求其整体熵。

function entr=yentropy(a)

a=uint8(a) %这里a为8位的单色图像或24为的RGB彩色图像

[m n l]=size(a)

entr=0

for k=1:l

hi=zeros(1,256)

for i=1:m

for j=1:n

hi(a(i,j,k)+1)=hi(a(i,j,k)+1)+1 %求每种值的在图像中出现的次数

end

end

hi=sort(hi,'descend')

hi=hi./m./n %求概率

en=0.0

for i=1:256

if hi(i)>0

en=en-hi(i).*log2(hi(i)) %概率不为0 累加求熵

else

i=257 %否则停止

end

end

entr=entr+en

end

entr=entr/l %当l=1时a为单色图像;当l=3时a为彩色图像,三个页面的熵平均

(1)先用Hist函数对x(n)的赋值范禅答围进行分块,比如赋值范围在0~10的对应第

一块,10~20的第二块,以此类推肆厅。这之前需要对x(n)做一些归一化处理

(2)统计每一块的数据个数,并求出相应的概率

(3)用信息熵公式求解裂袭隐

以上求解方法获得的虽然是近似的信息熵,但是一般认为,这么做是没有问题的

求一维序列的信息熵的matlab程序代码如下:(已写成调用的函数形式)

测试程序:

fs=12000

N=12000

T=1/fs

t=(0:N-1)*T

ff=104

sig=0.5*(1+sin(2*pi*ff*t)).*sin(2*pi*3000*t)+rand(1,length(t))

Hx=yyshang(sig,10)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12249949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存