Cross-Validation

如何在非負矩陣分解中選擇最佳潛在因子數量?

  • August 8, 2014

給定一個矩陣,非負矩陣分解(NMF) 找到兩個非負矩陣和(即所有元素) 將分解後的矩陣表示為:

例如通過要求非負和最小化重構誤差

是否有估算數量的常用做法在 NMF 中?例如,如何將交叉驗證用於該目的?

要在非負矩陣分解中選擇最佳潛在因子數,請使用交叉驗證。

正如您所寫,NMF 的目的是找到低維 WH 所有非負元素最小化重建誤差 |VWH|2 . 想像一下,我們遺漏了一個元素 V ,例如 Vab ,並對結果矩陣執行 NMF,其中缺少一個單元格。這意味著尋找 WH 最小化所有非缺失單元的重建誤差:ijab(Vij[WH]ij)2.

一旦完成,我們就可以預測遺漏的元素 Vab 通過計算 $ [\mathbf W\mathbf H]{ab} $ e{ab}=(V_{ab}-[\mathbf W\mathbf H]{ab})^2. $$可以重複此過程而忽略所有元素 $ V{ab} a b .PRESS E(k)=\sum_{ab}e_{ab} k . E(k) k $ .

請注意,這在計算上可能會很昂貴,因為 NMF 必須為每個遺漏的值重複,並且編程也可能很棘手(取決於執行具有缺失值的 NMF 的難易程度)。在 PCA 中,可以通過省略整行 V (這大大加速了計算),請參閱我在如何對 PCA 執行交叉驗證以確定主成分的數量?,但這在這裡是不可能的。

當然,交叉驗證的所有常用原則都適用於此,因此可以一次省略多個單元格(而不是僅一個單元格),和/或僅對一些隨機單元格重複該過程,而不是循環遍歷所有單元格。這兩種方法都有助於加快這一進程。

**編輯(2019 年 3 月):**請參閱 @AlexWilliams 的這篇非常好的插圖文章:http : //alexhwilliams.info/itsneuronalblog/2018/02/26/crossval。亞歷克斯將https://github.com/kimjingu/nonnegfac-python用於具有缺失值的 NMF。

引用自:https://stats.stackexchange.com/questions/111205