K-近邻算法英文全称为K-Nearest Neigbours,也有的资料上会写作KNN算法。K-近邻算法的思路是,没有必要去总结原型向量,只需原始的训练样本,这些样本具有最基础最原始而且准确的向量信息,因此此算法产生的分类器也叫做“基于实例”的分类器。流程如下,拿到训练的文章样本之后,对每个样本都进行分词和向量化。然后在给定新的待判定文章后,算法对该文档也进行分词和向量化,不同的地方在后面的操作上。这个待判定的文章的向量会和所有训练的样本进行向量特征比对,也就是相似度比对,这样会得到它与所有训练样本的相似度排名列表。把K定为一个变量,从这个列表中找出相似度最高的K篇文章,根据这K篇文章的类别分布投票决定这篇待判定的文章更像哪种分类。这个方法看上去很简单,其实根本就没有模型训练的成分在里面,但是还是一分为二地来看这种方法。它的优点:因为这种方法可以克服Rocchio算法中无法处理线性的缺陷,同时“训练成本”也非常低——其他分类方法进行算法和模型调整时要重新对所有的分类文本进行全局计算,而这种算法只需要对某个已有的训练文档进行删除,或者加入新的训练文档,这个训练的分类规则就同时发生了变化。它的缺点:也是非常致命的,就是计算成本比较高。如果要计算一篇待分类的文章,就要将它和所有的训练样本进行比较。如果有100个文章分类,每个文章分类有100篇训练文章,那就是10000次计算,而且每分类一篇文章就要进行10000次计算,计算成本非常高。
K-近邻算法
最新推荐文章于 2024-07-21 22:38:55 发布