KNN分类基本思路
kNN算法计算不同特征值之间的距离对样本进行分类。在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。
KNN分类算法特点
KNN分类算法的三个基本要素
K 值的选择
K 值的选择会对算法的结果产生重大影响:
在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的 K 值。
交叉验证
将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。
距离度量
一般采用 Lp 距离,当p=2时,即为欧氏距离,在度量之前,应该将每个属性的值规范化,这样有助于防止具有较大初始值域的属性比具有较小初始值域的属性的权重过大。
特征缩放
将特征的取值控制在某一范围内,保证每个特征占据的权重一致。常用的是归一化和标准化。
分类决策规则
往往是多数表决,即由输入实例的 K 个最临近的训练实例中的多数类决定输入实例的类别。
多数表决等价于经验风险(误分类率)最小化
分类的损失函数:0-1损失
误分类率:
$$ \frac{1}{k}\sum_{x_i\in N_k(x)}I(y_i\neq c_j)=1-\frac{1}{k}\sum_{x_i\in N_k(x)}I(y_i=c_j) $$
其中实例$x\in \mathcal{X}$,$N_k(x)$为最近邻的k个训练实例点的集合,$c_j$为该集合区域的类。
要是误分类率最小化,即经验损失最小,就要使$\sum_{x_i\in N_k(x)}I(y_i=c_j)$最大,故多数表决等价于经验风险最小化。
KNN分类算法存在的不足
KNN回归算法