综述
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
共同学习,写下你的评论
评论加载中...
作者其他优质文章