Хотите использовать Такера и каноническую полиадическую декомпозицию (cdp или PARAFAC/CANDECOMP) трехмерного тензора для скрытого анализа.
Я использую python, функцию из tensorly.decomposition.parafac библиотеки tensorly.
from tensorly.decomposition import parafac
# Rank of the CP decomposition
cp_rank = 5
Perform the CP decomposition
weights, factors = parafac(result, non_negative=True ,rank=cp_rank , normalize_factors=True, init='random', tol=10e-6)
# Reconstruct the tensor from the factors
cp_reconstruction = tl.kruskal_to_tensor((weights, factors))
Матрицы факторов и ядро не являются уникальными (могут умножаться на невырожденную матрицу), поэтому матрицы факторов изменяются после вызова функции.
Используйте этот код, чтобы понять это:
weights = 0
for i in range(100):
error = weights
weights, factors = parafac(result, non_negative=True ,rank=8, normalize_factors=True, init='random', tol=10e-6)
error -= weights
print(tl.norm(error))
Как я могу описать или проанализировать все компоненты тензора. Имеют ли они какое-либо значение? Для матрицы я понимаю разложение SVD. Что делать для тензора?