k最近邻 (KNN) 算法是一种非参数监督学习分类器,它使用邻近性对单个数据点的分组进行分类或预测。是当今机器学习中使用的流行且简单的分类和回归分类器之一。采用 k 个最近邻的平均值来对分类进行预测。通常用于简单的推荐系统、模式识别、数据挖掘、金融市场预测、入侵检测等。
在机器学习算法的广阔领域中,很少有技术像 K 最近邻 (KNN) 算法一样通用且直观。如果您正在寻找用于模式识别、分类和回归任务的强大工具,KNN 提供了一种简单而有效的方法,可以利用邻近性的力量。
k 最近邻算法的目标是识别给定查询点的最近邻居,以便我们可以为该点分配一个类标签。为了做到这一点,KNN 有一些要求:
确定您的距离指标
为了确定哪些数据点最接近给定的查询点,需要计算查询点与其他数据点之间的距离。这些距离度量有助于形成决策边界,将查询点划分为不同的区域。
k-NN算法中的k值定义了将检查多少个邻居来确定特定查询点的分类。例如,如果 k=1,则该实例将被分配到与其单个最近邻居相同的类。定义 k 可以是一种平衡行为,因为不同的值可能会导致过度拟合或欠拟合。较低的 k 值可能会导致较高的方差,但偏差较低,而较大的 k 值可能会导致较高的偏差和较低的方差。
k 的选择在很大程度上取决于输入数据,因为具有更多异常值或噪声的数据可能会在 k 值较高时表现更好。总体而言,建议 k 为奇数,以避免分类中的平局,并且交叉验证策略可以帮助您为数据集选择最 佳 k。
KNN 中的过拟合和欠拟合
过度拟合:当模型变得过于复杂,从训练数据中捕获噪声或不相关模式时,就会发生过度拟合。在 KNN 的背景下,当我们将 K 设置为非常小的值(例如 1 或 2)时,可能会发生过度拟合。这会导致模型对训练数据中的局部变化过于敏感,从而导致对未见过的数据的泛化能力较差。
2. 欠拟合:当模型太简单而无法捕获数据中的潜在模式时,就会发生欠拟合。在 KNN 的情况下,当我们将 K 设置为较大值(例如训练样本总数)时,可能会发生欠拟合。这会导致模型过于笼统并且过度简化数据中的基础模式。
KNN如何避免过拟合和欠拟合?
为了避免KNN中的过拟合和欠拟合,选择合适的K值很重要。K值小会导致过拟合,而K值大则会导致欠拟合。最 佳 K 值取决于具体的数据集和当前的问题。通常使用交叉验证或网格搜索等技术来找到平衡偏差和方差的最 佳 K 值,从而最 大限度地提高模型在未见过的数据上的性能。
k-NN 算法已在各种应用中使用,主要是在分类中。其中一些用例包括:
- 数据预处理:数据集经常有缺失值,但 KNN 算法可以在称为缺失数据插补的过程中估计这些值。
- 推荐引擎:使用来自网站的点击流数据,KNN 算法已用于向用户提供有关其他内容的自动推荐。这项研究 表明,用户被分配到特定组,并根据该组的用户行为向他们提供推荐。然而,考虑到 KNN 的扩展问题,这种方法对于较大的数据集可能不是最 佳的。
- 金融:它也被用于各种金融和经济用例。例如,一篇论文 展示了如何在信用数据上使用 KNN 来帮助银行评估组织或个人的贷款风险。它用于确定贷款申请人的信用度。另一本期刊 强调了其在股市预测、货币汇率、期货交易和洗钱分析中的用途。
- 医疗保健:KNN 也在医疗保健行业中得到应用,对心脏病和前列腺癌的风险进行预测。该算法的工作原理是计算最可能的基因表达。
- 模式识别:KNN 还有助于识别模式,例如文本和数字分类 。这对于识别您可能在表格或邮寄信封上找到的手写数字特别有帮助。
就像任何机器学习算法一样,k-NN 有其优点和缺点。根据项目和应用,它可能是也可能不是正确的选择。
优点
- 易于实现:鉴于该算法的简单性和准确性,它是新数据科学家首先要学习的分类器之一。
- 轻松适应:随着新训练样本的添加,算法会进行调整以适应任何新数据,因为所有训练数据都存储在内存中。
- 很少的超参数:KNN 仅需要 ak 值和距离度量,与其他机器学习算法相比,这较低。
缺点
- 扩展性不佳:由于 KNN 是一种惰性算法,因此与其他分类器相比,它占用更多的内存和数据存储。从时间和金钱的角度来看,这可能代价高昂。更多的内存和存储将增加业务支出,并且更多的数据可能需要更长的时间来计算。虽然已经创建了不同的数据结构(例如 Ball-Tree)来解决计算效率低下的问题,但根据业务问题,不同的分类器可能是理想的选择。
- 维数诅咒:KNN 算法往往会成为维数诅咒的受害者,这意味着它在处理高维数据输入时表现不佳。这有时也称为峰值现象,即在算法达到最 佳特征数量后,额外的特征会增加分类错误量,尤其是当样本量较小时。维度诅咒是指随着维度(特征)数量的增长,特征空间变得越来越稀疏的现象。在高维空间中,邻近或相似的概念变得不太有意义。这可能会对 KNN 的性能产生负面影响,因为该算法依赖于相似实例彼此接近的假设。在具有高维特征空间的大型数据集中,KNN 的准确性和有效性可能会降低。
- 容易过拟合:由于“维数灾难”,KNN也更容易过拟合。虽然利用特征选择和降维技术来防止这种情况发生,但 k 的值也会影响模型的行为。较低的 k 值可能会过度拟合数据,而较高的 k 值往往会“平滑”预测值,因为它是对更大区域或邻域的值进行平均。但是,如果 k 值太高,则可能无法拟合数据。
-不相关或离群特征:在大型数据集中,经常会遇到不相关或有噪音的特征,这意味着它们对底层模式没有多大贡献,或者具有不一致或误导性的信息。KNN 在距离计算中平等地考虑所有特征,这可能导致决策过程中包含不相关或有噪声的特征。这可能会导致预测不理想并降低性能。
假设我们想了解一条新评论是否属于正面评论或负面评论的类别。为了机器学习算法的可解释性,评论中的每个单词都将被转换为向量。
KNN 算法根据训练过程中发现的文本向量的相似性,将文本向量分为正面评论和负面评论类别。KNN 算法学习数学函数,根据新数据点与特定文本向量组的相似性将其分类到合适的类别。
使用 KNN 算法进行回归的过程与分类的过程几乎相同。唯 一的区别是,在回归中,算法采用最近邻的平均值或中位数来分配类标签,而对于分类问题,类标签是根据多数投票来分配的。
1. KNN 的有效性随着大量训练数据的增加而增加,因此它支持足够的数据表示
2. KNN 可用于分类和回归
3. KNN 是非参数的,因此没有与基础数据相关的假设。因此,它也可以用于非线性数据
4. KNN的实现很简单
1. 测量训练样本中所有数据点之间的距离是一项计算成本高昂的任务
2. 如果训练数据过度随机化,那么根据距离度量分配类标签就会很混乱
3. 对于距训练数据较远的查询点,KNN 不适合
微文:空间区域-普通存在性检测和精细网格化存在检测的比较
微文:首创UWB精细网格化的数字视频位置空间结构化-赋能视频监控
公众号 扫码咨询
![]() |
上海市闵行区中春路4999号莘庄商务楼1326室 |
![]() |
service@covond.com |
![]() |
www.covond.com |
![]() |
交换机:18017588179(孙经理) 无人机:13311882358(孙总) |