I've currently done a bit of homework on the behavior of matrix completion and imputations. I have been assigned to research how different structures of missing values affect the imputation performance of the SoftImpute algorithm.
Currently, I've done imputation on very clear localized information of a matrix. Like only values of a matrix are observed at the corners and in blocks. Though I have encountered a difficult setup, which I don't know why it is not able to impute values.
If I observe values of a matrix in a chess pattern (every other row entry is not observed), the algorithm is unable to impute the missing values. I have also tried to observe values in striped pattern (every second column is observed) and horizontal striped pattern (every second row is observed), without any success in imputing the missing values.
Why isn't the algorithm able to impute the values with these types of patterns?
The setup is:
- A = matrix with normal entries (0-1) of size 100x100
- $A_r$ = low_rank version of A
- rank = 10
- B = chess-pattern observed values of $A_r$
B runs through SoftImpute with:
- regularization parameter $\lambda$ = 0.9
- SoftImpute iteration = 100
- Frobenius norm break = 0.0001