概述
很简单,给定一个数据集,确定唯一参数N,模型即完成
模型的使用,对于一个新的样本值,计算其周围最近的(Nearest Neighbors)N个样本,数量最多的取值,即为模型的预测值
其他
距离
曼哈顿距离: d ( x , y ) = Σ ∣ x i − y i ∣ d(x, y)=\Sigma{|x_i-y_i|} d(x,y)=Σ∣xi−yi∣
欧式距离:就是直线距离: d ( x , y ) = Σ ( x i − y i ) 2 d(x, y)=\sqrt{\Sigma{(x_i-y_i)^2}} d(x,y)=Σ(xi−yi)2
N的取值
交叉验证,也许这个算是训练过程?
对于每个N的取值,都执行一次交叉验证,绘制如下的图表
选取错误率最低的值作为模型参数
优缺点
优点:
简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。
模型训练时间快,上面说到KNN算法是惰性的,这里也就不再过多讲述。
预测效果好。
对异常值不敏感
缺点:
对内存要求较高,因为该算法存储了所有训练数据
预测阶段可能很慢
对不相关的功能和数据规模敏感