D是Overcompleteness过度完备的
R是Sparsity稀疏的
为什么要稀疏编码,我个人认识是让D尽可能的汇聚更多的信息,它就是一本字典,所以它的信息的超完备的,R是一种检索方式,越稀疏,检索的越快,就好像我们查字典,查一个词和查很多次,是不一样的。如果一个矩阵X分解成DR。那么一定是R很好的在D中查到X。
基向量一定是相互正交垂直的,两个基向量点乘为0. 原始向量可能存在向量共线的问题。基向量保证绝对不共线。稀疏编码就是让矩阵分解,使得该矩阵表达为基向量的线性组合。
D的·是所有行,k是列,是一个超完备的矩阵,包含了大量的信息,h(x)k是一个稀疏的vector。
稀疏编码是找D,让R尽可能稀疏,找基向量,高压缩矩阵。
如何找到稀疏的R,加入稀疏正则化
惩罚项φ®是对R的一个惩罚,不让R过大。所以上述公式的目标就是让R尽可能的小,并且满足DR不断的接近X。注意这里是loss function,而且没有NFM的要求。D里面可以有负数值。
s.t 就是+,蓝色就是正则的范围
什么是稳定的算法。就是当改变训练集的数据时,算法的准确率没有发生大的改变。稀疏编码是不稳定的。因为字典学习就是不稳定,R和D每次都可能不一样。