②【万字详解·附代码】机器学习分类算法之K近邻(KNN)

简介: 【万字详解·附代码】机器学习分类算法之K近邻(KNN)

余弦距离(Cosine Distance)

余弦距离又称余弦夹角,在几何中可用来衡量两个向量方向的差异。机器学习中,借用这一概念来衡量样本向量之间的差异。


(1)二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:


image.png



(2)两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦为:


image.png


余弦距离的意义


余弦夹角取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。


image.png


相关距离(Correlation distance)

相关系数:是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关):


image.png


相关距离:


image.png


汉明距离(Hamming Distance)

定义:两个等长字符串s1与s2的汉明距离为:将其中一个变为另外一个所需要作的最小字符替换次数。

汉明重量:是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。因此,如果向量空间中的元素a和b之间的汉明距离等于它们汉明重量的差a-b。

应用场景:汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。比如在信息编码过程中,为了增强容错性,应使得编码间的最小汉明距离尽可能大。但是,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离等算法。


image.png


关于距离的总结

物理几何空间距离(欧氏距离为代表)

优点:

容易理解,计算简单,而且在样本各个维度数据完整好的情况下具有较理想的预判效果。


缺陷:

1)将各个分量的量纲(scale),也就是“单位”相同的看待了;

2)未考虑各个分量的分布(期望,方差等)可能是不同的。


替代:马氏距离(Mahalanobis Distance),一种基于样本分布的距离。物理上就是在规范化的主成分空间中的欧氏距离。所谓规范化的主成分空间就是已经利用主成分分析对一些数据进行了主成分分解,并且对所有主成分分解轴做了归一化,形成新坐标轴。这些新坐标轴组成的空间就是规范化的主成分空间。


欧氏距离和余弦距离的差异

举例:左下图两个等边三角形,已知边长坐标,求两者之间距离。


可以发现,欧式距离跟余弦距离判断结果恰好相反。


image.png


欧氏距离和余弦距离的差异

原因:


欧氏距离和余弦相似度各自的计算方式和衡量角度不相同,欧氏距离关注的是两点之间的绝对距离,而夹角余弦相似度注重的是两个向量在方向上的差异,而非距离。


如下二维坐标图中,有A、C两个样本,欧氏距离关注的是AC两点的直线段距离,与OA、OC线段长度密切相关;而夹角余弦则是关注OA线段与OC线段重合需扫过的角度(θ)大小,与OA、OC线段长度无关。因此,夹角余弦相似度是整体方向性上的判断,而欧氏距离则是各分量特征的绝对差值判断。


image.png


基于概率统计的距离

如需考虑分量相关性、个体相对于总体的比重等相关因素,更多则是采用基于概率统计的分布距离,较常用的有:马氏距离、巴氏距离、杰卡德相似系数、皮尔逊相关系数等。这些距离的计算多涉及统计学及概率论知识,因而相对较复杂。


KNN算法原理

为了判定未知样本的类别,以全部训练样本作为代表点,计算未知样本与所有训练样本的距离,并以最近邻者的类别作为决策未知样本类别的唯一依据。


KNN分类器是对NN算法的一种改进


算法步骤:

1)计算待分类点与已知类别的点之间的距离

2)按照距离递增次序排序

3)选取与待分类点距离最小的k个点

4)确定前k个点所在类别的出现次数

5)返回前k个点出现次数最高的类别作为待分类点的预测分类


举例说明


如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那类


image.png


如果K=5,蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

image.png



KNN算法需要确定K值、距离度量和分类决策规则


K值过小时,只有少量的训练样本对预测起作用,容易发生过拟合,或者受含噪声训练数据的干扰导致错误


K值过大,过多的训练样本对预测起作用,当不同类别样本数量不均衡时,结果偏向数量占优的样本


距离度量在KNN中,通过计算对象间距离来作为各个对象之间的相似性指标,距离一般使用欧氏距离或曼哈顿距离:


image.png


优点:


1、容易理解,实现简单


2、只需保存训练样本和标记,无需估计参数和训练


3、不易受最小错误概率的影响。理论证明,最近邻的渐进错误率最坏不超过两倍的贝叶斯错误率,最好则接近或达到贝叶斯错误率。


缺点:


1、K值选择不固定,且对分类结果有较大影响。


2、预测结果容易受噪声数据影响。


3、样本不均衡时,新样本的预测会偏向数量占优的一方


4、具有较高的计算复杂度和内存消耗量



相关文章
|
3月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
193 6
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
266 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
1月前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
52 14
|
2月前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
91 2
|
3月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
77 1
|
3月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
3月前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
57 0
|
2天前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
1月前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
1月前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
147 68