K最近邻分类
K最近邻(k-Nearest Neighbor,KNN)分类算法,是最简单的机器学习算法之一。算法本身简单有效,它是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么算法 的分类时间复杂度为O(n)。
原理
K 近邻算法使用的模型实际上对应于对特征空间的划分。
思路
如果一个样本在特征空间中的k个最“相似”(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。这里的“相似”如果度量?我们使用特征空间中两个点之间“距离”来作为他们的相似度,即两个点“距离”越近则认为他们越相似。
三个基本要素
K 值的选择,距离度量和分类决策规则是该算法的三个基本要素。
K 值的选择会对算法的结果产生重大影响:
- K值较小意味着只有与输入实例较近的训练实例才会对预测结果起作用,但容易发生过拟合;
- 如果 K 值较大,优点是可以减少学习的估计误差,但缺点是学习的近似误差增大,这时与输入实例较远的训练实例也会对预测起作用,使预测发生错误。
- 在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的 K 值。
- 随着训练实例数目趋向于无穷和 K=1 时,误差率不会超过贝叶斯误差率的2倍,如果K也趋向于无穷,则误差率趋向于贝叶斯误差率。
- 该算法中的分类决策规则往往是多数表决,即由输入实例的 K 个最临近的训练实例中的多数类决定输入实例的类别距离度量一般采用 Lp 距离,当p=2时,即为欧氏距离,在度量之前,应该将每个属性的值规范化,这样有助于防止具有较大初始值域的属性比具有较小初始值域的属性的权重过大。
距离计算方法
最常见以欧氏距离作为衡量标准。
-
欧氏距离 D ( x i , x j ) = ( ∑ k = 1 n ( x i l − x j l ) 2 ) 1 2 D(x_i,x_j)={(\sum_{k=1}^{n}(x_i^l-x_j^l)^2)}^\frac{1}{2} D(xi,xj)=(k=1∑n(xil−xjl)