机器学习--KNN算法

来源:互联网 发布:淘宝娱乐宝下载安装 编辑:程序博客网 时间:2024/05/22 13:45
优点:精度高、对异常数值不敏感、无数据输入假定。
缺点:计算复杂度高、空间复杂度高。
使用范围:数值型和标称型。
工作原理:存在一个样本数据集合,也称作训练样本,并且样本中每个数据都存在标签,即我们知道本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最邻近)的分类标签。一般来说,只选择样本数据集中前K个最相似数据,这就是k-邻近算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

在上图中,有两类不同的样本数据,分别是正方形和三角形,图中圆表示的数据是待分类的数据。换句话就是,我们不知到中间那个圆表示的数据从属哪一类,(是正方形还是三角形)
从图中看出:如果K=3,圆的最近的3个邻居是1个正方形和2个三角形,少数服从多数,基于统计的方法,判定圆表示的这个待分类数据属于三角形一类。
KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的K个最近邻居,将这些邻居的属性平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本的影响给予不同的权值。,如权值与距离成正比。
该方法在分类时有个主要的不足,当样本不平衡时,如果一个样本的容量很大,而其他样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采取权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处就是计算量较大,因为对待每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方案就是事先对已知样本点就行剪辑,事先出去对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种方法比较容易产生误分。

0 0