Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Расстояние Махалонобиса


Автор: Sou4astneg 29.1.2008, 12:32
http://forum.vingrad.ru/forum/topic-7220/hl/%3F%3F%3F%3F%3F%3F%3F-%3F%3F%3F%3F/15.html#st_0_view_0 уважаемый podval поделился алгоритмом идентификации дикторов. После изучения у меня остался вопрос, а топик , к сожалению, уже закрыт. Итак, при разложении исходного сигнала в вейвлет-пакет мы получаем вектор-столбец, состоящий из коэффициетов, характеризующих распределение энергии в частотно-временной области. Т.е. коэффициенты 1-го, .., n-го уровней друг за другом. Формирование эталона происходит простым усреднением этих коэффициентов на множестве реализаций сигнала. Т.е. скажем я повторю 10 раз в микрофон одно и то же слово, получу 10 различных векторов разложения, затем простым усреднением получу эталон. Так же могу получить еще несколько эталонов для других дикторов, получив таким образом несколько классов. Вопрос: как применить расстояние Махаланобиса для задачи идентификации диктора, т.е. соотнесения анализируемой реализации с одним из существующиз классов? На входе имеем вектор-столбец разложения тестируемого сигнала в вейвлет пакет.

Цитата

ОК. Пишу сразу в матричном виде. Найдем сначала ковариационные матрицы (точнее, их оценки) для выборок А1 и А2. Соответствующие им векторы средних Х1 и Х2 мы уже имеем.
1. Центрирование:
В1 = А1 - Х1 - из каждого столбца матрицы А1 надо вычесть вектор средних Х1. То же делаем для А2:
В2 = А2 - Х2.

2. Определяем ковариационные матрицы 

Cov1 = В1'*В1 - это значит умножить В1 транспонированную на В1 (по правилам умножения матриц!) Соответственно
Cov2 = В2'*В2.

Лирическое отступление: строго говоря, чтобы получились действительно ковариационные матрицы, надо поделить Соv1/(n1 - 1) и Соv1/(n2 - 1) , где n1 и n2 - длины векторов Х1 и Х2. Но это сейчас не понадобится.

3. Вычисляем объединенную (пардон, выше сделал очепятку ) матрицу:

Cov12 = (Cov1 + Cov2)/(n1 + n2 - 2)

А для вычисления расстояния Махаланобиса Cov12 надо обратить.



Цитата

Расстояние Махаланобиса и классификация. Для каждой совокупности в выборке вы можете определить положение точки, представляющей средние для всех переменных в многомерном пространстве, определенном переменными рассматриваемой модели. Эти точки называются центроидами группы. Для каждого наблюдения вы можете затем вычислить его расстояние Махаланобиса от каждого центроида группы. Снова, вы признаете наблюдение принадлежащим к той группе, к которой он ближе, т.е. когда расстояние Махаланобиса до нее минимально.




Цитата

Расстояние Махаланобиса:

Dm = [(X1-X2)'*inv(S)*(X1-X2)], 

где X1, X2 - векторы средних для матриц М1 и М2, 
S - объединенная ковариационная матрица, 
inv - операция обращения матриц,
' - операция транспонирования.

Объединенная ковариационная матрица считается так:

S = (Cov1 + Cov2)/(n1 + n2 - 2),

где Cov1 = M1'*M1, Cov2 = M2'*M2.
n1, n2 - длины X1, X2.


Может ли кто-либо прокомментировать эти определения и формулы применительно к вышеописанной ситуации? спасибо

PS. поиск юзал  smile 

Черт, в названии ошибся, пардон, МахалАнобис

Автор: podval 29.1.2008, 21:39
Цитата(Sou4astneg @  29.1.2008,  12:32 Найти цитируемый пост)
Вопрос: как применить расстояние Махаланобиса для задачи идентификации диктора, т.е. соотнесения анализируемой реализации с одним из существующиз классов?


Допустим для простоты, что у нас 3 класса. Для них имеем 3 образца: Х1, Х2, Х3. 
Пришла какая-то реализация Х0, которую надо классифицировать.

Вычисляем  3 расстояния:
  • D01 - расстояние от Х0 до Х1
  • D02 - расстояние от Х0 до Х2
  • D03 - расстояние от Х0 до Х3

Ищем минимум Dmin из (D01, D02, D03).

Если Dmin = D01, то Х0 принадлежит класу Х1.
Если Dmin = D02, то Х0 принадлежит класу Х2.
Если Dmin = D03, то Х0 принадлежит класу Х3.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)