主权项 |
一种基于欧氏距离改进的kNN近邻查找方法,其特征在于:假定由n(n>0)个样本构成样本集合S={s<sub>0</sub>,s<sub>1</sub>,…,s<sub>n</sub>‑1},同时共有t(t>0)个线程TD<sub>0</sub>、TD<sub>1</sub>、…、TD<sub>t‑1</sub>进行处理,在S中查找与待分类样本v<sub>0</sub>最相似的k个近邻,则本方法具体可以分为3个主要步骤:步骤1,线程初始化处理;对任一线程TD<sub>j</sub>(0≤j≤t‑1),令<img file="FDA0001067371300000011.GIF" wi="414" he="63" /><img file="FDA0001067371300000012.GIF" wi="294" he="126" />其中<img file="FDA0001067371300000013.GIF" wi="50" he="61" />为取下整符号,则TD<sub>j</sub>首先在S<sub>j</sub>中随机取k个样本,构成TD<sub>j</sub>关于待分类样本v<sub>0</sub>的初始k‑近邻集合<img file="FDA0001067371300000014.GIF" wi="80" he="71" />再计算<img file="FDA0001067371300000015.GIF" wi="56" he="77" />中各样本与v<sub>0</sub>的欧氏距离,并选择其中距离最大值,不妨记为dmax<sub>j</sub>,假定与它对应的样本为s<sub>max</sub>;同时令<img file="FDA0001067371300000016.GIF" wi="374" he="89" />并且令样本集合<img file="FDA0001067371300000017.GIF" wi="245" he="72" />步骤2,单个线程求k‑近邻;对任一线程TD<sub>j</sub>(0≤j≤t‑1),从<img file="FDA0001067371300000018.GIF" wi="51" he="71" />中逐个选取每一样本s;首先,计算s各个维度与v<sub>0</sub>对应维度的距离,并将其与radius进行比较:只要其中有一个维度的距离大于radius,则直接丢弃s;否则,计算s与v<sub>0</sub>的欧氏距离d;将计算所得d与dmax<sub>j</sub>进行比较,如果d大于dmax<sub>j</sub>,则直接丢弃s;否则令<img file="FDA0001067371300000019.GIF" wi="523" he="71" />并再在所得新的<img file="FDA00010673713000000110.GIF" wi="51" he="70" />中选择距离v<sub>0</sub>最远的样本(仍用s<sub>max</sub>表示),v<sub>0</sub>和样本s<sub>max</sub>的距离仍用dmax<sub>j</sub>表示,同时更新<img file="FDA00010673713000000111.GIF" wi="389" he="88" />当<img file="FDA00010673713000000112.GIF" wi="51" he="72" />中所有样本处理完后,则得到线程TD<sub>j</sub>的k‑近邻集合<img file="FDA00010673713000000113.GIF" wi="81" he="79" />计算并记录<img file="FDA00010673713000000114.GIF" wi="56" he="79" />中各样本与v<sub>0</sub>的欧氏距离;步骤3,多线程归并求k‑近邻;将t个线程的k‑近邻集合进行归并,得到<img file="FDA00010673713000000115.GIF" wi="246" he="119" />该集合中共有t*k个样本,并对应t*k个欧氏距离;通过在t*k个欧氏距离中选取k个最小值,很容易得到全局样本集合S中关于待分类样本v<sub>0</sub>的k个近邻。 |