Как рассчитать ковариационную матрицу для каждого кластера, например, из k-средних? - PullRequest
3 голосов
/ 30 мая 2011

Я искал везде, и я только нашел, как создать ковариационную матрицу из одного вектора в другой, например, cov (xi, xj).Одна вещь, которая меня смущает, это то, как получить ковариационную матрицу из кластера.Каждый кластер имеет много векторов.как получить их в одну ковариационную матрицу.Любые предложения ??

info:

input: векторы в кластере, Xi = (x0, x1, ..., xt), x0 = {5 1 2 3 4} -> вектор-столбец

(на самом деле это векторный элемент MFCC, который имеет 12 коэффициентов на вектор, после кластеризации их с помощью k-средних, 8 кластеров, теперь я хочу получить ковариационную матрицу для каждого кластера, чтобы использовать ее какковариационная матрица в модели гауссовой смеси)

  output : covariance matrix n x n

1 Ответ

4 голосов
/ 30 мая 2011

Вопрос, который вы задаете: Учитывая набор из N точек измерения D (например, точек, которые вы изначально сгруппировали как «speaker1»), соответствует D-мерному гауссову для этих точек (который мы назовем "гауссиан, который представляет speaker1").Для этого просто вычислите среднее значение выборки и ковариацию выборки : http://en.wikipedia.org/wiki/Multivariate_normal_distribution#Estimation_of_parameters или http://en.wikipedia.org/wiki/Sample_mean_and_covariance

Повторите для других k = 8 динамиков.Я полагаю, что вы можете использовать «непараметрический» стохастический процесс или изменить алгоритм (например, запустить его несколько раз на многих ораторах), чтобы снять предположение о k = 8 ораторов.Обратите внимание, что стандартные алгоритмы кластеризации k-средних (и другие распространенные алгоритмы, такие как EM) очень непостоянны в том смысле, что они будут давать вам разные ответы в зависимости от того, как вы инициализируете, поэтому вы можете захотеть выполнить соответствующую регуляризацию, чтобы наказывать «плохие» решения по мереобнаружить их.


(ниже приведен мой ответ до того, как вы прояснили свой вопрос)

ковариация является свойством двух случайных величин ,что является грубой мерой того, насколько изменение одного влияет на другое

ковариационная матрица является просто представлением для NxM отдельных ковариаций, cov(x_i,y_j), каждый элемент из набора X = (x1, x2, ..., xN) и Y = (y1, y2, ..., yN)

Таким образом, вопрос сводится к тому, что вы на самом деле пытаетесь сделать с этой «ковариационной матрицей»вы ищете?Мелкочастотные кепстральные коэффициенты ... соответствует ли каждый коэффициент каждой ноте октавы?Вы выбрали k=12 в качестве количества кластеров, которые вы хотите?Вы в основном пытаетесь выделить ноты в музыке?

Я не уверен, как ковариация обобщается на векторы, но я предполагаю, что ковариация между двумя векторами x и y равна E[x dot y] - (E[x] dot E[y]) (в основном заменяет умножениес точечным произведением), который даст вам скаляр, один скаляр на элемент вашей ковариационной матрицы.Тогда вы просто вставили бы этот процесс в два цикла for.

Или, возможно, вы могли бы найти ковариационную матрицу для каждого измерения отдельно.Однако, не зная точно, что вы делаете, никто не может дать дальнейший совет, кроме этого.

...