



Main Idea: RESCAL is a factorization of multi-relational data, or multigraphs, into unique entity and predicate representations
| Level 1 | 0.982 |
| Budget | 1.0 |
| Creature | 1.0 |
| Film | 1.0 |
| Language | 0.963 |
| Location | 0.953 |
| Level 2 | 0.806 |
| Character | 1.0 |
| City | 0.992 |
| Country | 0.632 |
| Person | 0.991 |
| Parody | 0.33 |
| Zombie | 1.0 |
| Level 3 | 0.946 |
| Actor | 0.987 |
| Capital | 0.992 |
| Character Creator | 0.533 |
| Director | 0.781 |
RESCAL-ALS is an alternating-least squares algorithm to compute the RESCAL factorization, i.e. it optimizes
Computational Complexity of RESCAL-ALS for sparse adjacency tensors
from rescal import rescal
# compute rank-20 factorization of tensor X
A, R = rescal(X, 20, init='nvecs')
General approach: similarity of entities $\approx$ similarity of their relational patterns
Outgoing links
\begin{align*} \vect(X_{i,:,:}) = & \color{deeppink}{\vec{a}_i} R_{(1)} (I \otimes A^T) \\ \vect(X_{j,:,:}) = & \color{cornflowerblue}{\vec{a}_j} R_{(1)} (I \otimes A^T) \end{align*}Incoming links
\begin{align*} \vect(X_{:,i,:}) = & \color{deeppink}{\vec{a}_i} R_{(2)} (I \otimes A^T) \\ \vect(X_{:,j,:}) = & \color{cornflowerblue}{\vec{a}_j} R_{(2)} (I \otimes A^T) \end{align*}| Author | Citation | Venue | |
|---|---|---|---|
| NB | 0.986 | 0.913 | 0.738 |
| MLN(B) | 0.987 | 0.915 | 0.736 |
| MLN(BCTS) | 0.992 | 0.988 | 0.807 |
| CP | 0.984 | 0.991 | 0.746 |
| RESCAL | 0.997 | 0.991 | 0.810 |
By using properties of the Kronecker product and the vectorization operator we can show that updates for $R_k$ can be computed via
where $A = U \Sigma V^T$ and $P_{ij} = \frac{\Sigma_{ii} \Sigma_{jj}}{\Sigma_{ii}^2\Sigma_{jj}^2 + \lambda}$