综述
- 1.1 Cover和Hart在1968年提出了最初的邻近算法 
- 1.2 分类(classification)算法 
- 1.3 归属于输入基于实例的学习(instance-based learning), 懒惰学习(lazy learning)。在处理训练集的时候,我们并没有建任何的模型,而是对于一个未知的实例,我们开始归类的时候,我们才来看,根据它和我们已知类型的比较,来给他归类,也就是说,在开始并不建什么广泛的模型,而是在我们要进行测试,要对测试集的每一个数进行归类的时候,我们才具体的比较他和训练集之间的关系,给他及时的进行分类,这就是所谓的懒惰学习 
- 归类出动作片还是爱情片: 
 2.未知电影属于什么类型?
- 算法详述 
步骤:
1.为了判断未知实例的类别,以所有已知类别的实例作为参照 
2.选择参数K个已知实例(最近实例的个数) 
3.计算未知实例与所有已知实例的距离 
4.根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别 
细节:关于距离的衡量方法
- Euclidean Distance 定义 
 以上是二维定义,python源码如下:
import mathdef ComputeEuclideanDistance(x1, y1, x2, y2): distance = math.sqrt(math.pow((x1 - x2), 2) + math.pow((y1 - y2), 2)) return distance12345
- 可以推广到多维,每个维度求差平方之后求和之后在开方(分别计算个点与未知点的Euclidean距离) 
 其他距离衡量:余弦值(cos), 相关度 (correlation), 曼哈顿距离 (Manhattan distance)
- k若取值3 ,则 取 d_ag, d_bg, d_cg,而这三个点 所属的实例为爱情片,故未知实例为爱情片 
举例(缺点,如下图Y,根据K值的选择,,而且一般选1357等奇数,因为要进行少数服从多数的投票)
算法优缺点:
- 算法优点 
 1.简单
 2.易于理解
 3.容易实现
 4.通过对K的选择可具备丢噪音数据的健壮性
- 算法缺点 
 1.需要大量空间储存所有已知实例(空间)
 2.算法复杂度高(需要比较所有已知实例与要分类的实例)
 3.当其样本分布不平衡时,比如其中一类样本过大(实例数量过多)占主导的时候,新的未知实例容4.易被归类为这个主导样本,因为这类样本实例的数量过大,但这个新的未知实例实际并木接近目标样本
- 改进版本 
 考虑距离,根据距离加上权重
 比如: 1/d (d: 距离)离他近的点,会得到一个好的权重
原文出处     作者:AngelovLee
共同学习,写下你的评论
评论加载中...
作者其他优质文章
 
                 
             
 

 
 

 
  
			 
					 
					