@gump88
2016-08-13T20:49:59.000000Z
字数 695
阅读 1209
MachineLearning
距离的计算可以参考机器学习笔记(一)聚类
K值得选取影响着模型的最终效果。如果K值过大,模型过于简单,一个极端,K取整个数据集大小,那么分类决策规则采取多数表决的话,预测结果就是数据集中的大多数类,完全忽略了数据集中的有用信息;如果K取值过小,模型过于复杂,另一个极端,K取1,那么此时模型变成最近邻,容易发生过拟合。
一般次用多数表决规则。
对于数据集为,其中是k维向量,即,那么对该数据建立kd-tree的过程如下:
1. 选取切分维度
对深度为j的节点,切分维度的计算方法为:
2. 选取切分值
对切分维度为,选取所有实例点的维度的中位数作为切分值,对应生成左右子节点。
重复1,2两个步骤,直到没有实例点存在
kd-tree的搜索时间复杂度为:
1. 查找包含目标点x的叶结点
2. 由查找到的叶结点向上查找父节点,在父节点的另一个子节点查找最近邻,如果没有则继续转到回退到上一个节点进行查找。
LSH的思想就是利用原来距离较近的实例点,在经过hash后也很有可能相似,那么将原来的数据进行一次hash,相似的hash进一个bucket中。在进行近邻搜索时,只需要将该实例进行hash到目标bucket,然后在目标bucket中搜索即可,从而大大降低了时间复杂度。