10分钟掌握《机器学习》第十章-降维与度量学习 《机器学习》第10章·通俗解读 | 降维与度量学习给数据“瘦身”并学会“量距离”前面我们处理的数据特征通常不多比如西瓜的色泽、根蒂、敲声等。但现实中数据可能成百上千维比如一张图片有上万个像素。维度太高会带来麻烦数据变得非常稀疏计算距离超级慢甚至模型失效——这叫“维度灾难”。本章讲的就是怎么给数据“瘦身”降维以及如何学会“量距离”的方法度量学习。1. k近邻学习最简单的“懒人”模型k近邻kNN的思想简单到令人发指给你一个新瓜你去找训练集里离它最近的 k 个瓜看它们大多数是好瓜还是坏瓜少数服从多数。k1只看最近的那个邻居1NNk3看最近的三个投票决定就像你到一个新城市问路时找最近的三个路人问采纳多数人的答案。kNN 几乎没有训练过程只是把数据存起来所以叫懒惰学习。但预测时需要计算新样本到所有训练样本的距离如果数据量大、维度高计算会很慢。重要性质当训练数据足够密每个点附近都能找到邻居时1NN 的错误率最多是贝叶斯最优分类器错误率的 2 倍。这给了懒惰学习一个理论保证。2. 低维嵌入高维里的“真实形状”可能在低维很多时候高维数据是“虚胖”的。比如一个三维空间里的卷曲曲面像一张纸卷成筒其实它是二维的你把它展开就是张平面。降维就是找到那个“展开后的低维空间”让数据既保留原始结构又变得好处理。多维缩放MDS是一种经典方法它只要求降维后样本之间的距离尽量与原始空间保持一致不管具体坐标怎么变。MDS 通过特征值分解可以算出低维坐标。就像你有一张地图高维上面标了各个城市间的实际距离。MDS 就是要找一张新地图低维让上面的距离与实际距离尽量吻合。你甚至不需要知道地图的原坐标只要距离对了就行。3. 主成分分析PCA最常用的降维方法PCA 的想法非常直观找到数据“最分散”的几个方向把数据投影到这些方向上丢掉其他方向。第一个主成分数据方差最大的方向最能区分样本的方向第二个主成分与第一个正交且方差次大的方向依此类推举个例子你有一堆瓜特征有“密度”和“含糖率”。这两个特征高度相关密度高的瓜往往含糖率也高。PCA 会找出一个斜的方向比如“0.7×密度 0.7×含糖率”这个方向上的方差最大。你只保留这个方向就把二维降成了一维信息损失很少。就像你拍一个长方形的桌子从正上方拍二维你看到的是完整的桌面但如果从侧面拍一维你可能只看到一条线丢失了很多信息。PCA 要找到那个“最值得保留的角度”让你丢失的信息最少。PCA 的步骤理解即可对数据做中心化每个特征减去均值计算协方差矩阵对协方差矩阵做特征值分解取最大几个特征值对应的特征向量作为投影方向优点降维后数据相关性最小能有效去噪。缺点它是线性方法对非线性结构比如卷曲的S形效果不好。4. 核化线性降维KPCA让 PCA 也能“弯”当数据不是线性的比如 S 形曲面线性降维会失效。核主成分分析KPCA用核技巧类似 SVM 的核函数先把数据映射到高维空间在那个高维空间做 PCA然后再映射回来隐式完成。就像你把一团拧巴的绳子先拉直高维变换再量它的主要方向PCA最后放回原来的空间但取主要方向时已经不受弯曲影响了。KPCA 计算量较大但对非线性数据效果好。5. 流形学习发现卷曲的低维结构流形就是“局部像欧氏空间整体弯曲”的形状比如地球表面局部是平的整体是球面。流形学习就是想找到高维数据里的这种“弯曲的低维本质”。等度量映射IsomapIsomap 的思想是在高维空间里直接用直线距离不好因为沿着曲面走才是真实路径。所以先构建一个近邻图只连接距离很近的点然后用图上的最短路径距离如 Dijkstra 算法来近似曲面上的测地线距离。最后用 MDS 把这种距离保持降维。就像你要计算从北京到纽约的“真实距离”不能用直线穿地心而要用航线的弧长。Isomap 先找出“允许走的路线”近邻图再算最短路径最后用这些距离来还原低维地图。局部线性嵌入LLELLE 换了个思路每个点可以用它的 k 个邻居线性组合来表示比如 0.5×邻居A 0.3×邻居B 0.2×邻居C。降维后这种线性表示关系要保持不变。LLE 先为每个点找邻居计算线性系数再在低维空间里让这些系数重构误差最小。就像一个网络中的节点局部关系由邻居的权重决定降维后邻居之间的这种“加权和”关系要尽量保留。Isomap 和 LLE 都能发现卷曲的低维结构如 S 形常用于可视化降到 2D 或 3D 画出来。6. 度量学习学会“量距离”降维是找到一个新的低维空间隐式地改变距离。但为什么不直接学习一个更适合当前任务的距离度量呢马氏距离是基础形式带权重的欧氏距离权重矩阵 M 可以学习半正定矩阵。近邻成分分析NCA是一种度量学习方法目标让 KNN 在留一法上的正确率最大。它给每个样本分配一个“影响力”影响力随距离的减小而增大然后最大化同类样本的影响力之和。就像你调整一个“距离卷尺”希望量出来的距离让同类更近、异类更远。如果学到的 M 是低秩的马氏距离就等价于先做线性投影再算欧氏距离于是度量学习也能降维。 第十章总结背下这5句就够了kNN懒惰学习找最近的 k 个邻居投票简单但计算量大降维目的缓解维度灾难找到数据的低维“真实结构”PCA找方差最大的方向投影最常用的线性降维方法流形学习Isomap、LLE处理弯曲的非线性结构保持局部或测地距离度量学习直接学习一个适合任务的距离函数马氏距离、NCA能提升 kNN 等算法性能 下章预告第十一章讲特征选择与稀疏学习。降维是“变换”特征生成新特征而特征选择是“挑”出一部分原始特征。你会学到怎么自动挑出最重要的特征比如西瓜的“根蒂”远比“色泽”重要以及 LASSO 这种能让模型自动变稀疏的魔法。