①Similarity Measure
相似度的衡量方法:
Euclidean Distance(欧几里得距离):
Mahalanobi Distance(马氏距离):,其中Q是一个半正定的协方差矩阵,是多维度数据之间的方差。马氏距离比高斯距离考虑的更全面,因为他把数据的维度和数据的大小都考虑了进来。中间的Q矩阵就是起到这个作用,
Cossim Similarity:这个是余弦距离,常用于在文本向量相似度的比较之中。
Jccard Coeffcient:这个比较方法常用于在集合的对比,也就是推荐系统的优良性度量里面。
②Nearest Neighbor
Two competing Principles:
①拟合数据并且得到较低的in-sample error
②in-sample error必须是可信的,可以作为out-of-sample的估计
规则:用最近邻的k个点的变量的类别来指定当前点的类别
Voronoi图:是由一组连续的两邻点直接的垂直平分线组成的连续多边形。
最近邻算法不需要训练过程,所以它是可以实现In-sample error为0的,因为in-sample error就是训练集里面产生的。
③VC Dismension
由于kNN算法理论上是可以拟合任何数据,所以它是可以shatter任何数据,所以它的VC维是无限的,这和凸边型是一样的。
④Feasible of Nearest
在KNN里面的label是一个固定的值,它的概率是百分之一百,我们假设他和logistic regression一样,label是由一定的概率组成。,当
再假设
因为f(x)是我们的最优分类器,所以上面的就是我们能够对一个点做到最好的的结果了。
上面就是最好情况,现在来看看普通情况:
这个时候x的类别是由离x最近的那个点决定的。所以:
当N足够大的时候,在一个有限的空间里面,和可以无限接近,那么,两边取期望:
这只是一种大概的证明方法,如果要更加细致一点:
首先由,回到上面的式子:
,两边取期望:
如果上面的不等式满足N是非常大的一个数,而且是平滑的而且是连续的,那么,所以后面那一项就可以去掉了。
⑤The power of the nearest neighbor
KNN的能力上面已经证明过了,虽然VC维是无穷,以至于表面上看起来没有上面作用,但是实际证明已经表面他的最高错误界限是最优的两倍,也就是说他至少是可以做到最优化分类器的两倍。
K参数控制了这个模型的复杂度,大的K可以使我们得到更加平滑的结果。当k = N的时候,那么整一个分类器就是一个常数的了。
⑥Proper K value
一般是K = 3就够了:
很明显,k = 5的效果肯定是比k = 3要好的,但是相对来说,增长这么一点准确率根本不算什么,hardly worth the effort,不值得我们这么做。
但是这必须要满足两个假设:
k->+
满足上面情况那么这个knn分类器是就是最优的。
⑧Improving the efficiency of Nearest Neighbor
对于KNN,有好处也有坏处。
不需要任何的训练过程,直接就可以运行,但是他的训练复杂度转移到了预测上面。优化方法有两个:
Data Condensing
数据压缩,按照最完美的方法,完美要求保留下来的数据集S要和原来的数据空间是一样的,也就是R整体实数,这是一个很苛刻的条件,基本达不到,所以退一步,只要求保留下来的数据集S和训练集空间上匹配就好了,也就是和训练集得到的预测结果一样即可。
Condensed nearest neighbor algorithm
1.初始化压缩数据集S为随机的K个来自训练集的点。
2.选择一个点,使得这个点在训练集合压缩集上的分类不是一致的。
3.把这个不一致点的最近的点放进压缩集
最多重复N步。
Data Editing and Data Condensing
Data Editing是数据编辑,是去掉噪音点,如果有一个点是和大致数据走向是不一致点的,那么这个点很有可能就是噪音点。
Data Condensing是数据压缩,把一些多余的点去掉减少计算复杂度。