我正在介绍一种新的编码方案(比方说P
),它比计算方便的正交编码(单点;假设Q
)更有意义。更有意义的是,我的意思是所引入的编码揭示了输入字母中的固有依赖性。我了解设计矩阵X
将具有相同数量的有效(>= threshold
)特征值,但分布会有所不同。
如何证明我们无法使用Q
来学习依赖关系,但可以使用P
。由于我想在数据建模中使用方案P
,因此我想获得一个正式的证明,证明P
可以揭示依赖关系,而Q
不能。
我想知道如何证明编码方案P
可以代表Q
,但不能相反。或者,如何从数据中分离出相关信息。请参见下面的示例:
字母空间:{A
,B
,C
,D
}
旧方案(Q
):
A = [1, 0, 0, 0]
B = [0, 1, 0, 0]
C = [0, 0, 1, 0]
D = [0, 0, 0, 1]
新方案P
揭示了字母之间的部分依赖性:
A = [<0, 0, 0, 1>, <0, 0, 1, 0>, <0, 0, 0, 1>, <1, 0, 0, 0>]
B = [<0, 0, 0, 1>, <0, 0, 0, 1>, <0, 0, 1, 0>, <1, 0, 0, 0>]
C = [<0, 1, 0, 0>, <0, 0, 0, 1>, <0, 0, 1, 0>, <0, 0, 0, 1>]
D = [<1, 0, 0, 0>, <0, 0, 1, 0>, <0, 0, 0, 1>, <0, 0, 0, 1>]
可以看出 dot (A,B)= 2
证明了非正交性。
以下是绘制具有两种不同编码的特征值分布的数据和代码:
import h5py
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
v = h5py.File ("encoding_analysis_sample.h5")
v['data'].keys()
pc_q = v['data']['Q_x']
pc_p = v['data']['P_x']
# scheme Q
pc_q_r1 = np.reshape(pc_q, (5000,40))
u, s, vh = np.linalg.svd(pc_q_r1, full_matrices=True)
pc_q_S_abs = np.abs(s)
all_loci_q = pc_q_S_abs[np.where(pc_q_S_abs >=2e-06)]
all_loci_q.shape
sns.distplot(all_loci_q, hist=True, kde=True,
color = 'darkblue',
hist_kws={'edgecolor':'black'},
kde_kws={'linewidth': 4})
# scheme P
pc_p_r1 = np.reshape(pc_p, (5000,160))
u, s, vh = np.linalg.svd(pc_p_r1, full_matrices=True)
pc_p_S_abs = np.abs(s)
all_loci_p = pc_p_S_abs[np.where(pc_p_S_abs >=2e-06)]
all_loci_p.shape
sns.distplot(all_loci_p, hist=True, kde=True,
color = 'darkblue',
hist_kws={'edgecolor':'black'},
kde_kws={'linewidth': 4})
all_loci_q.shape
(31,)
all_loci_p.shape
(31,)
encoding_analysis_sample.h5.tar.gz
可以找到here。
我们可以看到all_loci_q
和all_loci_p
的特征值数目相同(31),但是分布却不同。我想通过利用特征值揭示字母之间的依赖性来证明P
是真实的表示。
PS:数据文件链接仅有效30天。请最早下载,非常感谢!