Chapter 6:Similarity-Based Metho
①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就够了:
这个矩阵就很容易可以看出哪个类别和哪个类别容易混淆。只需要计算有多少个原本类别是
一般我们看到的都是归一化之后的,但是这里还不需要,后面的密度估计会需要了。另外一个重要的组成部分就是r,scale。这是指定了核函数的宽度。
意思是r是长度的单位,也就是随着x增长而增长的单位长度。scale r越小,那么我们会越重视近距离点的贡献。
加上分母的原因是使得权值相加为1.
最后得到的就当前的类别。可以直接类比KNN左回归,也可以做分类,或者加上sigmoid函数做逻辑回归。
window 函数
代会原式子其实就是KNN本身。
12.RBF Networks
解释的两个方向:
一个就是刚刚的式子。这样是把高斯函数隆起的这个小山峰放在当前判断的x点上:
第二种方法就是改写上面的式子:
这样就是把高斯函数的小山峰放在了每一个点x上,在X点处就是对x左的贡献:
高度是W,在预测中需要计算的。在当前的这些bump里面,高度是不一样的,如果我们把它改写一下,把w都变成是固定的,或者说把他们变成参数在训练的时候固定下来:
这样就变成了RBF Networks了。 可以看到参数型的RBF会衰减到0,而非参数的不会。具体证明如下:
13.overfitting
N个参数,对于数据的拟合能力肯定是很强的了,那么过拟合的可能性肯定很高,这个时候就需要处理过拟合的问题了。
解决办法很简单,既然是参数多,那么减少一点参数即可:
偏执项是需要的,如果没有偏执项,在类别的均值不是0的话,整个学习曲线可能会变的扭曲。需要注意的是因为u是在高斯函数里面,所以u参数不是线性的,也就是说这个时候运行基础函数是依赖于参数的,这种情况下对于模型的性能提升是很大的。k指定的是假设集的大小,r值的就是一个假设的复杂度。
14.Learning for RBF Networks
有两个参数是需要学习,而u参数是非线性的,直接求导计算的话玩不来,所以需要先确定:根据上面的各种需求就可以求导即可,比如regression,或者是带regular的regression直接套公式即可。
15.KMean均值
上面RBF Network的第一步就是要确定中心点,这里就可以使用k均值算法了。
对上述式子求导即可。
聚类问题是一个NP-hard的问题,但有时候没有必要找到最好的问题,只需要找到比较好的就可以了,然后后面还有w线性参数的优化调整。
16.Probability Density Estimation
x的概率密度是将聚类推广到更精细的表达。密度估计的任务是估计对于给定的x点有多少可能会生成和x相似的点。要知道这个问题,就需要知道数据集里面有多少个和x相似的点。这里的相似度指的其实是距离。
①直方图
把当前空间分成m个相等大小而互不相交的立方体,然后计算每一个立方体里面的点的个数:
加上1/N是为了积分为1,密度积分一定要为1。
但是要满足两个假设,v->0,每一个小空间要趋向于0,这样可以保证空间里面的点是足够接近x的,N*V->
比如要计算x的密度,那么在x点按圆形扩张,知道包含了k个点,然后按照如下公式:
很明显,这样画出来的图像有小尖快,局部对称。但是要注意的是,KNN估计密度的空间必须要有边界,因为上面的参数c就是归一化的,如果没有边界,归一化参数c是求不出来的。k要趋向无穷而k/N要趋向于0使得n远大于k,这样可以保证收敛。
RBF估计
继承了高斯函数形状以及收敛性,如果想要减少bump的话是可以增大scale r的。
17.GMMs
高斯混合模型。一个数据点是有多高斯模型互相贡献而成的,需要求这些高斯模型的参数。
w是这个模型贡献百分比,积分为1。
最大似然估计:
E-M算法求解:
先假设一个变量
learning from data这本书对于E-M算法没有过多的讲解,都是直观解释,在李航老师的统计学习方法里面的公式推导较为完善,前面的博客也提到。但是对于E-M算法是有两种解释方法的,但是结果都是一样的,一般通俗的是比较好理解的。