投影寻踪算法MATLAB实现
投影寻踪算法的 MATLAB 实现,用起来还是挺顺的。四个.m
文件配合得不错,各自负责初始化、投影计算、残差和更新优化,逻辑上清晰。像你要做数据降维、特征提取,或者可视化前的,这套代码上手快,结构也蛮规整的。
投影寻踪的思路,其实就是在高维数据里找个方向,把它们投到低维空间里,还尽量保留原来的分布特征。核心是优化那个投影方向,所以用到了梯度下降或牛顿法什么的。你会看到project.m
和residual.m
这两个文件反复在跑,一边投影一边测效果。
代码的分工也挺工整的:init.m
设好初始参数,比如迭代轮数、初始向量这些;project.m
负责执行投影计算;residual.m
搞残差评估;update.m
就是每轮优化的主角。你可以循环跑这几个文件,直到满足停止条件,挺适合做可控的实验。
实际跑起来,建议你先检查下数据有没有标准化。用zscore
或者自己动手归一化都行,不然优化效果不稳定。梯度下降那部分你也可以结合下MATLAB 梯度下降法的实现,调下步长参数,效果会更。
顺带一提,这个源代码链接里包含的就是那四个.m
文件,有兴趣你可以下载来看下结构。代码不复杂,变量名也挺直白,适合自己动手改点东西。
如果你之前用过 PCA 或者 t-SNE 之类的降维方法,不妨试试这个,投影寻踪更灵活,优化空间大,而且可解释性也不错。是你想在二维图上看到分群效果的时候,它会比 PCA 表现得更直观。
下载地址
用户评论