个人感觉k近邻应该是所有统计学习方法里最好理解的了,通俗来说就是在数据集中找距离测试数据x最近的k个数据样本,如果A类的数量大于B类的数量,则将测试数据x归为A类,书中也仅用了不到10页来论述这个理论,除基本k近邻理论,还有kd树的阐述。
k近邻法
- 输入:训练集T={(x1,y1),(x2,y2),...,(xN,yN)},其中,xi∈X⊆Rn为实例特征向量,yi∈Y⊆{c1,c2,...,cK}为实例的类别;实例x
- 输出:实例x的类别
(1) 计算距离,在T中找出与x最近邻的k个点,以及包含着k个点的x的邻域Nk(x);
(2) 在Nk(x)中根据分类决策规则(如少数服从多数)决定x的类别y;
1、常见的距离度量方法都有哪些?
-
Lp距离定义为:Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1
- 曼哈顿距离,此时p=1
L1(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣)
- 欧氏距离,此时p=2
L2(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣2)21
2、影响k近邻法的三个要素是什么?
- 距离度量方法
- k值的选择:一般取一个较小的数值,通常采用交叉验证法来选取最优的k值。
- 当选择的k值较小时,近似误差(approximation error)会减小,估计误差(estimation error)会变大,k值的减小意味着整体模型变得复杂,容易发生过拟合。
- k值的增大与上述正好相反,估计误差变小,同时近似误差变大,意味着模型变得太简单。当模型过于简单,会忽略掉数据中大量有用的信息。
- 分类决策规则:一般采用多数表决规则。
3、给定一个二维空间的数据集:T={(2,3)T,(5,4)T,(9,6)T,(4,7)T,(8,1)T,(7,2)T},构造一个平衡kd树?
假设每个数据样本对应x(1),x(2)两个坐标轴,
(1) 先选择x(1)轴的中位数建立超平面,将样本空间分成两个子空间a,b;
(2) 针对子空间a,选择子空间中样本的x(2)轴的中位数建立超平面,进一步划分子空间;针对子空间b,选择子空间中样本的x(2)轴的中位数建立超平面,进一步划分子空间;
(3) 递归调用(1)、(2),直到每个子空间中均无样本点为止,即所有样本点都在分割超平面上。

4、在上述kd树空间中,利用kd树搜索中求点x=(3,4,5)T的最近邻点?