【机器学习算法】3、K-近邻算法(一)

简介: 【机器学习算法】3、K-近邻算法(一)

简介


   K-近邻算法是一种基本的分类回归方法,它的输入为实例的特征向量,通过计算新数据与训练数据特征值之间的距离,然后选取 K(K>=1)个距离最近的邻居进行分类判断或回归。


对于回归问题: 输出为实例的值, 回归时, 对于新的实例, 去 K 个最近邻的训练实例的平均值为预测值;

对于分类问题: 输出为实例的类别, 分类时, 对于新的实例, 根据其 K 个最近邻的训练实例的类别, 通过多数表决的方式进行预测类别。


KNN算法的流程




KNN算法的具体步骤


   由于 KNN 方法主要靠周围有限的邻近样本,而不是靠判别类域的方法来确定所属类别,因此对于类域的交叉或重叠较多的待分类样本来说,KNN 更加合适。其算法步骤如下:

第一步:

       准备数据, 对数据进行预处理;


第二步:

       选用合适的测试元组和合适的数据存储结构训练数据;


第三步:

       维护一个大小为 K、按距离由大到小的优先级队列,用于存储最近邻训练元组,随机从训练元组中选取K个元组作为初始的最近邻元组,分别计算测试元组到这 K 个元组的距离,然后将训练元组标号和距离存入优先级队列;


第四步:

       遍历训练元组集,计算当前训练元组与测试元组的欧氏距离,计算距离所用的公式为:

       之后将所得距离L与优先级队列中的最大距离 Lmax 进行比较。若L≥Lmax则舍弃该元组,遍历下一个元组。若L<Lmax,删除优先级元组中最大距离的元组,将当前训练元组存入优先级队列。


第五步:

       遍历完毕后, 计算优先级队列中 K 个元组的多数类, 并将其作为测试元组的类别;


第六步:

       测试元组集测试完毕后计算误差率,继续设定不同的 K 值重新进行训练,最后选取误差率最低对应的 K值。


K 值得选择


若 K 值较小,则相当于用较小的邻域中的训练实例进行预测,“学习” 的近似误差减小;

优点:只有与输入实例较近的训练实例才会对预测起作用;

缺点:“ 学习” 的估计误差会增大,预测结果会对近邻的实例点非常敏感;若近邻的训练实例点刚好是噪声,则预测有很大的可能会出错, 即 K 值减小意味着模型整体变得复杂, 容易发生过拟合。

若 K 值较大,则相当于用较大邻域中的训练实例进行预测;

优点:减少学习的估计误差;

缺点:学习的近似误差会增大,这时输入实例较远的实例点也会对预测起作用,使预测发生错误,即K值越大,意味着模型整体变得简单,当 K=n 时,无论输入实例是什么,都将它预测为训练实例中最多的类,此时模型过于简单,忽略了实例中大量的有用信息。


距离度量


由式可以看到,当p取不同值的时候,p范数就变成了不同的范数:

p=1,L1 范数;也就是曼哈顿距离,图中的红色的线;

p=2,L2 范数;也就是欧氏距离,图中的蓝色的线;

p 趋向无穷,就是 L_infinity 范数,图中的绿色的线。


下图为 p 为不同值时所对应的空间区域:

相关文章
|
2天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
2天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】K-means 聚类算法在 Python 中的实现
【4月更文挑战第30天】K-means 是一种常见的聚类算法,用于将数据集划分为 K 个簇。其基本流程包括初始化簇中心、分配数据点、更新簇中心并重复此过程直到收敛。在 Python 中实现 K-means 包括数据准备、定义距离函数、初始化、迭代和输出结果。虽然算法简单高效,但它需要预先设定 K 值,且对初始点选择敏感,可能陷入局部最优。广泛应用在市场分析、图像分割等场景。理解原理与实现对应用聚类分析至关重要。
|
2天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
2天前
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。
|
2月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
|
29天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
2月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
29 1