扩散映射是一种非线性降维的方法。
Diffusion map使用了diffusion process的方法,假设黄色数据点a为热源,它可以扩散到其他点,扩散是随机行走的过程,如果目标距离热源远,则扩散概率小,反之扩散概率大。
diffusion process将空间距离转换为状态转移概率,从而确定随机行走的方向,确定细胞发育轨迹。
算法分为确定细胞转移方向(Markov矩阵)和降维(Markov矩阵特征值分解降维)两块;
如图所示,红色为目标细胞,在目标细胞周围有一些细胞,那么Diffusion Map首先计算这些细胞两两之间的距离,如果两个细胞距离较大,那么扩散概率就小,如果两个细胞距离较小,那么扩散概率就大。再将其转换为Markov矩阵,Markov矩阵表示某细胞向其他细胞转移的概率,因此在网络图中,边的权重可以用Markov矩阵中的元素表示:
如上图所示,对于邻近的几个细胞来说,当距离矩阵换算为Markov矩阵后,里面的元素代表细胞间扩散转移的概率,比如
M
12
M_{12}
M12代表cell_1向cell_2转移的概率;
M
13
M_{13}
M13代表cell_1向cell_3转移的概率。距离远的细胞转移概率比较小,距离近的细胞转移概率比较大。
距离可以是节点之间特征的距离;
因此Markov矩阵表示细胞随机转移的方向,进而特征值分解降维到二维即可看出细胞的发育轨迹。
假设数据集中一共有
n
n
n个细胞,Markov矩阵
M
M
M为实对称矩阵,对矩阵进行对角化分解:
M
=
ϕ
Λ
ψ
,
M
t
=
ϕ
Λ
t
ψ
M=\phi\Lambda\psi,M^{t}=\phi\Lambda^{t}\psi
M=ϕΛψ,Mt=ϕΛtψ其中,
ϕ
,
ψ
\phi,\psi
ϕ,ψ互逆,
ψ
\psi
ψ矩阵为
n
×
n
n\times n
n×n的特征向量方阵,
t
t
t表示多重转移次数,转移多次后可以达到平稳状态,这个对角矩阵的主对角线表示的是
M
M
M矩阵的特征值(这里以3个为例):
此时重构数据点:
n
e
w
=
Λ
ψ
=
[
λ
1
ψ
1
,
.
.
.
,
λ
n
ψ
n
]
T
new=\Lambda\psi=[\lambda_{1}\psi_{1},...,\lambda_{n}\psi_{n}]^{T}
new=Λψ=[λ1ψ1,...,λnψn]T其中,
ψ
1
,
.
.
.
,
ψ
n
\psi_{1},...,\psi_{n}
ψ1,...,ψn是
ψ
\psi
ψ矩阵的行向量;
可以得到: ψ M = Λ ψ , ψ M t = Λ t ψ \psi M=\Lambda\psi,\psi M^{t}=\Lambda^{t}\psi ψM=Λψ,ψMt=Λtψ其中, ψ M \psi M ψM代表将特征向量重新旋转拉伸,变换后的特征向量带有 M M M矩阵的特征,即细胞间距离的特征。
特征向量指向的点代表每个细胞在高维空间所在的点,变换后的列向量为带有细胞距离特征的新坐标点。
重构的新坐标点矩阵
n
e
w
new
new等于特征向量矩阵乘Markov矩阵,对应的元素是相等的,并以此作为新坐标点:
其中,
λ
\lambda
λ的顺序为从大到小,反映了发育特征的重要程度,如果想降维到2维,只需要保留
ψ
1
,
ψ
2
\psi_{1},\psi_{2}
ψ1,ψ2对应的数据即可。