理解字符串核函数

来源:互联网 发布:钓鱼天气软件哪款好 编辑:程序博客网 时间:2024/05/23 16:34

前面讲支持向量机的时候,提到了核函数,通过核函数可以实现特征点的非线性转换,从而实现分类。
字符串核函数也是一种核函数,但它与一般的核函数不同。其他核函数一般定义在欧氏空间上,而字符串核函数是定义在字符串集合上的核函数。字符串核函数被广泛用在文本分类、信息检索等方面。

首先解释下什么是字符串核函数。与一般核函数一样,字符串核函数也需要高维特征空间。特征空间的维度由映射函数决定,例如映射ϕ(x1,x2,x3),则特征空间维数为三维。字符串核函数的特征空间维数也是由映射函数决定的,但不同的是,特征空间的每一维是用字符串来表示的。例如字母表为{a,b,c}长度大于等于3的字符串集合的特征空间有六维,分别是abc、acb、bac、bca、cab、cba。这样就可以将字符串s,t用长度为3的子串向量来“表示”,当然这里的表示不是说字符串能够用这些子串等价地表示,因为字符串核函数k(s,t)定义的是字符串s和t的余弦相似度,它们的子串越多,相似性就越高。

首先给出字符串核函数的映射函数在每一维上的取值表达式:

[ϕn(s)]u=uλl(i)

其中,特征空间是由所有长度为n的子串组成的,维数为n维,是一个有限字符表,如上例长度为3的子串组成的特征空间维数为6,特征空间每一维都对应着一个子串;s表示长度大于等于n的字符串;0<λ1是一个衰减参数,l(i)表示子串u在字符串s中的长度,i是子串的下标序列,例如:
给定字符串s=“sectionalization”,子串subU1=”set”,subU2=”tion”,则subU1下标序列i=(1,2,4),长度l(i)为4;subU2的下标序列i=(4,5,6,7),长度l(i)为4。

举个例子来说明,如下:
这里写图片描述
表示的是在字母表={f,o,g,b}中长度为2的子串(部分子串两个字符串均没有,故不列出)组成的特征空间,由上面给出的映射函数每一维取值公式可知,

ϕ(fog)=(λ2,λ3,λ2,0,0)
ϕ(fob)=(λ2,0,0,λ3,λ2)

λ的指数表示子串在字符串中的长度,系数表示出现次数,如2λ3表示出现了两次长度为3的子串u。根据核函数的定义k(fog,fob)=<ϕ(fog),ϕ(fob)>=2λ4+λ6

因为字符串核函数kn(s,t)定义的是字符串s和t中长度等于n的所有子串组成的特征向量的余弦相似度,所以字符串核函数以前面的核函数定义不同,为映射函数的内积再除以每个串对应的向量范数,如上例最后一个等式k(fog,fob)所示。

2 0
原创粉丝点击