SVD,译为奇异值分解,是一种常用的数据降维方式。一般我们可以对实兑成矩阵作特征值分解,而SVD就类似于对一般情况下MxN的实数矩阵作“特征值分解”,称结果中对角线上的值为奇异值。
而字典学习(Dictionary Learning),又叫KSVD,是一种常用的稀疏表示方法,其本质就是经过K轮迭代,而每次迭代都使用SVD来降维。
分享
SVD
字典学习
关于SVD和字典学习,这位博主的这两篇文章写得很棒,思路清晰准确,尤其是排版让人赏心悦目。自己功力不足,又怕放在收藏夹里吃灰,附链接在此方便日后学习。
代码实现
这里以scipy库中提供的样本图片为例(原本有计算机视觉女生Lena,现换成了一张爬楼梯图),对字典学习的实现过程做一个比较简单的展示和比较详细的注释。
1 | #基本准备 |
以下是字典中“词汇量”(即可表示属性的个数)不同时的三种结果。