MATLAB Tensor 和 N-Way 工具箱张量补全功能评测
Posted 陆嵩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB Tensor 和 N-Way 工具箱张量补全功能评测相关的知识,希望对你有一定的参考价值。
MATLAB Tensor 和 N-Way 工具箱张量补全功能评测
文章目录
在 MATLAB 中,比较成熟的工具箱有 tensor toolbox、n-way toolbox 和 TT-Toolbox (TT=Tensor Train) 。那么,在这些工具箱中,具有通过张量分解进行张量补全功能的有:
- cp_wopt(CP 基于优化):张量工具箱中用于处理缺失数据的加权直接优化 (WOPT) 方法。它是 cp_opt 基于缺失数据的一种改进。
- parafac(CP 基于 ALS):nway 工具箱中的 CP 分解函数,缺失数据设置为 NaN,使用 EM 算法进行处理。它是基于 cp_als 的一种算法的改进。
- tucker(TUCKER 分解):nway 工具箱中的 tucker 分解函数,缺失数据设置为 NaN 即可。
各种乘积表示
Kronecker 乘积就是拿坐标矩阵的每一个元素去分别乘右边的矩阵,张成一个大矩阵。即
A
⊗
B
=
[
a
11
B
a
12
B
⋯
a
1
J
B
a
21
B
a
22
B
⋯
a
2
J
B
⋮
⋮
⋱
⋮
a
I
1
B
a
I
2
B
⋯
a
I
J
B
]
\\mathbfA \\otimes \\mathbfB=\\left[\\beginarraycccc a_11 \\mathbfB & a_12 \\mathbfB & \\cdots & a_1 J \\mathbfB \\\\ a_21 \\mathbfB & a_22 \\mathbfB & \\cdots & a_2 J \\mathbfB \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ a_I 1 \\mathbfB & a_I 2 \\mathbfB & \\cdots & a_I J \\mathbfB \\endarray\\right]
A⊗B=⎣
⎡a11Ba21B⋮aI1Ba12Ba22B⋮aI2B⋯⋯⋱⋯a1JBa2JB⋮aIJB⎦
⎤
Khatri-Rao 乘积就是把相同列数的两个矩阵的对应列分别做 Kronecker 乘积,即
A
⊙
B
=
[
a
1
⊗
b
1
a
2
⊗
b
2
⋯
a
K
⊗
b
K
]
\\mathbfA \\odot \\mathbfB=\\left[\\beginarrayllll \\mathbfa_1 \\otimes \\mathbfb_1 & \\mathbfa_2 \\otimes \\mathbfb_2 & \\cdots & \\mathbfa_K \\otimes \\mathbfb_K \\endarray\\right]
A⊙B=[a1⊗b1a2⊗b2⋯aK⊗bK]
Hadamard 乘积就是两个相同规模的矩阵,矩阵对应相乘
A
∗
B
=
[
a
11
b
11
a
12
b
12
⋯
a
1
J
b
1
J
a
21
b
21
a
22
b
22
⋯
a
2
J
b
2
J
⋮
⋮
⋱
⋮
a
I
1
b
I
1
a
I
2
b
I
2
⋯
a
I
J
b
I
J
]
\\mathbfA * \\mathbfB=\\left[\\beginarraycccc a_11 b_11 & a_12 b_12 & \\cdots & a_1 J b_1 J \\\\ a_21 b_21 & a_22 b_22 & \\cdots & a_2 J b_2 J \\\\ \\vdots & \\vdots & \\ddots & \\vdots \\\\ a_I 1 b_I 1 & a_I 2 b_I 2 & \\cdots & a_I J b_I J \\endarray\\right]
A∗B=⎣
⎡a11b11a21b21⋮aI1bI1a12b12a22b22⋮aI2bI2⋯⋯⋱⋯a1Jb1Ja2Jb2J⋮aIJbIJ⎦
⎤
乘积满足如下法则:
(
A
⊗
B
)
(
C
⊗
D
)
=
A
C
⊗
B
D
(
A
⊗
B
)
†
=
A
†
⊗
B
†
A
⊙
B
⊙
C
=
(
A
⊙
B
)
⊙
C
=
A
⊙
(
B
⊙
C
)
(
A
⊙
B
)
⊤
(
A
⊙
B
)
=
A
⊤
A
∗
B
⊤
B
(
A
⊙
B
)
†
=
(
(
A
⊤
A
)
∗
(
B
⊤
B
)
)
†
(
A
⊙
B
)
⊤
\\beginaligned (\\mathbfA \\otimes \\mathbfB)(\\mathbfC \\otimes \\mathbfD) &=\\mathbfA \\mathbfC \\otimes \\mathbfB \\mathbfD \\\\ (\\mathbfA \\otimes \\mathbfB)^\\dagger &=\\mathbfA^\\dagger \\otimes \\mathbfB^\\dagger \\\\ \\mathbfA \\odot \\mathbfB \\odot \\mathbfC &=(\\mathbfA \\odot \\mathbfB) \\odot \\mathbfC=\\mathbfA \\odot(\\mathbfB \\odot \\mathbfC) \\\\ (\\mathbfA \\odot \\mathbfB)^\\top(\\mathbfA \\odot \\mathbfB) &=\\mathbfA^\\top \\mathbfA * \\mathbfB^\\top \\mathbfB \\\\ (\\mathbfA \\odot \\mathbfB)^\\dagger &=\\left(\\left(\\mathbfA^\\top \\mathbfA\\right) *\\left(\\mathbfB^\\top \\mathbfB\\right)\\right)^\\dagger(\\mathbfA \\odot \\mathbfB)^\\top \\endaligned
(A⊗B)(C⊗D)(A⊗B)†A⊙B⊙C(A⊙B)⊤(A⊙B)(A⊙B)†=AC⊗BD=A†⊗B†MATLAB Tensor 和 N-Way 工具箱张量补全功能评测