1、工作原理:
存在一个样本数据集合(训练样本集)且样本集中每个数据都存在标签(样本集中每一数据与所属分类的对应关系)。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,提取样本集中特征最相似数据(最近邻)的分类标签。一般只选择样本数据集中前K个最相似的数据,选择k个最相似数据中出现次数最多的分类作为新数据的分类。
2、工作流程:
(1)计算已知类别的数据集中的点与当前点之间的距离;
(2)按照距离递增顺序排序;
(3)选取与当前点距离最小的k个点;
(4)确定前k个点所在类别的出现频率;
(5)返回前k个点出现频率最高的类别作为当前点的预测类别。
3、基本要素:
(1)距离度量
(2)k值的选择
1)k越小模型越复杂,用较小的邻域中的训练实例进行预测,只有与输入实例较近的训练实例才会对预测结果起作用,预测结果会对近邻的实例点非常敏感;
2)k越大模型越简单,用较大的邻域中的训练实例进行预测,与输入实例较远的训练实例也会对预测结果起作用,易使预测发生错误;
3)在应用中,k值一般取一个比较小的数值,k通常会在3~10直接取值,或者是k等于训练数据的平方根。通常采用交叉验证法来选取最优的k值。
(3)分类决策规则
1)多数表决:少数服从多数,近邻中哪个类别的点最多就分为该类。(经验风险最小化)
2)加权投票:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)。
4、算法特点:
“近朱者赤,近墨者黑”
优点:
(1)简单,易于实现,无需训练;
(2)精度高;
(3)无数据输入假定(对数据分布没有假设);
(4)对异常值不敏感,个别噪音数据对结果的影响不是很大;
(5)适合对稀有事件进行分类;
(6)适用于多分类问题;
(7)不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。
缺点:
(1)计算复杂度高,必须对数据集中每个数据计算距离;
(2)空间复杂度高,必须保存全部数据集;
(3)对标称特征以及缺少数据需要预先处理;
(3)可解释性差,无法告诉你哪个变量更重要,无法给出决策树那样的规则(没有模型输出,限制了对特征间关系的理解);
(4)样本不均衡问题,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的
样本占多数。
5、优化方法:
距离加权:可以降低k值设定的影响。将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。
降维或使用其他距离计算工具:变量数越多,欧式距离的区分能力就越差。
对变量进行标准化:值域越大的变量常常会在距离计算中占据主导作用。
加权投票:多数表决没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类。
样本加权:在训练集中,有些样本可能是更值得依赖的。可以给不同的样本施加不同的权重,加强依赖样本的权重,降低不可信赖样本的影响。
压缩训练样本量:提高计算的效率,虽然构造模型简单,但扫描全部训练样本并计算距离的系统开销很大。
kd树:一种便于对k维空间中的数据进行快速检索的数据结构。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。
6、使用算法:
(1)输入样本数据和结构化的输出结果;
(2)运行KNN判定输入数据分别属于哪个分类;
(3)对计算出的分类执行后序处理。
7、应用场景:
通常最近邻分类器使用于特征与目标类之间的关系为比较复杂的数字类型,或者说二者关系难以理解,但是相似类间特征总是相似。
客户流失预测、欺诈侦测等。