0x01 K近邻算法概述
在统计学中,K近邻算法(K-NN)是一种非参数监督学习方法,最初由Evelyn Fix和Joseph Hodges在 1951 年开发,后来由Thomas Cover扩展。
K最近邻(K-NN)算法是一种数据分类方法,用于根据最接近它的数据点所属的组来估计数据点将成为一个分类或另一个分类的可能性。K近邻算法用于分类和回归,是一种监督机器学习算法,在这两种情况下,输入都由数据集中的K个最接近的训练示例组成。输出取决于K-NN 是用于分类还是回归:
- 在 K-NN 分类中,输出是一个类成员。对象通过其相临节点的多次投票进行分类,对象被分配到其K个最近相临节点中最常见的类别(K是一个正整数,通常很小)。
如果K = 1,则对象被简单地分配给该单个最近相临节点的类。 - 在K-NN 回归中,输出是对象的属性值。该值是K个最近邻值的平均值。
Addr:https://upload.wiKimedia.org/wiKipedia/commons/5/52/Map1NN.png
K-NN 是一种分类类型,其中函数仅在局部近似,并且可以看出来,K-NN算法不需要训练。对于分类和回归,一个有用的技术可以是为相临节点的贡献分配权重,以便更近的相临节点比更远的相临节点对平均值的贡献更大。例如,一个常见的加权方案包括给每个相临节点一个 1/ d的权重,其中d是到相临节点的距离。
举个最简单的理解例子:
有两种颜色的球,蓝色和红色,为了确定黑色球A是属于蓝色球类还是红色球类,算法会根据A球附近球的状态进行判断,如果附近大多数的球为红色,则很大概率将A球归属于红色球类。
再举一个例子:
例如,对点X进行分类时,需要对w1,w2,w3进行比较,计算一定距离内的离Xu最近的k个点的类别,通过最近的k个点的类别来确定Xu点的类别。
0x02 K近邻算法
训练样本是多维特征空间中的向量,每个向量都有一个类标签。该算法的训练阶段仅包括存储训练样本的特征向量和类标签。
在分类阶段,K是用户定义的常数,未标记的向量(查询或测试点)通过分配最接近该查询点的K个训练样本中最频繁的标签来分类。
利用欧几里得方法进行连续变量的常用距离的度量,利用重叠度量进行离散变量的常用距离的度量;与样本集中的每个属性一起用作度量,使用大边距近邻或邻域分析等算法学习距离度量,提高K近邻算法的分类精度。
存在的问题
频繁出现的类别可能会影响其他类别的预测,例如某个类别频繁出现,往往会主导新示例的预测,出现类别的结果向某一侧倾斜,出现多数选择某个类别的情况。对不同的分类加权可以解决这一问题,或通过抽象表示数据。
较大的K值会降低不必要的噪声对分类的影响,但与此同时会使分类的类别差异不明显,K-NN 算法的准确性可能会因噪声或不相关特征的存在而严重降低,或者如果特征尺度与其重要性不一致。
0x03 抽象工作原理
K-NN 执行投票机制来确定不知道归属的类别,附近的元素的不同类别可以理解成投票机制,拥有多数票的类别将大概率归属此类别。
K的取值例如:如果 K 的值等于 1,那么我们将仅使用最近的类别来确定数据点的类别。如果 K 的值等于 10,那么我们将使用最近的 10 个邻居,以此类推。
0x04 应用领域
- 信用评级: KNN 算法通过将个人与具有相似特征的信用评级进行比较来帮助确定个人的信用评级。
- 贷款审批:与信用评级类似,K-NN算法有助于通过将个人特征与相似个人进行比较来识别更有可能拖欠贷款的个人。
- 数据预处理:数据集可能有许多缺失值。K-NN 算法用于估计缺失值的称为缺失数据插补的过程。
- 模式识别: K-NN 算法识别模式的能力创造了广泛的应用。例如,它有助于检测信用卡使用模式并发现异常行为。
- 股票价格预测:由于 K-NN 算法具有预测未知实体价值的能力,因此可用于根据历史数据预测股票的未来价值。
- 推荐系统:由于 K-KNN 可以帮助找到具有相似特征的用户,因此可以在推荐系统中使用。例如,它可以用于在线视频流媒体平台,通过分析相似用户观看的内容来建议用户更有可能观看的内容。
- 计算机视觉:K-NN算法用于图像分类。由于它能够对相似的数据点进行分组,例如将猫和狗归为不同的类别,因此它在多种计算机视觉应用中非常有用。
0x05 优缺点
K-NN优点:
- 惰性学习易于理解且易于实施
- 可用于分类和回归多重问题
- 它是非线性数据的理想选择
K-NN缺点:
- 在计算上是昂贵且耗时
- 硬件上需要高内存存储
- 需要确定K的值,K的值越高,预测越慢