kNN算法理论

KNN算法机器学习里面常用的一种分类算法,假设一个样本空间被分为几类,然后给定一个待分类所有的特征数据,通过计算距离该数据的最近的K个样本来判断这个数据属于哪一类。如果距离待分类属性最近的K个类大多数都属于某一个特定的类,那么这个待分类的数据也就属于这个类。

kNN的模型是整个训练数据集。当我们需要预测一个新实例时,kNN算法会搜索训练数据集到k个最相似的实例。其中这k个最相似的实例中,数目最多的类型作为新实例的预测。其核心思想是如果实例的k个最邻近的实例中的大部分属于某一类,那么实例也属于这一类。

如何判断实例之间的相似程度,这需要具体看数据的类型。对于实数数据,我们可以使用欧氏距离。对于分类或二进制数据,可以使用汉明距离。对于回归问题,可以使用预测值的平均值。

kNN算法如何工作

kNN算法属于基于实例的、竞争学习与懒惰学习算法,基于实例的算法是算法模型使用数据实例(或者说数据行),并依据这些实例做出预测的算法。kNN 算法是基于实例算法中的一个极端例子,因为所有的训练数据都成了算法模型的一部分。

它是竞争学习逻辑,因为它内部使用模型元素(数据实例)之间的竞争来做出预测。数据实例之间的相似性计算导致每一个数据实例都竞争去赢,或者说竞争去和需要预测的元素相似,在或者说竞争为预测结果做贡献。

它是懒惰学习算法是因为一直到需要进行预测操作,它才会建立一个预测模型,它总是最后需要出结果的时候才开始干活。

k近邻分类器具有良好的文本分类效果,对仿真实验结果的统计分析表明:作为文本分类器,k近邻仅次于支持向量机,明显优于线性最小二乘拟合,朴素贝叶斯和神经网络。

此算法是分类数据最简单最有效的,因其是基于实例的学习,所以使用时必须要有接近实际数据的训练样本数据,而且还必须保存全部数据集。这可能会出现如果数据集很大,会需要大量的存储空间,在计算距离时还要对每一个数据都要求解计算,是非常耗费时间的。另外此算法无法给出任何数据的基本结构信息。

简单粗暴的算法思路:如果一个样本在特征空间中的k个最相似(即特征空间中最近邻)的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。K通常是不大于20 的整数。kNN算法的结果很大程度取决于k的选择。

kNN算法的优势:

1、  kNN中通过计算对象间的距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,计算距离一般使用欧氏距离和曼哈顿距离:


2、  kNN通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策。

 

劣势:

kNN每预测一个新样本的所属类别时,都会对整体样本进行遍历,所以效率很低,一般会使用K-D树进行优化。

kNN很有用,因为它不对数据做任何的假设,同时使用一致的规则在任意两个数据实例之间计算距离,也因为如此,它被称为非参数,或非线性算法,因为它没有假设一个模型函数。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值