本发明涉及大数据特征向量运算技术领域,尤其涉及一种基于大数据特征向量的余弦距离计算方法。
背景技术
余弦距离(亦称为余弦相似度),是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。两个特征向量的余弦距离一般用两个特征向量之间的夹角余弦值表示,即当特征向量a为a=(a1,a2,...,an),特征向量b为b=(b1,b2,...,bn),特征向量a与特征向量b的余弦距离为:
目前常用的特征向量的余弦距离计算方法是对特征向量a和特征向量b内的所有元素先进行全局顺次遍历,找到特征向量a和特征向量b各自中的非零元素的位置,并进行标记,以数据集存储非零元素的位置。接着,通过查找特征向量a和特征向量b重合位置的非零元素,继而去除未重合的非零元素。这样通过查找非零元素来进行余弦距离计算,在一定程度上缩小了计算的数据规模,但是仍存在以下问题:1、一旦遍历错误,导致数据集存储的样本特征向量非零元素的位置错误,进而影响后续计算;2、数据集存储样本特征向量非零元素的位置,并查找重合位置的非零元素,操作繁琐,费时易出错,且比较耗内存资源。
人脸识别是利用人脸共性特征从视频流中提取含人脸图片,再将人脸图像与预先存储在人脸库中模版图像进行比对,利用人脸特征之间的差异来确定待测人脸的身份信息。发明专利申请cn108108760a公开了一种快速人脸识别方法,并具体公开了方法包括a对目标图片建立目标库:(1)提取人脸关键特征点,并根据人脸关键特征点构造标准特征向量;(2)选取标准化特征向量中的若干个分量作为参考变量,进行分块,并对块进行二进制编码;(3)对步骤(2)中的每个块分别进行pca降维处理,形成若干降维后的块,用步骤(2)中对块的编码对若干个降维后的对应的块进行命名;b、人脸识别(4)读取待测人脸图片,提取待测人脸关键特征点,并根据待测人脸关键特征点构造待测人脸的标准特征向量;(5)对步骤(4)中的特征向量进行二进制编码,根据该编码查找对应的步骤(3)降维后的块;(6)对待测人脸图片进行pca降维处理;(7)对步骤(6)pca降维处理后的待测人脸图片与步骤(5)查找到对应块中的各类图片进行比对,确定待测人脸图片与块中的每类图片的相似度,当相似度超过设定阈值时,即判定待测人脸图片与该类图片属于同一人,完成图像识别。该发明采用了以关键特征点对目标库预分类并编码的方法,利用对人脸特征的先验知识,将大目标库分割成小目标库,并利用pca降维技术,有效减少了人脸识别不是环节的计算量。然而,二进制编码是基于二分类方法对大于等于中值的特征向量编码为1,否则为0,进而实现分块,则分块过程需要对特征向量的元素进行逐个计算、判断;并且步骤(7)存在常用余弦距离计算方法存在的问题,需要查找比对,操作仍繁琐、费时,比较耗内存资源。
技术实现要素:
本发明针对现有技术存在的问题,提出了一种减小计算大数据特征向量的余弦距离的问题规模,解决大数据的特征向量的余弦距离运算量大的问题的基于大数据特征向量的余弦距离计算方法。
本发明用到了二进制编码、布尔运算和余弦距离的计算复杂度的知识点。将各样本的特征向量编码为二进制序列(非零元素编码为1,零元素编码为0),对各样本编码序列两两之间进行布尔运算(按位与),运算结果的序列中1的位置对应向量的非零元素,0的位置对应向量的零元素,根据二进制序列码与向量非零元素的对应关系实现只有非零元素参与余弦距离的计算,意味着缩小了问题规模,减少了运算量。
本发明是通过以下技术方案实现的:
一种基于大数据特征向量的余弦距离计算方法,包括:
步骤s01,获取待测样本的特征向量和对照样本的特征向量;
步骤s02,分别对待测样本的特征向量和对照样本的特征向量进行二进制编码,将待测样本的特征向量和对照样本的特征向量中的零元素编码为0,非零元素编码为1;
步骤s03,利用编码后的待测样本的特征向量和编码后的对照样本的特征向量,根据余弦距离公式计算:
其中,ai为待测样本的特征向量,bi为对照样本的特征向量。
作为优选,步骤s01中待测样本的特征向量获取步骤包括:读取待测样本;提取待测样本关键特征点;根据待测样本关键特征点构造待测样本的特征向量;
步骤s01中对照样本的特征向量获取步骤包括:读取对照样本;提取对照样本关键特征点;根据对照样本关键特征点构造对照样本的特征向量。
作为优选,步骤s03包括余弦距离分子项计算和余弦距离分母项计算;所述分子项计算利用布尔运算的按位与计算获得;所述分母项计算是计算待测样本的特征向量长度与对照样本的特征向量长度之和。
作为优选,所述待测样本的特征向量长度、所述对照样本的特征向量长度在步骤s02编码后计算并保存。
作为优选,步骤s03在计算余弦距离的分母项时,调用步骤s02计算保存的待测样本的特征向量长度和对照样本的特征向量长度,并对两者求和。
作为优选,当有多个待测样本与一个对照样本比对时,在进行首个待测样本的特征向量和对照样本的特征向量间的余弦距离计算后,保存编码后的对照样本的特征向量及其特征向量长度;自第二个待测样本起,方法包括:
步骤s11,获取待测样本的特征向量;
步骤s12,对待测样本的特征向量进行二进制编码,将待测样本的特征向量中的零元素编码为0,非零元素编码为1;
步骤s13,利用编码后的待测样本的特征向量和编码后的对照样本的特征向量,根据余弦距离公式计算:
其中,ai为待测样本的特征向量,bi为对照样本的特征向量。
作为优选,步骤s13在计算余弦距离的分母项期时,调用首个待测样本的特征向量和对照样本的特征向量间的余弦距离计算后保存的编码后的对照样本的特征向量长度,调用当前待测样本步骤s12计算保存的待测样本的特征向量长度,并对两者求和。
作为优选,步骤s13在计算余弦距离的分子项期时,调用首个待测样本的特征向量和对照样本的特征向量间的余弦距离计算后保存的编码后的对照样本的特征向量,将其与当前待测样本于步骤s12获得的编码后的待测样本的特征向量利用布尔运算的按位与计算。
作为优选,所述待测样本为待测人脸图片,所述对照样本为目标对照人脸图片。
作为优选,所述待测样本为待测文本信息,所述对照样本为目标对照文本信息。
本发明具有以下有益效果:
本发明一种基于大数据特征向量的余弦距离计算方法,将各样本的特征向量编码为二进制序列(非零元素编码为1,零元素编码为0),对各样本编码序列两两之间进行布尔运算(按位与),运算结果的序列中1的位置对应向量的非零元素,0的位置对应向量的零元素,根据二进制序列码与向量非零元素的对应关系,实现仅有非零元素参与余弦距离的计算,缩小了问题规模。并且,通过二进制编码和布尔运算(按位与)实现定位余弦距离计算中分子项的非零元素,相对于现有技术,本方法形式直观、计算简单快捷并且不易出错。
附图说明
图1为本发明一种基于大数据特征向量的余弦距离计算方法一实施方式的流程框图;
图2为图1中步骤s01待测样本的特征向量的子流程框图;
图3为图1中步骤s01对照样本的特征向量的子流程框图;
图4为本发明一种基于大数据特征向量的余弦距离计算方法另一实施方式的流程框图。
具体实施方式
以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
如图1-3,本发明一种基于大数据特征向量的余弦距离计算方法包括:
步骤s01,获取待测样本的特征向量和对照样本的特征向量;
步骤s02,分别对待测样本的特征向量和对照样本的特征向量进行二进制编码,将待测样本的特征向量和对照样本的特征向量中的零元素编码为0,非零元素编码为1;
步骤s03,利用编码后的待测样本的特征向量和编码后的对照样本的特征向量,根据余弦距离公式计算:
其中ai为待测样本的特征向量,bi为对照样本的特征向量。
该余弦距离计算主要用于图像识别、文本信息分类等大数据领域。为此,待测样本可为待测人脸图片,所述对照样本为目标对照人脸图片。例如,在手机安全认证方面,利用人脸识别提高认证安全性,而图片的相似度是取决于两样本余弦距离计算。或者,所述待测样本为待测文本信息,所述对照样本为目标对照文本信息。例如,在新闻分类方面,通过比对新闻文本信息,将同类新闻归类或找出相同重复的新闻。下文将以人脸识别为示例,以辅助本发明理解。
如图2,步骤s01中待测样本的特征向量获取步骤包括:
s1.1.1,读取待测样本;
s1.1.2,提取待测样本关键特征点;
s1.1.3,根据待测样本关键特征点构造待测样本的特征向量。
读取待测人脸图片,提取待测人脸图片的关键特征点,如双眼眼角点、鼻尖点、两个嘴角点、两耳耳根。根据待测人脸图片的关键特征点组成多个距离特征值,如上述9个关键特征点就构成10个距离特征值,包括左眼宽度、鼻尖与双眼连线的垂直距离、两耳耳根间距离、嘴巴宽度、右眼宽度、两眼外侧水平距离、右眼的外侧眼角与鼻尖的距离、左眼的内侧眼角与鼻尖的距离、嘴巴中点与鼻尖的垂直距离、鼻尖与嘴尖的距离。根据该距离特征值与眼睛中点与嘴巴中点之间的垂直距离l之比定义为待测样本的特征向量。值得注意的是,待测样本的特征向量构建的关系可根据需要进行调整,不限于上述比值关系。
如图3,步骤s01中对照样本的特征向量获取步骤包括:
s1.2.1,读取对照样本;
s1.2.2,提取对照样本关键特征点;
s1.2.3,根据对照样本关键特征点构造对照样本的特征向量。
该对照样本的特征向量获取步骤参照待测样本的特征向量获取,在此不再赘述。该对照样本选取目标对照人脸图片,如手机识别是,目标对照人脸图片为机主的人脸图片。
在获得待测样本的特征向量和对照样本的特征向量后,利用二进制对特征向量进行编码。编码规则如下:非零元素所在位置编码为1,零元素所在位置编码为0。根据余弦距离公式可知,当两个样本相对应的位置处其中之一或两个都为0时,其乘积项亦为0,则在余弦距离计算时是没有任何贡献的,而照常计算则会占用系统资源。为此,通过利用二进制编码方式来剔除特征向量中的零元素以及两个特征向量点乘的零元素,仅保留非零元素参与余弦距离的计算,大大缩小了问题规模,减少了运算量。
所述步骤s03包括余弦距离分子项计算和余弦距离分母项计算。所述分子项计算利用布尔运算的按位与计算获得。如,待测样本的特征向量x为“000.910000.820.790…”,编码后的序列tx为“001000110…”;对照样本的特征向量y为“0.9500.8900000.770…”,编码后的序列ty为“101000010…”。将编码后的待测样本的特征向量与编码后的对照样本的特征向量进行布尔运算,按位与,txandty=“001000010…”,也就是说余弦距离分母项计算为x3*y3+x8*y8+…。所述分母项计算是计算待测样本的特征向量长度与对照样本的特征向量长度之和。如,先分别编码后待测样本的特征向量长度ax为
为了提高步骤s03的计算效率,所述待测样本的特征向量长度、所述对照样本的特征向量长度在步骤s02编码后计算,并将计算的特征向量长度保存。步骤s03在计算余弦距离的分母项时,调用步骤s02计算保存的待测样本的特征向量长度和对照样本的特征向量长度,之后对调用的特征向量长度两者求和。
当有多个待测样本时,可重复执行上述图1所示流程。但问题是,如果对照样本为一个时,多个待测样本均分别与同一个对照样本进行比对,计算余弦距离时,如果重复上述图1所示流程,会导致每次执行时都需要对对照样本的特征向量获取、对照样本的特征向量编码、对照样本特征向量长度进行重复多次计算,占用一定计算资源,运算量相对较大。为此,本发明提出了图4所示余弦距离计算方法。
在进行首个待测样本的特征向量和对照样本的特征向量间的余弦距离计算时,参照图1所示的方法进行。在计算完毕后,保存对照样本的特征向量、编码后的对照样本的特征向量及其特征向量长度。
自第二个待测样本起,方法包括:
步骤s11,获取待测样本的特征向量;
步骤s12,对待测样本的特征向量进行二进制编码,将待测样本的特征向量中的零元素编码为0,非零元素编码为1;
步骤s13,利用编码后的待测样本的特征向量和编码后的对照样本的特征向量,根据余弦距离公式计算:
其中ai为待测样本的特征向量,bi为对照样本的特征向量。
其中,待测样本为i,步骤s11~s13涉及待测样本i≥2的余弦距离计算。
具体地,为了提高步骤s13的计算效率,所述待测样本的特征向量长度在步骤s12编码后计算,并将计算的特征向量长度保存。步骤s13在计算余弦距离的分母项期时,调用首个待测样本的特征向量和对照样本的特征向量间的余弦距离计算后保存的编码后的对照样本的特征向量长度,调用当前待测样本步骤s12计算保存的待测样本的特征向量长度,并对两者求和。
为了进一步提高步骤s13的计算效率,编码后待测样本的特征向量是在步骤s12获得并将其保存。步骤s13在计算余弦距离的分子项期时,调用首个待测样本的特征向量和对照样本的特征向量间的余弦距离计算后保存的编码后的对照样本的特征向量,将其与当前待测样本于步骤s12获得的编码后的待测样本的特征向量利用布尔运算的按位与计算。
所述分子项计算利用布尔运算的按位与计算获得。如,待测样本的特征向量x为“000.910000.820.790…”,编码后的序列tx为“001000110…”;对照样本的特征向量y为“0.9500.8900000.770…”,编码后的序列ty为“101000010…”。将编码后的待测样本的特征向量与编码后的对照样本的特征向量进行布尔运算,按位与,txandty=“001000010…”,也就是说余弦距离分母项计算为x3*y3+x8*y8+…。所述分母项计算是计算待测样本的特征向量长度与对照样本的特征向量长度之和。如,先分别编码后待测样本的特征向量长度ax为,编码后对照样本的特征向量长度ay为;之后,计算上述两个特征向量长度的和。结合余弦距离分子项的计算结果和余弦距离分母项的计算结果,两者相除获得余弦距离。人脸识别获得的余弦距离为待测人脸图片与目标对照人脸图片的相似度,若相似度超过阈值,如80%,则认为该待测人脸图片与目标对照人脸图片中的人属于同一人,否则判定为不同人。
为了提高每次待测样本与对照样本间的余弦距离计算,在每次过程中的第二步期间,所述待测样本的特征向量长度在步骤s02或步骤s12编码后计算,并将计算的待测样本的特征向量长度保存。步骤s03或步骤s13在计算余弦距离的分母项时,调用步骤s02或s12计算保存的待测样本的特征向量长度,并调用首次计算保存的对照样本的特征向量长度,之后对调用的特征向量长度两者求和。
采用本发明基于大数据特征向量的余弦距离计算方法,两个样本的余弦距离的计算复杂度为o(n),问题的规模为n;k个样本两两之间余弦距离的计算复杂度为o(k2n);假定所有的样本特征向量的长度为l,那么直接计算两样本余弦距离的问题的规模为n=l;按照本发明技术计算两样本余弦距离的问题的规模为n=m,m≤l(当特征向量全部为非零元素等号成立),因此本方法实现了缩小问题规模,减少运算量。
通过二进制编码和布尔运算(按位与)实现定位余弦距离计算中分子项的非零元素,相对于现有技术,本方法形式直观、计算简单快捷并且不易出错。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。