KNN算法
- KNN算法是一种常见的分类算法,其名称来源于 k Nearest neighbors,该算法基本思想为,对于一个分类问题,新的数据的类别应该和离他最近的已知数据点的类别相同。
- KNN算法不同于常见的统计算法。是一种懒惰算法。在没有 预测行为时,不会做任何计算。
- KNN算法的主要工作为遍历已知数据点和选取合适的距离度量方式。因此可以根据度量方式对数据集做预处理加快预测速度。
算法流程
1. 设置数据集和K
2. 设置或者选择距离衡量方式
3. 遍历数据集找到最近K个点
4. 投票决定新的数据集点的类别
关于距离的衡量
Euclidean Distance 定义
其他的距离计算方式包括余弦值(cos), 相关度 (correlation), 曼哈顿距离 (Manhattan distance)。
算法优缺点
- 实现简单,但是对于大数据集复杂度很高而且效果往往不好。因为打的数据集对于K的选择更为敏感,不同的K可能导致不同的结果,如下:
- 当某一个类别的样本过大,可能导致判别失效。