奇異值閾值法SVT矩陣補(bǔ)全
介紹
奇異值閾值法SVT(Singular Value Thresholding)算法將壓縮感知中求解基追蹤問(wèn)題式的線性Bregman迭代方法擴(kuò)展到了矩陣核范數(shù)最小化問(wèn)題中,該算法將核范數(shù)最小化問(wèn)題轉(zhuǎn)化為下面公式所示:
式中:參數(shù)表示矩陣的Frobenius范數(shù),表示已知的下標(biāo)數(shù)據(jù)集集合,可以用拉格朗日乘子法表示為公式所示:
雖然相對(duì)于早期的矩陣補(bǔ)全算法,比如基于半正定規(guī)劃的方法以及奇異值投影法,SVT可以在人工數(shù)據(jù)上具有較高的收斂精度以及速度,但是在圖像數(shù)據(jù)上,其收斂精度以及速度大大降低。因此,SVT算法仍然需要進(jìn)一步改進(jìn),以適應(yīng)實(shí)際應(yīng)用的需求。

代碼
輸出結(jié)果為

可以看到,原始的矩陣其實(shí)是個(gè)低秩矩陣,秩為2;0表示缺失值,應(yīng)該被填補(bǔ)成1,而算法的輸出為1,結(jié)果還是符合預(yù)期的。
但當(dāng)數(shù)據(jù)換成下面的數(shù)據(jù)時(shí):
svt_data = np.array([[3, 3, 5, 4],
? ? ? ? ? ? ? ? ? ? [6, 6, 0, 8],
? ? ? ? ? ? ? ? ? ? [1, 3, 2, 3],
? ? ? ? ? ? ? ? ? ? [2, 6, 4, 6],
? ? ? ? ? ? ? ? ? ? [5, 3, 8, 9]])
輸出結(jié)果為

可以看到,原始0的位置被填充為5;按照低秩特點(diǎn),該位置真實(shí)值應(yīng)該為10。視頻插補(bǔ)與矩陣補(bǔ)全中使用MC補(bǔ)全結(jié)果為9.7,可見對(duì)于某些數(shù)據(jù)還是不符合預(yù)期的。

在圖像數(shù)據(jù)集上進(jìn)行測(cè)試。隨機(jī)丟失掉80%的像素點(diǎn)。




由于沒(méi)寫對(duì)比的算法,如從像素點(diǎn)恢復(fù)上,這里只能手動(dòng)看出。對(duì)于90%像素點(diǎn)丟失的情況,其他算法相對(duì)于SVT算法,恢復(fù)的效果較好。

參考
https://blog.csdn.net/zfhsfdhdfajhsr/article/details/109709889
https://www.cnblogs.com/louisanu/p/12158793.html
代碼
https://gitee.com/youryouth/mc/tree/3695c308a5a85c66aa3c7951efd1ad593cd83caf/nmf/svt