How to make sure matrix completion can generate a matrix with values in expected range?

99 Views Asked by At

I am doing a matrix completion project. Assume that I have an incomplete matrix like

        func1    func2    func3
prot1     0        0        1
prot2     1        0        1
prot3     0        0        0

I want to use Standard Matrix Completion to recover the matrix, like

        func1    func2    func3
prot1    0.1      0.9       1
prot2     1       0.2       1
prot3    0.3      0.8      0.7

Standard Matrix Completion refers to

$$\min_{W, H} \frac{1}{2} \Vert W \Vert_F^2 + \frac{1}{2} \Vert H \Vert_F^2 + \frac{\lambda}{2} \Vert \Omega \circ (W H^T - Y) \Vert_F^2$$

and $X = WH^T$.

However, I find that the recovered matrix X is not range between 0 and 1, say (just an example, not the truth)

        func1    func2    func3
prot1    -0.1     1.1       1
prot2     1       0.2       1
prot3    0.3      2.1      0.7

How can I restrict the range (here 0-1) of unobserved entries in X (in particular how can I implement it in Tensorflow)?

1

There are 1 best solutions below

0
On

In general, you can add box constraints to the orginal problem to enforce this: \begin{align} \min_{W, H} \quad & \frac 1 2 \|W\|_F^2 + \frac 1 2 \|H\|_F^2 + \frac \lambda 2 \|\Omega \circ (WH^T - Y)\|_F^2, \\ \text{subject to} \quad & 0 \leq W_{i,:}^T H_{j,:} \leq 1, \; \forall i, j, \end{align} where $A_{i,:}$ denotes the $i$-th row of $A$, or equivalently \begin{align} \min_{W, H, X} \quad & \frac 1 2 \|W\|_F^2 + \frac 1 2 \|H\|_F^2 + \frac \lambda 2 \|\Omega \circ (WH^T - Y)\|_F^2, \\ \text{subject to} \quad & X = W H^T, \\ & 0 \leq X_{i,j} \leq 1, \; \forall i, j. \end{align} How these constraints can be implemented with TensorFlow I cannot comment.