1.kNN算法
k近邻算法的想法很简单,类似于多数表决,关键点是参与多数表决的人是离你最近的k个人。
给定一个实例,首先从训练集中找到离这个实例最近的k个实例,然后根据这k个实例中哪个标签出现次数最多决定该实例的标签。需要注意的点是:
a.距离的度量
b.k值得选取
c.存储和速度
度量距离有很多,这里介绍三种,即1范数,二范数和无穷大范数。假设两个实例的特征向量为:
1范数:
2范数:
无穷大范数:
当然还有好多其他的距离度量方式,比如向量夹角等。关于范数的定义可以参见线性代数的书,会有详细的介绍。我觉得那个范数一致性倒是蛮重要的。
使用的距离不同,k近邻的结果也会不同的,即“由不同的距离度量所确定的最邻近点是不同的。”
k值得选择非常重要,不合适的k值结果可能会很不理想。
如果选择的比较小的话,相当于用较小邻域中的训练实例进行预测,学习的近似误差会减少,只有与输入实例较近的训练实例才会对预测结果起作用,缺点是学习的估计误差会增大,易受噪声影响,极端情况是k=1;
如果k值选取的比较大,相当于用较大邻域中德训练实例进行预测,