概述
K近邻算法是一种基于实例的学习方法,学的不是明确的泛化模型,而更是样本之间的关系。
k 近邻算法先找到高维空间中与未知实例最接近的 k个训练实例,再根据少数服从多数的原则,将这 k 个实例中出现最多的类别标签分配给未知的实例。超参数 k对性能的影响较大,甚至会影响分类结果。
从另一个角度看,超参数 k 表示了模型的复杂度,准确地说是和模型的复杂度成反比关系。如果训练集的容量为 N,算法的有效参数数目就可以近似表示为 N/k。
k均值的分类结果实质上是近邻区域内(就是上图中的圆圈多个训练实例的平均,越大的 k 值意味着近邻区域包含的点数越多,平均化的程度就越高,对训练实例中噪声的平滑效果也就越好,相应的模型复杂度就越低。
反过来,越小的 k 值意味着近邻区域越狭窄,平均化的程度也就越低。这时的分类结果只由离未知数据点最近的少量训练实例决定,因而更容易受到这些实例中噪声的影响,也会表现出更强的过拟合。
解决维数灾难最直接有效的方式就是增加数据点的数量,当数据点的数量没法增加时就得退而求其次,想办法降低特征空间的维度。特征选择和特征提取都可以用于 k 近邻算法对数据的预处理。
k 近邻算法的运行方式和以线性回归为代表的参数方法截然相反。线性回归的运算量主要花在参数拟合上,参数被计算出来,训练数据的历史使命就完成了,新来的数据都会用这组参数来处理。可 k近邻算法的训练过程没那么复杂,只需要将数据存储下来就行了。可是对新实例进行分类时,k近邻算法需要找到离它最近的 k个训练实例,这才是算法主要的运算负荷。也就是说它具有无需训练的优点,但分类新实例的计算复杂度较高。
kkk 近邻算法的性能取决于超参数 kkk 的取值和距离的定义方式。
最后
以上就是从容火为你收集整理的理解K近邻算法的全部内容,希望文章能够帮你解决理解K近邻算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复