Я ввожу новую схему кодирования (скажем, 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>]
Видно, что точка (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
можно найти здесь .
Как мы видим, оба all_loci_q
и all_loci_p
имеют одинаковое число (31) собственных значений, но распределение другое.То, что я хочу доказать, что P
является истинным представлением, раскрывая зависимости между буквами, используя собственные значения.
PS: ссылка на файл данных действительна только в течение 30 дней.Пожалуйста, скачайте в ближайшее время, большое спасибо!