《统计学习方法》读书笔记——K邻近法

转载请注明出处:http://www.cnblogs.com/OldPanda/

 

在没接触knn法(即k邻近法)之前,觉得这个算法很高深,应该不是我这种水货能轻易学会的。看完本章之后不禁豁然开朗,其实道理很简单,就是一个多数投票法,像Adaboost算法,但与之相比要简单一些。最近做的项目和分类有关,恰好书上也只讨论了分类问题中的k邻近法。它的输入为样本的特征向量,对应于特征空间中的点;输出为实例的类别,可以去多类。在一些多类分类中经常可以看到k邻近法的身影,比如动物图片分类,天气图片分类等,这一点是感知机算法所不能及的(虽然它也能通过某些方法来进行多类分类,但总感觉不如k邻近法来的利索)。

k邻近法假设给定一个数据集,其中各个样本的类别已定,也就是说,这个算法的分类是针对新的样本来说的,即对新的样本,根据其k个距离最近的训练样本的类别,按照少数服从多数的原则进行预测,因此这个方法不像之前的感知机算法那样具有显式的学习过程。k邻近法实际上利用训练数据对特征向量空间进行划分,并作为其分类的“模型”。k值的选择、距离度量及分类决策规则是k邻近法的三个基本要素。

笔记同书,先介绍k邻近算法,然后讨论k邻近法的模型及三个基本要素,最后是这个算法的一个实现方法——kd树。

1. k邻近算法

上文已经简要介绍了k临近算法的过程,即对一个新的样本,找到特征空间中与其最近的k个样本,这k个样本多数属于某个类,就把这个新的样本也归为这个类。

算法1 (k邻近法)

输入:训练数据集

其中为样本的特征向量,为实例的类别,i=1,2,…,N;样本特征向量x(新样本);

输出:样本x所属的类y。

(1)根据给定的距离度量,在训练集T中找出与x最相邻的k个点,涵盖这k个点的邻域记作

(2)在中根据分类决策规则(如多数表决)决定x的类别y:

                                                                    (1)

式中I为指示函数,即当时I为1,否则为0。

由这个简单的算法过程可以看出来,距离的选择、以及k的选择都是很重要的,这恰好对应的三个要素中的两个,另一个为分类决策规则,一般来说是多数表决法。

(未完待续……)

posted @ 2013-04-16 22:57  OldPanda  阅读(1353)  评论(0编辑  收藏  举报