②【万字详解·附代码】机器学习分类算法之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、具有较高的计算复杂度和内存消耗量



相关文章
|
6天前
|
机器学习/深度学习 数据采集 自然语言处理
理解并应用机器学习算法:神经网络深度解析
【5月更文挑战第15天】本文深入解析了神经网络的基本原理和关键组成,包括神经元、层、权重、偏置及损失函数。介绍了神经网络在图像识别、NLP等领域的应用,并涵盖了从数据预处理、选择网络结构到训练与评估的实践流程。理解并掌握这些知识,有助于更好地运用神经网络解决实际问题。随着技术发展,神经网络未来潜力无限。
|
3天前
|
机器学习/深度学习 算法 数据处理
探索机器学习中的决策树算法
【5月更文挑战第18天】探索机器学习中的决策树算法,一种基于树形结构的监督学习,常用于分类和回归。算法通过递归划分数据,选择最优特征以提高子集纯净度。优点包括直观、高效、健壮和可解释,但易过拟合、对连续数据处理不佳且不稳定。广泛应用于信贷风险评估、医疗诊断和商品推荐等领域。优化方法包括集成学习、特征工程、剪枝策略和参数调优。
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】K-means算法与PCA算法之间有什么联系?
【5月更文挑战第15天】【机器学习】K-means算法与PCA算法之间有什么联系?
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】维度灾难问题会如何影响K-means算法?
【5月更文挑战第15天】【机器学习】维度灾难问题会如何影响K-means算法?
|
5天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
【5月更文挑战第14天】【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
|
5天前
|
机器学习/深度学习 运维 算法
【机器学习】可以利用K-means算法找到数据中的离群值吗?
【5月更文挑战第14天】【机器学习】可以利用K-means算法找到数据中的离群值吗?
|
6天前
|
机器学习/深度学习 分布式计算 并行计算
【机器学习】怎样在非常大的数据集上执行K-means算法?
【5月更文挑战第13天】【机器学习】怎样在非常大的数据集上执行K-means算法?
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】列举几种情况,在这些情况下K-means算法难以取得较好效果
【5月更文挑战第13天】【机器学习】列举几种情况,在这些情况下K-means算法难以取得较好效果
|
6天前
|
机器学习/深度学习 传感器 算法
【机器学习】在聚类算法中,使用曼哈顿距离和使用欧式距离有什么区别?
【5月更文挑战第12天】【机器学习】在聚类算法中,使用曼哈顿距离和使用欧式距离有什么区别?
|
6天前
|
数据采集 机器学习/深度学习 人工智能
【机器学习】在使用K-means算法之前,如何预处理数据?
【5月更文挑战第12天】【机器学习】在使用K-means算法之前,如何预处理数据?