赞
踩
距离函数在机器学习里占有重要的地位。其主要的作用便是衡量实体数据(实例、包…)之间的相异性,在此基础上也可以计算数据之间的相似性。许多算法都是建立在距离度量的基础上进行运行计算操作,没有距离度量,很多算法便无从下手,无法定量的进行计算。
欧式距离在机器学习或多示例学习中都基本是用于计算向量之间的直线距离。常用于计算实例间距离。通常在使用这个距离前需要对数据进行标准化。
d i s t a n c e ( a , b ) = ∑ i = 1 k ( a i − b i ) 2 distance(a,b)= \sqrt {\sum_{i=1}^k(a_i-b_i)^2} distance(a,b)=i=1∑k(ai−bi)2
曼哈顿距离起源于城市街道距离,因为城市里必须从道路走才能从一点到达另一点,所以不能用直线距离来计算两点间距离。故采用曼哈顿距离,即:
d i s t a n c e ( a , b ) = ∑ i = 1 k ∣ ∣ a i − b i ∣ ∣ distance(a,b)=\sum_{i=1}^k||a_i-b_i|| distance(a,b)=i=1∑k∣∣ai−bi∣∣
同样的,这个距离也是常用于计算向量或实例之间的距离。
闵氏距离是欧氏距离和曼哈顿距离的推广。其定义为:
d i s t a n c e ( a , b ) = ∑ i = 1 k ∣ a i − b i ∣ h h ( h > 0 ) distance(a,b)= \sqrt[h] {\sum_{i=1}^k|ai-bi|^h}\ (h>0) distance(a,b)=hi=1∑k∣ai−bi∣h (h>0)
这个距离也被称作 L p L_p Lp范数,其中p就是式中的h。当p=1时便是曼哈顿距离;当p=2时,便是欧式距离。
这个距离又被称为 L m a x L_{max} Lmax范数或者切比雪夫距离,是p趋近于无穷大时的闵可夫斯基距离的推广。
其定义为两个数据的最大属性值差。即:
d i s t a n c e ( a , b ) = l i m h → ∞ ( ∑ f = 1 p ∣ a f − b f ∣ h ) 1 h = max f p ∣ a f − b f ∣ distance(a,b)=lim_{h\to \infty}(\sum_{f=1}^p|a_f-b_f|^h)^{1\over h}=\max_{f}^p|a_f-b_f| distance(a,b)=limh→∞(f=1∑p∣af−bf∣h)h1=fmaxp∣af−bf∣
其衡量的便是一个集合的最小上界。但目前我所学习的相关算法基本上没有使用这个的距离的。
上面的距离度量均是常用于向量的距离计算,而多示例学习中,数据则是非向量的包,包由多个向量组成,故需要使用非向量学习技术,使用集合的距离计算方法来计算包之间的距离。常见的集合距离计算方法主要是Hausdorff距离。下面介绍主要的几种Hausdorff距离。
设两个点集A,B,则这两个点集的单向Hausdorff距离为:
h ( A , B ) = max a ∈ A min b ∈ B ∣ ∣ a − b ∣ ∣ h(A,B)=\max_{a\in A}\min_{b\in B}||a-b|| h(A,B)=a∈Amaxb∈Bmin∣∣a−b∣∣
h(A,B) 的理解:先找到A中一点到B的最近的点的距离,按此方法计算A中的所有点,然后取距离最大的值作为 h(A,B) 的值。(若 h(A,B)=d,表示 A 中所有点到 B 集合的距离不超过 d)。
则最大Hausdorff距离定义为:
M a x H ( A , B ) = m a x { h ( A , B ) , h ( B , A ) } MaxH(A,B)=max\{ h(A,B),h(B,A)\} MaxH(A,B)=max{h(A,B),h(B,A)}
表示集合A到集合B的最大距离不超过该距离,它度量了两个点集间的最大不匹配程度。但这种距离很容易受到离群点的影响,导致距离偏大。
其定义为集合A与集合B中距离最小的两个点a,b的欧式距离。即:
M i n H ( A , B ) = min a ∈ A , b ∈ B d ( a , b ) MinH(A,B)=\min_{a\in A,b\in B}d(a,b) MinH(A,B)=a∈A,b∈Bmind(a,b)
表示两个集合的最近距离。
其定义为双向最小距离之和的平均数:
A v e H ( A , B ) = ∑ a ∈ A min b ∈ B d ( a , b ) + ∑ b ∈ B min a ∈ A d ( b , a ) ∣ A ∣ + ∣ B ∣ AveH(A,B)={{\sum_{a\in A}\min_{b\in B}d(a,b)+\sum_{b\in B}\min_{a\in A}d(b,a)}\over {|A|+|B|}} AveH(A,B)=∣A∣+∣B∣∑a∈Aminb∈Bd(a,b)+∑b∈Bmina∈Ad(b,a)
从概念上讲,平均Hausdorff距离比最大和最小Hausdorff距离更多地考虑了两个包实例之间的几何关系。
目前本人对于多示例学习略有涉猎,但仍有不少方面尚未了解,所以只是总结一下自己已经学习的部分知识。
多示例学习的主要特点便是学习的目标对象不再是单一实例,而是由多个实例组成的集合,我们称之为包。对于包的学习中,组成包的实例是没有标记的,标记是由包来持有,故对数据进行分类时,便是对包进行分类,而不是对实例进行分类,这便是多示例学习与传统单实例学习的区别。
包和实例的关系,就像一个对象和其成员变量一样,由成员变量组成对象,同时某些成员变量可以决定对象的标记。标准的MIL假设便是,只有包中至少有一个正实例,便认为其是正包,包中一个正实例也没有,便认为该包是负包。此外还有集体假设,即正包的判定不是由一个正实例决定的,而是由多个实例同时决定,类似于将正实例组合成正集合作为标记评判标准。
对于包的学习算法和对于单实例的学习算法是不一样的,如何才能进行多示例的学习呢?目前从我学习的情况来看,大体上是分为两个思路。因为一个机器学习的算法,主要的部分便是两个,一个是训练数据,一个是学习模型,也就是分类器。故,我们想要实现多示例学习,一个方向是改进数据,可以将多示例数据通过某种方法转化成单实例数据,从而便可以使用传统的单实例算法进行学习;另一个方向便是改进学习模型,便是保持多示例数据的结构不变,将传统的单实例学习器进行改进,使其适合于多示例学习。当然,以此类推,便可得到一种同时改进训练数据和学习模型的思路,但目前我还没有接触过这种算法,具体情况未知。
多示例学习按照上面讲的两个思路,便可大致分为两大类(网络方法还没有接触过),一个是基于实例的算法,便是通过改进学习模型,使其可以对多示例数据进行处理,例如mi-svm算法,便是直接对实例进行学习。另一个便是基于嵌入的算法,即通过讲训练数据改造成单实例数据,从而使得传统的单实例学习器可以直接对数据进行学习。这种方法的数量是非常多的,例如simple-mi、BAMIC等。我目前学习的算法主要是基于嵌入的算法,所以也主要介绍这部分算法。
对于嵌入算法,其主要思想便是通过一个映射方法将包中的多个实例映射为单个实例,主要的部分便是这个映射函数。这个将多个向量映射到另一个空间的单向量的过程便称为嵌入。如何设计映射函数便是嵌入方法研究的主要问题。下面将结合我所学过的算法来讲解嵌入的思想。
这种方法便是基于包本身进行映射,通过对包中数据进行统计分析,选取适合的统计量或者数字特征来表示整个包,例如实例均值,中位数等。以Simple-mi为例,这个算法便是使用包中的实例均值作为整个包的代表,将多个实例整合成单个实例,而且实例长度不变。之后便可使用传统的单实例分类器对映射后的向量进行学习。这种方法的优点便是算法简单,运行快捷,而自然有其缺点,例如Simple-mi中以的均值,根据中心极限定理和大数定律,当样本数量过大时,样本均值会趋近于总体均值。而多示例算法的特点便是正实例的数量是远远小于负实例的数量,即类不平衡。则正实例对总体的均值影响随着包规模的增大而逐渐减小。故对于大规模数据,每个包计算出来的均值便会趋于一致,导致无法区分正包和负包,学习器性能急剧下降。
这种方法通过将训练数据借助关键对象映射为新的空间里的一组单向量,之后便可使用传统单实例分类器来进行学习。根据关键对象的选取,可分为关键包、关键实例。
首先是基于包的距离嵌入算法。这种方法便是通过计算集合(包)之间的距离来进行映射的,即从包集中选取一组关键包作为映射空间的一组基,通过将其他包与关键包进行距离计算,将距离组合成单向量,从而实现多示例转化成单实例,然后便可使用传统的单实例学习器对映射向量进行学习。所以这种方法的关键在于如何选取关键包。一种思路便是通过聚类算法来选取关键包。因为无监督的聚类算法可以很大程度上分析数据的内部结构特征。以BAMIC为例,在这个算法中,通过平均Hausdorff聚类计算包与包之间的距离,再通过k中心点聚类算法,聚集出k个簇,选取簇中心作为代表包以此进行包的映射。通过k中心点聚类算法,聚集出的簇中心是簇中离其他包最近的点,一个合理解释便是关键包是这一组包的相似性代表,因为距离和相似性是密切相关的,距离越近,相似度越高。此外还有其他的聚类思想,例如在SMDP算法中,其思想和BAMIC一致,均是通过聚类选取代表包,但该算法使用的是密度峰值聚类算法来进行聚类,通过计算包的密度和包间距离来计算包的优先级,最终选取出优先级最高的包作为关键包,以此为基,将包映射为单向量。这类算法的关键部分包括距离度量,映射方法两个部分。另一种思路便是通过核方法来计算包与包之间的相似性,如miGraph算法,但目前我还未看这篇文章,暂时就不介绍了。此外还可以将其他的分类思想引入,例如ELDB算法将集成和迭代的思想引入学习,通过迭代的更新数据集和集成的分类器,将关键包不断更新,达到自强化,再使用映射方法进行单实例映射,将分类结果进行集成以此得到最终的标记。
此外还有基于关键实例映射的算法。通过从实例空间中选取关键实例,作为映射空间的一组基,以此完成单实例转化。这种方法更为灵活,因为关键实例是从整个实例空间中选取,由于实例空间比包空间更大,所以选取方法也更多更灵活。如MIDIE算法中,便是分为两个阶段对实例进行选择,这个算法便是从SMDP算法演化而来。第一阶段,从每个包中通过关联性和代表性选取实例原型,构成实例原型池。第二阶段,便是对实例原型池进行密度峰值聚类,选择出关键实例,其他包基于关键实例进行映射。再如有的算法从正包中选取正实例代表,从负包中选取负实例代表,以此作为关键实例,因为这样可以增加最终映射的区分度,因为从负包中选取的实例一定是负实例,从正包中选取的实例却有可能是正实例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。