《统计学习方法》
读李航老师之《统计学习方法》一书乃做此笔记。强烈推荐此书,对于从事机器学习、人工智能等计算机热门领域的学者定会受益颇深。
K近邻法
概论:k近邻法(k-nearest neighbor,k-NN)
是一种分类与回归方法。分类时对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方法进行预测。其核心就是利用训练数据集对特征向量空间进行划分。
K近邻算法
定义:
给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例多数属于那个类,就把该输入实例分为这个类。
K近邻法:
输入:训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}。其中x为特征向量,y为实例的类别。
输出:实例x所属的类y.
(1)根据给定的距离度量,在训练集T中找到K个最邻近的点,涵盖这k个点的x的邻域记作Nk(x);
(2)根据分类决策规则决定x的类别y:(公式如下面图所示)
(3)选取包含类别的数量最多的一个类别。
分类决策规则决定x的类别y:
K邻近模型
模型的三个基本要素:距离度量、k值的选择、分类决策规则
。
距离度量:
两个实例点的距离是两个实例点相似程度的反映。
xi,yi的Lp距离
定义:
这里,当p=2时,称为欧式距离
;当P=1时,称为曼哈顿距离
。
K值的选择:
K值 | 近似误差(approximation error) | 估计误差(extimation error) | 模型 |
---|---|---|---|
较小 | 减小 | 增大 | 复杂,容易发生过拟合 |
较大 | 增大 | 减小 | 简单 |
K值一般取一个较小的值,采用交叉验证
来选取最优K值。
分类决策规则:
往往是多数表决
,由输入实例的k个邻近的训练实例中的多数类决定输入实例的类。多数表决等价于经验风险最小化
Kd树
定义:
对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构
(较小计算距离的次数,降低耗时)。
构造kd树:
构造平衡kd树:
输入:k维空间数据集T={x1,x2,x3,…,xN},
输出:kd树
(1)构造根节点(包含T的k维空间的超矩形区域):选择x为坐标轴,以T中所有实例的中位数(后者中间右边的数)为切分点,将根节点对应的超矩形区域切分为两个子区域(通过切分点垂直于X轴切分)。
(2)重复(1)
(3)直到两个子区域没有实例存在时停止。
用kd树的最近邻搜索:
输入:已构造的kd树;目标点x;
输出:x的最近邻.
(1)在kd树中找出包含目标点x的叶结点:从根节点出发,递归的向下访问kd树。若目标点x当前维的坐标小于切分点的坐标,则移动到左子结点,反之亦然。直到子结点为叶结点为止。
(2)以此叶结点为”当前最近点“。
(3)递归的向上回退,在每个结点进行一下操作:
A,如果该结点保存的实例点比当前最近点距离目标点更近,则以该实例点为“当前最近点”;
B,检查另一子结点对应的区域是否与以目标点为球心,以目标点与“当前最近点”间的距离为半径的超球体相交。如果相交,可能在另一个子结点对应的区域内存在距离目标点更近的点,移动到另一个子结点;如果不相交,向上回退;
(4)当回退到根节点时,搜索结束。最后的”当前最近点“即为x的最近邻点。
("I'm not afraid when the rain won't stop" --Flashlight
)