乐趣区

关于算法:K最近邻算法KNN

K- 最近邻算法(K-Nearest Neighbor,KNN)是一种经典的有监督学习办法,也能够被归为懈怠学习(Lazy Learning)办法。它基于“物以类聚”的原理,假如样本之间的类别间隔越近则它们越有可能是同一类别。
KNN 算法的工作原理简略且直观,当须要将一个测试样本分类时,它首先会计算测试样本与所有训练样本之间的间隔,而后依据间隔的递增关系进行排序。接着,它会抉择间隔最小的前 K 个样本,并统计这 K 个最近邻样本中每个样本呈现的次数。最初,它会抉择呈现频率最高的类标号作为未知样本的类标号。
在 KNN 算法中,K 值的抉择是要害。如果 K 值较小,只有当须要进行预测的样本和训练的样本较靠近时,能力有较好的成果。如果 K 值较大,则算法分类的近似误差增大,与输出样本间隔较远的样本也会对后果产生作用。

KNN 算法的工作过程如下:
1. 计算待分类样本与训练集中所有样本之间的间隔,罕用的间隔度量办法包含欧氏间隔、曼哈顿间隔等。
2. 抉择 K 个间隔最近的样本,即 K 个最近邻。
3. 对于分类问题,统计 K 个最近邻中不同类别的样本数量,并将待分类样本归为数量最多的那个类别。
4. 对于回归问题,计算 K 个最近邻的平均值或加权平均值,并将其作为待分类样本的预测值。
KNN 算法的长处是简略易了解、实现容易,并且对于非线性问题具备较好的体现。此外,KNN 算法能够适应新的训练数据,不须要从新训练模型。KNN 算法既可能用来解决分类问题,也可能用来解决回归问题。在解决分类问题时,KNN 通过扫描训练样本集找到与测试样本最类似的训练样本,并根据该样本的类别进行投票确定测试样本的类别。在解决回归问题时,KNN 则通过计算训练样本与测试样本的类似水平进行加权投票。
然而,KNN 算法的毛病包含计算复杂度高,须要存储全副训练样本,对于大规模数据集会耗费较多的内存和工夫。此外,KNN 算法对于样本分布不均衡的状况可能产生偏见,并且对于高维数据和噪声数据的解决能力绝对较弱。
须要留神的是,因为 KNN 算法须要计算所有训练样本与测试样本之间的间隔,因而当训练样本集较大时,其计算成本会较高。为了解决这个问题,能够思考应用一些优化的间隔计算方法,如树结构算法等。同时,KNN 算法的方差(Variance)往往较高,容易受到训练集大小和噪声的影响,因而在应用时须要留神过拟合和欠拟合的问题。
在利用方面,KNN 算法罕用于举荐零碎、图像识别、医学诊断等畛域。

退出移动版