2012-07-04 2 views
1

Я построил сеть датчиков тела, состоящую из 8 акселерометров. На каждом образце (около 30 Гц) каждый акселерометр дает мне значение X Y и Z.Как подать Скрытую марковскую модель (HMM) с несколькими потоками данных одновременно?

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

один поток данных выглядит следующим образом:

[-4.976763 7.096352 1.3488603]; [-4.8699903 7.417777 1.3515397];... 

Библиотека позволяет определить размерность вектора признаков. В приведенном выше потоке размерность равна 3. Я думал о повышении размерности до 3 x 8 = 24, а затем просто объединить все акселерометры в один векторный вектор 24D.

это способ пойти или это ухудшит мои результаты?

EDIT:

Я собрал мои данные теперь и это выглядит следующим образом (для одного участника):

"GESTURE A",[{407 318 425};...{451 467 358};{427 525 445};][{440 342 456}...;{432 530 449};] 
"GESTURE A",[{406 318 424};...{450 467 357};{422 525 445};][{440 342 456}...;{428 531 449};] 
"GESTURE B",[{407 318 424};...{449 466 357};{423 524 445};][{440 342 456}...;{429 530 449};] 
"GESTURE B",[{380 299 399};...{424 438 338};{404 500 426};][{433 337 449}...;{429 529 449};] 

приведены значения между {... ... ...} представляют собой один акселерометр. На образец (при 30 Гц или около) у меня есть 8 акселерометров. Один образец находится внутри [...]. На примере жестов у меня около 40 блоков [...]

Это ваше предположение, что я беру первый датчик (первый {} каждого блока []) и создаю модель с полученной последовательностью, а то же самое для второго до восьмого ?.

Это даст мне 8 моделей для каждого жестов. Чем тестовая последовательность дает 8 вероятностей. Поэтому для получения класса наложения мне потребуется какое-то многоголосовое голосование. Это то, что вы имели в виду?

Спасибо

ответ

1

Я предлагаю использовать один НММЫ за акселерометр, поэтому 8 параллельных моделей в вашем случае. Затем вы можете оценить каждый канал по отдельности и собрать все вместе, чтобы получить результат. Поэтому вам нужно написать код вокруг библиотеки.

Если вы хотите обрабатывать все в одном HMM, вы должны написать свой собственный тип наблюдения, который может обрабатывать все 8 входных потоков, например. MyObservation extends Observation.

+0

ОК, я попробую это и сообщит о различиях, является ли точность классификации, если я добьюсь успеха. Но не будет ли ваш вариант сделать функцию lib как мета-классификатор? – jorrebor

+0

Я так не думаю. Вы все еще моделируете каждый акселерометр как HMM, но это не означает, что его контекст использования изменяется. Помните, что HMM - это только математическая, вероятностная модель. Это «глупо» в смысле области использования. Но я прочитал несколько работ о распознавании активности с использованием акселерометров и HMM, и все они сделали это с параллельными моделями, по одному для каждого канала. –

+0

Пожалуйста, взгляните на мое редактирование в OP и посмотрите, означает ли это то, что вы имели в виду. – jorrebor