knn算法介绍与参数调优

KNN算法介绍与参数调优K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自 主的应用。比如,我们判断一个人的人品,只需要观察他来往最密切

算法介绍与参数调优 KNN 近邻法是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的 K(k-nearestneighbors,KNN) 应用。比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出了。这里就运用 了的思想。方法既可以做分类,也可以做回归,这点和决策树算法相同。 KNNKNN 做回归和分类的主要区别在于最后做预测时候的决策方式不同。做分类预测时,一般是选择多 KNNKNN 数表决法,即训练集里和预测的样本特征最近的个样本,预测为里面有最多类别数的类别。而做回归时, KKNN 一般是选择平均法,即最近的个样本的样本输出的平均值作为回归预测值。由于两者区别不大,虽然本文主要 K 是讲解的分类方法,但思想对的回归方法也适用。由于里只使用了蛮力实现 KNNKNNscikit-learn 树实现和球树实现,本文只讨论这几种算法的实现原理。 (brute-force),KD(KDTree)(BallTree) 1.KNN 算法三要素 算法我们主要要考虑三个重要的要素,对于固定的训练集,只要这三点确定了,算法的预测方式也就 KNN 决定了。这三个最终的要素是值的选取,距离度量的方式和分类决策规则。 k 对于分类决策规则,一般都是使用前面提到的多数表决法。所以我们重点是关注与值的选择和距离的度 k 量方式。 对于值的选择,没有一个固定的经验,一般根据样本的分布,选择一个较小的值,可以通过交叉验证选择 k 一个合适的值。 k 选择较小的值,就相当于用较小的领域中的训练实例进行预测,训练误差会减小,只有与输入实例较近或 k 相似的训练实例才会对预测结果起作用,与此同时带来的问题是泛化误差会增大,换句话说,值的减小就意味 K 着整体模型变得复杂,容易发生过拟合; 选择较大的值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少泛化误差,但缺点是训练 k 误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且值的增大 K 就意味着整体的模型变得简单。 一个极端是等于样本数,则完全没有分类,此时无论输入实例是什么,都只是简单的预测它属于在训练 km 实例中最多的类,模型过于简单。 对于距离的度量,我们有很多的距离度量方式,但是最常用的是欧式距离,即对于两个维向量和两者 nxy, 的欧式距离定义为: -%产 D(x,y)= 小 =1 大多数情况下,欧式距离可以满足我们的需求,我们不需要再去操心距离的度量。当然我们也可以用他的 距离度量方式。比如曼哈顿距离,定义为: 分出- D(x,y)= -i=l 更加通用点,比如闵可夫斯基距离定义为: (MinkowskiDistance), .涉及核心内容 3 自定义的使用 scoring

腾讯文库knn算法介绍与参数调优