Как отличить собственные значения ортогонального и частично коррелированного кодирования? - PullRequest
0 голосов
/ 04 марта 2019

Я ввожу новую схему кодирования (скажем, 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,)

Eigenvalue distribution for encoding scheme Q Eigenvalue distribution for encoding scheme P

encoding_analysis_sample.h5.tar.gz можно найти здесь .

Как мы видим, оба all_loci_q и all_loci_p имеют одинаковое число (31) собственных значений, но распределение другое.То, что я хочу доказать, что P является истинным представлением, раскрывая зависимости между буквами, используя собственные значения.

PS: ссылка на файл данных действительна только в течение 30 дней.Пожалуйста, скачайте в ближайшее время, большое спасибо!

...