统计学习方法——学习笔记——k近邻法

首先先确定一下自己的写作思路
模型,最小化目标的确定,算法(求解的具体方法)

模型

k近邻法(这里只讨论分类过程中);该算法的作用是给定一个测试点,从训练集合中根据距离度量找出k个和该点距离最近的点,并具求解出这K个点中所属类别最多的类别当作该测试点的预测类别。
数学公式
输入数据集
在这里插入图片描述
x是特征向量y是对应的类别
第一根据给定的距离度量度量,找出k个点,记这k个点组成的领域为在这里插入图片描述
则该算法的预测值即输出为y
在这里插入图片描述
(I()这个是指示函数,如果y=c该指示函数就等于1,反则为0,这里的arg max(cj))函数的含义是返回让这个求和函数最大时,c的取值)
这个函数的作用就是i从1开始到N,选取邻域中的点所属类别最多的点。
k近相邻法的特殊情况是k=1的情景,陈称为最近邻算法(即选取最近的一个点)

最小化目标的确定

首先我们先了解距离度量。
不名思意,他的意思就是衡量距离大小的准则
具体的一种距离度量的通式为
统计学习方法——学习笔记——k近邻法_第1张图片

因为当p=1和当p=2是甚至更大时候的距离不相同,这里引用一个书中的图来解释一下
统计学习方法——学习笔记——k近邻法_第2张图片
这里我们可以看到当p=1时距离度量整个表达式小于一的表示范围是当中的一个菱形,当p=2时表示的范围是圆形 所以我们可以观察出随着p的增大在相同的距离数值(这里的距离数值为1)下,但是表示的范围不相同。这里选取的p的值时候需要考虑到模型的泛化能力的因素,p越大泛化能力越强,模型简单过拟合,p越小泛化能力越弱,模型欠拟合。
因此在选定完距离度量之后计算给定要预测的点和训练数据集中的每一个点的距离然后选出最近的k个点组成对应的领域。
根据前面所以说的算法模型我们知道,算法确定类别的机制是多数原则,所以我们我们可以使用0-1损失函数得到损失函数
统计学习方法——学习笔记——k近邻法_第3张图片

所以我们的目标函数浮出水面。

算法

k近邻法是一个线性的方法,要计算输入点和每一个点之间的距离如果训练集合过大,计算非常耗时如何去节省计算的次数,这里用了kd树法。
kd树
定义:
Kd-Tree,即K-dimensional tree,是一棵二叉树,树中存储的是一些K维数据。在一个K维数据集合上构建一棵Kd-Tree代表了对该K维数据集合构成的K维空间的一个划分,即树中的每个结点就对应了一个K维的超矩形区域(Hyperrectangle)。
作用:
这个树在我们这个方法中的作用是帮助我们找出k个相邻的点。
构造;
第一:先假设根节点包含所有训练集合的点如果训练集合就一个节点,则以这个节点为根节点。结束反之下一步。
第二:确定一个开始的维度d,计算出集合点在这个维度上的中位数点,以这个点位根节点,将训练集合以这个中位数点为基准分成两个集合,d=(d mod k) +1(这里的k,是表示输入的向量有k维)。
第三遍历当前根的子节点以当前的节点为根重复步骤第一第二第三直至结束。
kd树的遍历:
第一;先根据输入,从建立的kd树上找出包含这个范围的叶子节点,然后以该叶子节点到预测点的距离定义为当前的最小距离。
第二;返回他的父节点,如果父节点有其他的子节点就测试这个节点和预测点的距离,如果比当前最小距离小则就以这个为最小距离点,然后以这个节点为根节点去检查他的节点直至到子树的叶子节点,同样发现最小距离就更改,反之继续返回上一个父节点。
第三:如果返回至根节点则结束返回最小距离的点,否则重复步骤第二,第三。
这样遍历一次kd树就能够返回kd树中距离最小的点了。

你可能感兴趣的:(笔记,机器学习,人工智能)