1.算法原理
KNN算法的核心思维:相似度较高的样本,映射到n维空间后,其距离回避相似度较低的样本在距离上更加接近。
KNN,即K近邻算法,K近邻就是K个最近的邻居,当需要预测一个未知样本的时候,就由与该样本最接近的K个邻居来决定。KNN既可以用于分类问题,也可以用于回归问题。当进行分类预测时,使用K个邻居中,类别数量最多(或加权最多)者,作为预测结果;当进行回归预测时,使用K个邻居的均值(或加权均值),作为预测结果。
k近邻算法用一句通俗的古语来说就是:“物以类聚,人以群分”。你要看一个实例的类别,你就可以看它附近是什么类别。如下图所示,当要判断绿色实例的类别的时候,我们可以看看它的附近有哪些类,然后采取多数表决的决策规则(红色2个多于蓝色1个),于是把绿色实例也分类为红色那一类。
2.算法执行的步骤
构造训练样本集,样本集中每一数据都有一个标签;
输入没有标签的数据,根据每一个维度的特征,从样本集选出k的最靠近的邻居;
用这k个邻居去投票得出未知数据的标签。
4.距离的计算
4)闵可夫斯基距离(N个特征)
闵式距离不是一种距离,而是一组距离的定义,是对多个距离度量公式额概括性表述.
4. K值的选择问题
K值选择是KNN算法的关键,K值选择对近邻算法的结果有重大影响
K值的具体含义:在决策时通过依据测试样本的K个最近邻"数据样本"做决策判断.
(实际应用)
K值一般取较小值,通常采用交叉验证法来选取最优K值,也就是比较不同的K值时的交叉验证平均误差,选择平均误差最小的那个K值.
可以理解为对K值的选择就是对训练模型中参数的选择,交叉验证法(后面做了详细介绍)就可以理解为损失函数