Re: Помогите: алгоритм сжатия временнОго ряда


Сайт о сжатии >> Форум #Компрессор# >> [Ответить] [Ответы]

Автор: Maxim Smirnov, <msmirn@newmail.ru>
SPb, 06 ноября 2002 года в 13:33:22

В ответ на : Помогите: алгоритм сжатия временнОго ряда от Вячеслав в 06 ноября 2002 года в 10:14:10:


> ДАНО: фрагмент временнОго ряда в виде пар
> , i = 1 .. N
> где
> T[i] - метка времени, unsigned short (два байта);
> V[i] - значение, unsigned short (два байта);
> В общем случае метки времени неэквидистантны.

А жаль ;-)

[skip]
> Такая вот постановка задачи. А ищу я алгоритм сжатия без потерь. Ничего кроме перехода к приращениям с последующим применением какого-либо универсального алгоритма сжатия, в голову не приходит.
> Буду признателен за любую информацию. Есть кой-какое математическое образование, так что пойму если что.


В общем, понятно.
Сжатием аналоговых сигналов я
практически не занимался и охотно
сам почитаю чей-нибудь умный ответ.
Но, чтобы не возникало ощущения
"степь кругом, лишь ветер свищет"
выскажу свои соображения.

Кодировать надо разницу реального
значения и предсказываемую.

Имеем задачу прогнозирования ВР.
Для полноты ощущений отсчеты
неравноотстоящие, ну да ничего.
Разновидностей моделей рядов весьма
много, большая часть весьма
специфична (подогнана под особенности
экон. процессов), но вполне
себе широким классом, хорошо
отражающим реальные процессы, является
семейство вида:
y(n+1) = a0 + a1 y(n) + a2 y(n-1) + ...
+ ap y(n-p) - b1 e(n) - b2 e(n-1) - ...
- bq e(n-q)

y(i) -- наблюдаемое значение в момент
i;
ai, bi -- подбираемые параметры;
e(i) -- ошибка прогноза для момента i.

Это для равноотстоящих отсчетов.
Форму записи для неравноостоящих
не помню.

Те элементы, что с ai, это
авторегрессионная часть, учитывающая
зависимости между отсчета.
Часть с bi -- скользящее среднее;
учитывает локальные изменения шума,
накладывающегося на авторегрессионную
составляющую.

ai, bi подбираются путем решения
оптим. задач (масса методов, все
мне известные громоздки).

Предварительно ряд может дифференци-
роваться нужно число раз, если
есть явно выраженный полиномиальный
тренд. Если тренд линейный, то
вычитание делаем один раз, квадр. --
два раза, и т.п. Для неравноотстоящих
рядов применяются разные коррекции
(опять же не помню, т.к. на практике
сам не работал).
На прочие распространенные модели
можно посмотреть, скажем, где-то
в районе www.statsoft.ru

В общем, определение количества и
значения параметров -- задача
ресурсоемкая. Хотя в случае линейной
регрессии по одной переменной можно
находить коэффициенты довольно быстро.
Если данные более-менее стационарны,
то, возможно, можно подобрать
модель с фиксированными (а не
адаптивными) значениями параметров
и использовать ее.

Что касается адаптации.
Можно пойти так.
Взять какую-нибудь простую модель в
духе ADPCM.
Скажем:
Y(n+1) = k1 y(n) + k2 (y(n) + y(n-1))
+ k3 (Y(n) - y(n))

ki -- параметры;
Y -- предсказываемое
y -- наблюдаемое.


Оценивать точность нескольких
моделей с конкретными значениями
параметров на обработанном куске
ряда и для сжатия следующего куска
выбирать отработавшую наилучшим
образом. k брать, скажем (надо
подумать), от -1 до 1 с шагом 0.5.


Ну, а сами значения отсчетов
V[i] можно сжимать таким же образом,
если там есть какая-то упорядоченность,
либо пожать простым арифметиком по
безусловным частотам.

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

Ответы:



Ответить на это сообщение

Тема:

Имя (желательно полное):

E-Mail:

URL:

Город:

Страна:

Вежливый и подробный комментарий:
(Форматируйте его, пожалуйста, как почту - короткими строками
Еnter в конце строки, пустая строка между параграфами).

Пожалуйста, заполните все поля.
И не нажимайте по два раза на кнопку! Дождитесь ответа сервера.