统计学习方法第三章:k近邻法
来源:互联网 发布:tfboys官方周边淘宝店 编辑:程序博客网 时间:2024/05/16 15:35
- 直观解释:给定一个训练数据集,对于新的输入示例,在训练集中找到与该实例最邻近的
k 个示例,这k 个实例的多数属于某个类,就把该输入示例分为这个类。k 近邻学习算法:
- 输入:训练数据集
T={(x1,y1)..(xi,yi)..(xN,yN)}
其中xi 是实例的特征向量,yi={c1.c2...cK} 为实例的类别,i=1,2,3...N ;- 输出:实例
x 所属的类y .- 步骤:
- 根据给定的距离度量,在训练集
T 中中找出与x 最邻近的k 个点,涵盖这k 点的x 邻域记作Nk(x) ;- 在
Nk(x) 中根据分类决策原则(如多数表决)决定x 的类别y :其中y=arg maxcj∑xi∈Nk(x)I(yi=cj),i=1,2..N;j=1,2..K I 为指示函数,即当yi=cj 时I 为1,否则为0 .k=1 时被称为最近邻算法,对于输入的实例点x ,将从数据集中选取与x 最邻近的点的类作为x 的类.- 模型:
- 对于每个训练实例点
xi ,距离该点比其他店更近的所有点组成一个区域,叫做单元(cell).所有实例点的单元构成了对特征空间的一个划分。最近邻法将实例xi 的类yi 作为其单元中所有点的类标记(class label).- 距离度量:一般使用欧氏距离,但也可以用
Lp 距离或者Minkowski距离.
xi,yi的Lp 距离定义为Lp(xi,xj)=(∑l=1n|x(l)i−x(l)j|p)1p
p≥1 ,当p=2 时就成为欧氏距离。- 分类决策规则:如果分类的损失函数为0-1损失函数,分类函数为
那么误分类的概率为f:Rn→{c1,c2...,ck} 误分类率为P(Y≠f(X))=1−P(Y=f(X)) 即多数表决=误分类率最小=经验风险最小。1k∑xi∈Nk(x)I(yi≠cj)=1−1k∑xi∈Nk(x)I(yi=cj) k 值的选择:
k 较小相当于用较小的邻域中的训练实例进行预测,只有与输入实例较近的训练实例才会对预测结果起作用;缺点是如果邻近点是噪声的话预测会错,即k 值较小容易过拟合。k 较大的话优点是减小学习的估计误差,缺点是近似误差会增大,这时与输入实例较远(不相似)的训练实例也会对预测起作用,导致错误。- 一般在应用中
k 的取值比较小.- kd树:
- kd树是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构,是一种二叉树,表示对k维空间的一个划分,kd树的每个节点对应于一个k维超矩形区域。
- 如何构造kd树:
- 开始:构造根节点,根节点对应于包含数据集T的k维空间的超矩形区域;
- 选择
x(l) 为坐标轴,以T中所有实例的x(l) 坐标的中位数为切分点,划分为2个区域,切分由通过切分点并且与坐标轴x(l) 垂直的超平面实现,由根节点生成深度为1的左右子节点,将罗庵子切分面上的点保存在根节点;- 重复:对深度为j的节点,选择
x(l) 为坐标轴,l=j(mod k)+1 ,以该节点的区域中所有实例的x(l) 坐标的中位数为切分点进行切分,生成深度为j+1的子节点;- 知道两个子区域没有实例存在时停止。
- 如何用kd树进行搜索:
- 在kd书中找出包含目标节点x的叶节点:从根节点出发,递归的向下访问,若目标点x当前维的坐标小于切分点的坐标,则移动到左节点,否则反之,直到子节点为叶节点;
- 以此叶节点为当前最近点,递归向上回退,在每个节点进行以下操作:
- 如果该节点保存的实例点比当前最近点距离目标点更近,则更换当前最近点为该节点;
- 当前最近点一定存在于该节点一个子节点对应的区域,检查该子节点的父节点的另一个子节点对应的区域是否有更近的点
- 当回退到根节点时,搜索结束,最后的当前最近点即为最近点。
- 平均计算复杂度为
O(logN)
0 0
- 统计学习方法第三章:k近邻法
- 统计学习方法第三章笔记——k近邻法
- 统计学习方法笔记,第三章,k近邻法
- [统计学习方法]K近邻法
- 统计学习方法-----k近邻法
- 统计学习方法:k近邻法
- 统计学习方法---k近邻法
- 统计学习方法——第三章K近邻
- 统计学习方法(第三章)k近邻算法
- 统计学习方法 李航---第3章 k近邻法
- 统计学习方法 第3章 k近邻法
- 统计学习方法阅读笔记:k近邻法
- 统计学习方法——k近邻法
- 三、k近邻法--统计学习方法总结
- 统计学习方法读书笔记--3.K近邻法
- 统计学习方法笔记:K近邻法
- 统计学习方法--K近邻法 python实现
- 统计学习方法---KNN(K近邻)
- HDU1269 强连通Tarjan
- reactJS04 - reactjs简单渲染一个导航栏
- 剑指offer面试题30:用自定义堆实现
- 字符串按照一定长度分割并返回数组!(String按照给定长度分割)
- java的设计模式
- 统计学习方法第三章:k近邻法
- Lua版本冒泡算法及其优化
- <a>标签水平居中
- 1085. Perfect Sequence (25)
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
- POJ-1363 Rails(栈应用)
- 我的第一篇博客
- 网络Http 相关 工具 类
- 友盟新浪微博授权提示“找不到文件C8998”的解决办法