美文网首页
机器学习——K最近邻

机器学习——K最近邻

作者: Bioinfor生信云 | 来源:发表于2024-03-20 09:21 被阅读0次

K最近邻(K-Nearest Neighbors,KNN)是一种基本的机器学习算法,属于监督学习中的一种分类和回归方法。KNN的核心思想是通过测量不同数据点之间的距离来进行分类或回归。它的基本原理是:如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,即采用多数表决的方式进行分类。

什么是KNN

K最近邻(KNN) 是一种非常简单的算法,其中每个观测值都是根据其与其他观测值的“相似性”来预测的。KNN 是一种基于记忆的算法,不能用封闭形式的模型来概括。这意味着在运行时需要训练样本,并且直接根据样本关系进行预测。因此,KNN 也被称为惰性学习器。

KNN算法识别k “相似”或最接近被预测的新记录的观察结果,然后使用这些观察结果的平均响应值(回归)或最常见的类别(分类)k观察结果作为预测输出。


如何定义距离

为了确定哪些数据点最接近给定的查询点,需要计算查询点与其他数据点之间的距离。这些距离度量有助于形成决策边界,将查询点划分到不同的区域。

欧氏距离(p=2):这是最常用的距离度量,仅限于实值向量。使用下面的公式,它测量查询点和另一个被测量点之间的直线。

Manhattan distance (p=1):这也是另一种流行的距离度量,它衡量两点之间的绝对值。它也被称为出租车距离或城市街区距离,因为它通常用网格可视化,说明人们如何通过城市街道从一个地址导航到另一个地址。

闵可夫斯基距离:这种距离度量是欧几里德和曼哈顿距离度量的一般形式。下面公式中的参数p 允许创建其他距离度量。当p等于2时欧几里得距离用这个公式表示,曼哈顿距离用p等于1表示。


汉明距离(Hamming Distance):是用来衡量两个等长字符串在对应位置上不同字符的个数。对于两个等长的字符串A和B,汉明距离是将A中的每个字符与B中的对应位置的字符进行比较,统计不同字符的数量。

image.png

我们使用距离(或相异性)度量来计算观察值之间的相对差异。最常见的距离度量是欧几里德和曼哈顿距离度量。


特征的标准化

在应用knn算法进行建模前,必须要做的一件事就是特征标准化。因为knn依赖于距离的计算,现实数据中,各个特征的标度一般是不一样的,即数据范围有差异,假如某个特征的数值特别大,那么距离的度量就会强烈地被这个较大数值的特征所支配,其他特征起到的作用就很小了,模型也就失去了意义。对特征标准化有多种方法,常见的有min-max标准化,z-score标准化等。

min-max标准化

X为特征向量,Xnew为min-max标准化后的特征向量。min-max标准化后的数值范围为[0,1]


z-score标准化

𝛍表示特征向量X的平均值, 𝛔表示特征向量X的标准差。z-score标准化后的数值范围是无界的(−∞,∞)


哑变量编码

在应用knn进行建模时,有一个前提就是训练数据的特征必须都是数值型的。假如此时训练数据中有名义特征(类别值)


选择kNN

KNN 算法中的k 值定义了将检查多少个邻居以确定特定查询点的分类。例如,如果k=1,则实例将被分配到与其最近的邻居相同的类。定义k 可能是一种平衡行为,因为不同的值可能会导致过度拟合或欠拟合。较低的k 值可能具有高方差,但低偏差,而较大的k 值可能导致高偏差和较低的方差。

应用

基于增强回归树和k-最近邻的反推方法定量地下水点源和非点源硝酸盐污染的影响


KNN算法中参数调整的结果 Sari-Neka 含水层硝酸盐污染的 KNN 模型结果
结论:KNN模型估计分别为24 个(224.6 km2)和12%(116.6 Sari-Neka 含水层的km2) 分别是硝酸盐污染的高和非常高两类的脆弱区。

有需要学习机器学习的朋友欢迎交流

相关文章

网友评论

      本文标题:机器学习——K最近邻

      本文链接:https://www.haomeiwen.com/subject/mqvgodtx.html