降维和度量学习

这里的内容值得一看。 K N N KNN KNN算法基于最近的 k k k个邻居求投票或均值作为分类和回归结果,训练阶段只是保存样本直到收到测试样本才做处理,是一种“懒惰学习”(在训练阶段就进行处理的是“急切学习”),需要考虑的是 k k k的大小和距离公式的选择,合适的选择使得十分简单的 K N N KNN KNN分类器泛化错误率不超过贝叶斯最优分类器错误率的两倍,这里是 k d kd kd树实现的 K N N KNN KNN

机器学习在高维情形下出现数据样本稀疏,距离计算困难,称为“维数灾难”,可以通过降维缓解。多维缩放 M D S MDS MDS是使得原始空间中样本的距离在低维空间中保持的算法,也可直接通过 Z = W T X Z=W^TX Z=WTX将原样本 X X X通过线性降维的方法转换为 Z Z Z,对 W W W有不同约束即可得到不同的线性降维方法,其中一种就是 P C A PCA PCA降维,代码在这。如果把拉格朗日乘子法得到的结果用核函数处理,就可以得到非线性降维(核化线性降维)。评估降维优劣可以通过在原样本 X X X上学习对比在低维样本 Z Z Z上学习的差别

M D S MDS MDS中提到只要有 ∑ i = 1 m z i = 0 , b i j = z i T z j \sum_{i=1}^mz_i=0,b_{ij}=z_i^Tz_j i=1mzi=0,bij=ziTzj,就有 ∑ i = 1 m b i j = ∑ j = 1 m b i j = 0 \sum_{i=1}^m b_{ij}=\sum_{j=1}^mb_{ij}=0 i=1mbij=j=1mbij=0,下面是一些证明:

  • 从几何上看,向量内积就是投影, ∑ i = 1 m b i j = z 1 T z j + z 2 T z j + ⋯ + z m T z j \sum_{i=1}^m b_{ij}=z_1^Tz_j+z_2^Tz_j+\dots+z_m^Tz_j i=1mbij=z1Tzj+z2Tzj++zmTzj,这个式子相当于将向量 z 1 , z 2 , … , z m z_1,z_2,\dots,z_m z1,z2,,zm都投影到向量 z j z_j zj上,然后在 z j z_j zj这条线上求和。已经知道 ∑ i = 1 m z i = 0 \sum_{i=1}^mz_i=0 i=1mzi=0,即向量 z 1 , z 2 , … , z m z_1,z_2,\dots,z_m z1,z2,,zm同起点后各个方向都能抵消,显然投影到同一个方向后也能抵消,即 ∑ i = 1 m b i j = 0 \sum_{i=1}^m b_{ij}=0 i=1mbij=0,另外一个方向求和也是如此。关于线性代数的式子可以多从几何方向想一想
  • 从代数上看,向量的内积满足分配率 a T b + c T b = ( a + c ) T b a^Tb+c^Tb=(a+c)^Tb aTb+cTb=(a+c)Tb,证明在这里,那么拆分之后即得证

流形学习的部分看不太懂,一些相关资料:流形学习t-SNE,LLE,Isomap,流形学习,流形学习详解,度量学习的资料

你可能感兴趣的:(学习笔记,学习,算法)