它與K-mean算法原理上是類似的;
K-mean 算法:
(之前寫過:http://www.cnblogs.com/yinheyi/p/6132362.html)
對於初始化的類別中心,可以看作初化的字典(每一列為一個類別中心); 而每一樣本的表示可以用一個稀疏向量表示(此向量只有對應的類別為1,其余為0)
K-svd算法:
http://blog.csdn.net/garrison2012/article/details/48135619
http://blog.csdn.net/abcjennifer/article/details/8693342
http://blog.csdn.net/abcjennifer/article/details/8693342
K-SVD是一種經典的字典訓練算法,依據誤差最小原則,對誤差項進行SVD分解,選擇使誤差最小的分解項作為更新的字典原子和對應的原子系數,經過不斷的迭代從而得到優化的解。
具體可以看看參考文獻;
總結一句話:當更新字典中的一個原子時,把該原子對誤差的貢獻清零,然后對剩余的誤差矩陣進行SVD分解(原因是SVD分解可以把最影響該矩陣的向量找出來,可以說成參量沿主軸的分布, 與主成分分析的原理差不多);
對於k-SVD算法,里面還有一些小細節注意,直接看參考文獻吧;
這里有OMP與K-SVD的工具箱;
http://www.cs.technion.ac.il/~ronrubin/software.html
很好很好的,幫助文檔也很好,很詳細;