首页 > 编程语言 >【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版

【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版

时间:2024-10-15 10:13:43浏览次数:1  
标签:KNN plt 模型 样本 test Sentosa DSML 数据

@

目录

一、算法概念

什么是KNN?
  K-近邻 (KNN) 是一种监督算法。KNN 背后的基本思想是在训练空间中找到距离新数据点最近的 K 个数据点,然后根据 k 个最近数据点中多数类别对新数据点进行分类,类似于“物以类聚”的思想,将一个样本的类别归于它的邻近样本。K-近邻算法是一种惰性学习模型(lazy learning),也称为基于实例学习模型,这与勤奋学习模型(eager learning)不一样。
  勤奋学习模型在训练模型的时候会很耗资源,它会根据训练数据生成一个模型,在预测阶段直接带入数据就可以生成预测的数据,所以在预测阶段几乎不消耗资源。
  惰性学习模型在训练模型的时候不会估计由模型生成的参数,他可以即刻预测,但是会消耗较多资源,例如KNN模型,要预测一个实例,需要求出与所有实例之间的距离。
K-近邻算法是一种非参数模型,参数模型使用固定的数量的参数或者系数去定义模型,非参数模型并不意味着不需要参数,而是参数的数量不确定,它可能会随着训练实例数量的增加而增加,当数据量大的时候,看不出解释变量和响应变量之间的关系的时候,使用非参数模型就会有很大的优势,而如果数据量少,可以观察到两者之间的关系的,使用相应的模型就会有很大的优势。
  存在一个样本集,也就是训练集,每一个数据都有标签,也就是我们知道样本中每个数据与所属分类的关系,输入没有标签的新数据后,新数据的每个特征会和样本集中的所有数据对应的特征进行比较,算出新数据与样本集其他数据的欧几里得距离,这里需要给出K值,这里会选择与新数据距离最近的K个数据,其中出现次数最多的分类就是新数据的分类,一般k不会大于20。
  KNN在做回归和分类的主要区别,在于最后做预测时候的决策不同。在分类预测时,一般采用多数表决法。在做回归预测时,一般使用平均值法。
多数表决法:分类时,哪些样本离我的目标样本比较近,即目标样本离哪个分类的样本更接近。
  平均值法: 预测一个样本的平均身高,观察目标样本周围的其他样本的平均身高,我们认为平均身高是目标样本的身高。
  这里就运用了KNN的思想。KNN方法既可以做分类,也可以做回归,这点和决策树等算法相同。
在这里插入图片描述
  由上图KNN分类算法可以发现,数据分为蓝色和绿色两个类别,当有一个新的数据点(红色)出现,并且 K = 5时,可以看到红色点有 3 个绿色近邻样本和 2个蓝色近邻样本,这说明蓝点将被归类为绿色类,因为多数投票为 3。同样,当 K 值变化时,圆内的近邻样本数量会增加,新的数据点被归类到其对应的多数投票类中。

在这里插入图片描述
  在 KNN 回归中,因变量是连续的,分布在整个特征空间中。当有新的数据点红色点出现时,会使用某种距离度量(如欧几里得距离)找到最接近的新数据点的 K 个近邻样本。找到这些邻居后,新数据点的预测值通过计算这些邻居的因变量值的平均值来确定。
例如,假设我们想预测学生的考试成绩,而已知的特征是学习时长。我们已经有了许多学生的学习时长和对应的考试成绩数据。现在,针对一个新来的学生,我们知道他的学习时长,通过 KNN 回归,我们可以找到学习时长最接近的 K 个学生,然后将这 K 个学生的考试成绩取平均值,作为这个新学生的成绩预测。

二、算法原理

(一)K值选择

   $K$值的选择与样本分布有关,一般选择一个较小的 $K$值,可以通过交叉验证来选择一个比较优的 $K$值,默认值是5。如果数据是三维以下的,如果数据是三维或者三维以下的,可以通过可视化观察来调参。
  当$k=1$时的 $k$近邻算法称为最近邻算法,此时将点$X$分配给特征空间中其最近邻的点的类。即:$C_{n}^{1nn}(X)=Y_{(1)}$
   $K$值的选择会对 $k$近邻法的结果产生重大影响。若 $K$值较小,则相当于用较小的邻域中的训练样本进行预测,"学习"的偏差减小。
  只有与输入样本较近的训练样本才会对预测起作用,预测结果会对近邻的样本点非常敏感。
  若 $k$近邻的训练样本点刚好是噪声,则预测会出错。即: 值的减小意味着模型整体变复杂,易发生过拟合。
  优点:减少"学习"的偏差。
  缺点:增大"学习"的方差(即波动较大)。
  若 $K$值较大,则相当于用较大的邻域中的训练样本进行预测。
  这时输入样本较远的训练样本也会对预测起作用,使预测偏离预期的结果。 $K$值增大意味着模型整体变简单。
  优点:减少"学习"的方差(即波动较小)。
  缺点:增大"学习"的偏差。
  应用中, $K$值一般取一个较小的数值。通常采用交叉验证法来选取最优的 $K$值, $K$值的选择取决于数据集和问题。较小的 $K$值可能导致过度拟合,而较大的 $K$值可能导致欠拟合,可以尝试不同的 $K$值,以找到特定数据集的最佳值。

(二)距离度量

  距离度量是 KNN 算法中用来计算数据点之间相似性的重要组成部分,以下是几种常见的距离度量类型:

1、欧式距离

  欧式距离是 KNN 中最广泛使用的距离度量,表示两个数据点在欧几里得空间中的直线距离。
在这里插入图片描述

  计算公式如下:
$$d(x,y)=\sqrt{\sum_{i=1}n\left(x_i-y_i\right)2}$$

2、曼哈顿距离

  曼哈顿距离(Manhattan Distance)是一种衡量两点之间距离的方式,两个点之间的距离是沿着网格(即水平和垂直方向)的路径总和,而不是像欧几里得距离那样的直线距离。
在这里插入图片描述
  计算公式如下:

$$d(x,y)=\sum_{i=1}^n|x_i-y_i|$$

3、闵可夫斯基距离

  闵可夫斯基距离是一个广义的距离度量,可以根据参数

标签:KNN,plt,模型,样本,test,Sentosa,DSML,数据
From: https://www.cnblogs.com/KennethYuen/p/18466891

相关文章

  • 【机器学习(六)】分类和回归任务-LightGBM算法-Sentosa_DSML社区版
    @目录一、算法概念二、算法原理(一)Histogram(二)GOSS1、信息增益2、近似误差(三)EFB三、算法优缺点(一)优点(二)缺点四、LightGBM分类任务实现对比(一)数据加载和样本分区1、Python代码2、Sentosa_DSML社区版(二)模型训练1、Python代码2、Sentosa_DSML社区版(三)模型评估和模型可视化1、Python代......
  • 【机器学习(十)】时间序列—Holt-Winters方法—Sentosa_DSML社区版
    @目录一、Holt-Winters算法原理(一)加法模型(一)乘法模型(三)阻尼趋势二、HoltWinters算法优缺点优点缺点三、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入和统计分析(二)数据预处理(三)模型训练和模型评估(四)模型可视化四、总结一、Holt-Winters算法原理......
  • 【机器学习(九)】分类和回归任务-多层感知机 (MLP) -Sentosa_DSML社区版
    @目录一、算法概念二、算法原理(一)感知机(二)多层感知机1、隐藏层2、激活函数sigma函数tanh函数ReLU函数3、反向传播算法三、算法优缺点(一)优点(二)缺点四、MLP分类任务实现对比(一)数据加载和样本分区1、Python代码2、Sentosa_DSML社区版(二)模型训练1、Python代码2、Sentosa_DSML社区版(三)......
  • 【机器学习(八)】分类和回归任务-因子分解机(Factorization Machines,FM)-Sentosa_DSM
    @目录一、算法概念二、算法原理(一)FM表达式(二)时间复杂度(三)回归和分类三、算法优缺点(一)优点(二)缺点四、FM分类任务实现对比(一)数据加载和样本分区1、Python代码2、Sentosa_DSML社区版(二)模型训练1、Python代码2、Sentosa_DSML社区版(三)模型评估和模型可视化1、Python代码2、Sentosa_DSM......
  • 【机器学习(十一)】糖尿病数据集分类预测案例分析—XGBoost分类算法—Sentosa_DSML社
    @目录一、XGBoost算法二、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入和统计分析(二)数据预处理(三)模型训练与评估(四)模型可视化三、总结一、XGBoost算法  关于集成学习中的XGBoost算法原理,已经进行了介绍与总结,相关内容可参考【机器学习(一)】分类和回归任务......
  • 【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版
    @目录一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入(二)特征工程(三)样本分区(四)模型训练和评估(五)模型可视化三、总结一、背景描述  股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因素......
  • 【机器学习(十二)】机器学习回归案例之二手汽车价格预测—XGBoost回归算法—Sentosa_D
    @目录一、算法和背景介绍二、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入与统计分析(二)数据处理(三)特征选择与相关性分析(四)样本分区与模型训练(五)模型评估和模型可视化三、总结一、算法和背景介绍  关于XGBoost的算法原理,已经进行了介绍与总结,相关内容......
  • 【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版
    文章目录一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入(二)特征工程(三)样本分区(四)模型训练和评估(五)模型可视化三、总结一、背景描述  股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济......
  • KNN算法
    KNN算法一KNN算法介绍二KNN算法API2.1KNeighborsClassifier分类算法2.2KNeighborsRegressor回归算法三两个经典案例3.1鸢尾花案例3.2手写数字识别案例一KNN算法介绍K-近邻算法(KNearestNeighbor,简称KNN).比如根据你的“邻居”来推断出你的类别.KNN算法......
  • 【机器学习(十)】时间序列案例之月销量预测分析—Holt-Winters算法—Sentosa_DSML社区
    文章目录一、Holt-Winters算法原理(一)加法模型(二)乘法模型(三)阻尼趋势二、HoltWinters算法优缺点优点缺点三、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入和统计分析(二)数据预处理(三)模型训练和模型评估(四)模型可视化四、总结一、Holt-......