Подобие векторных моделей для нестационарных временных рядов

53 сообщения / 0 новых
Последнее сообщение
Подобие векторных моделей для нестационарных временных рядов

Меня заинтересовал приведенный в статье метод определения подобия произвольных векторов временного ряда. К моей задаче этот метод не совсем подходит, поэтому решил проконсультироваться о выборе подходящего метода.

 

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

 

Под эталонным вектором я понимаю набор опорных точек, связанных некоторыми соотношениями.  Например, имеем временной ряд: {Y1,Y2,..,Ya,..,Yb,.. ,Yс,..Yn-1,Yn}, где Ya, Yb и Yс – опорные точки, связанные отношением Ya < Yb > Yс, а {Ya,Yb,Yс} – эталонный вектор.

 

Опорные точки временного ряда определяются таким образом (есть методика), что их совокупность однозначно определяет характер динамики параметра временного ряда. Например, опорными точками временного ряда {1,2,3,4,5,4,3} будут {1,..,..,..,5,..,3}, а эталонным вектором можно назвать {1,5,3} (соблюдено отношение 1 < 5 > 3).

 

Так вот, задача состоит в том, чтобы находить «образ» эталонного вектора внутри временного ряда. При этом нужно учитывать, что распознавание подобного вектора должно быть устойчиво к различным видам масштабирования – к горизонтальному/временному масштабированию (кол-во промежуточных точек между опорными точками может измениться), к вертикальному масштабированию (абсолютные величины значений опорных точек могут изменяться), к несимметричному масштабированию (каждая часть эталона масштабируется по-своему).

 

Проще говоря, алгоритм должен позволять сравнивать эталонный вектор и произвольный вектор (любой длины) из временного ряда, и определять их степень подобия, основываясь на опорных точках эталона.

 

Можете подсказать, как лучше решить мою задачу? Оптимальным алгоритмом для меня является тот, который проще запрограммировать на компьютере.

Андрей, спасибо за любопытный

Андрей, спасибо за любопытный вопрос! На него сходу ответить сложновато.

По моим впечатлениям здесь 2 задачи:

  1. отыскать устойчивые к масштабированнию эталонные вектора (наборы точек, характеризующие временной ряд);
  2. сравнивать эталонные вектор и произвольный вектор.

Так я поняла, что по первой задаче у вас есть методика? А что за методика? Она включает описание того, из чего состоит эталонный вектор? Или она включает еще и алгоритм его формирования?

Мне кажется, что первая задача много сложнее второй. Вторую можно решить регрессией, немного покопавшись, а вот с первой я даже предположить на вскидку не могу, каким образом подойти к ней.

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

Кроме того вопрос: вы каким инструментом анализа собираетесь пользоваться, если навыки программирования не очень сильны?

----------------------
Ирина Чучуева,
команда Математического бюро

-

Добрый день, Ирина.

 

Темой анализа нестационарных временных рядов я занимаюсь не первый год, поэтому методика поиска опорных точек для меня не является проблемой. Если коротко, то опорная точка имеет смысл только в контексте определенного временного масштаба. Допустим, мы выбрали масштаб T часов. Тогда опорные точки – это такие элементы временного ряда, которые являются локальными минимумами или максимумами в пределах интервала Т, которому они принадлежат.

 

Таким образом, если оставить в ряде только опорные точки, то характер колебаний значений элементов временного ряда не изменится. Поэтому можно производить анализ временного ряда только по опорным точкам, пренебрегая остальными точками.

 

Собственно, вопрос именно во второй задаче – сравнении двух векторов и определения степени их подобия. Такую задачу я решаю впервые. Моя математическая база утрачена во времени, поскольку я давно ей не пользовался (со времен окончания института, кстати тоже Бауманки :) ), в итоге приходится многое вспоминать и даже изучать заново. Поэтому мне сильно поможет наличие укрупненного плана (по шагам) решения задачи подобия.

 

Пока я для себя вижу такой план:

1. определить эталонный вектор V (набор эталонов известен заранее) из n опорных точек: V={V1,V2,..,Vn}

2. на исследуемом участке временного ряда выделить опорные точки (по известной методике)

3. для каждого набора S соседних опорных точек временного ряда S={S1,S2,…Sm}, где N<=m<=Nmax, выполнить преобразование F эталонного вектора F(v) и набора опорных точек временного ряда F(s), сравнить результаты преобразований

 

Необходимо определить F.

 

На счет использования регрессии у меня нет идей. Есть идея использовать моменты высших порядков для опорных точек. Пока размышляю над этим...

 

По поводу навыков программирования можно не беспокоиться, они есть в достаточном объеме. :) Говоря о простоте алгоритма, я имею в виду его производительность и скорость вычислений при обработке больших объемов данных. Но это уже дело второе – главное найти этот алгоритм.

Андрей, добрый день!

Андрей, добрый день!

Я постаралась вникнуть в постановку задачи и сделала MS Excel с простым примером того, как я поняла постановку (см вложение к моему сообщению). Посмотрите, так ли мне все понятно! Если так, то пара мыслей у меня уже возникла :-)

Если нет, то поправьте, пожалуйста, прямо в Excel, чтобы было понятнее.

Бауманцам привет!

----------------------
Ирина Чучуева,
команда Математического бюро

Приветствую!

Приветствую!

 

Буду рад любым мыслям, ибо у меня мысли чисто ИТ-ишные, а хочется взглянуть на задачу со стороны матемитика. :)

 

Уточнения внес в файл.

Доплнение...

Я размышлял над заданным вопросом в файле - всегда ли равны размерности эталонного вектора и сравниваемого фрагмента временного ряда - и пришел к выводу, что можно привести задачу к такому виду, когда эти размерности будут равны всегда.

 

Допустим есть эталонный вектор Vn и сравниваемый фрагмент временного ряда Sm. В общем случае m>=n. Можно применить линейную экстраполяцию по шкале времени к обоим векторам, приведя их к единой размерности (n-1)(m-1)+1, при этом мы не исказим сравниваемые векторы.

 

Собственно, вопрос сводится к определению подобия двух векторов одинаковой размерности.

Андрей, добрый день!

Андрей, добрый день!

Я вот как раз вникаю в вашу задачку. Спасибо за пояснения, так как оно важно.

Если у нас вектора V и S одинаковой длины, то самый простой способ попробовать — посчитать корреляцию, т. е. Значение коэффициента линейной корреляции Пирсона R. По ссылке примерчик расчета, если вдруг нужен.

Так как корреляция — это очень просто (обычно используют встроенную функцию), то я бы сделала сразу так.

  1. Посчитала для моего временного ряда и известного V значения корреляции, посмотрела на них глазами.
  2. Так как коэффициент корреляции определяет степень линейной зависимости, то в случае если «рога» вектора V и S будут зеркальным отражением, коэффициент R ≅ -1. Тогда можно попробовать оценить модуль коэффициента R.

Если у нас ничего не выходит с корреляцией R и очевидно, что зависимость нелинейная (я графиков не вижу, а потому не представляю этой зависимости), то тут можно поставить задачу для нейронных сетей, Одно «НО»: как сеть обучать? Например, на входы 1...n подавать вектор V, на входы n+1...n+m вектор S, а дальше нам нужен отклик. Вот тут возникает вопрос: где этот отклик взять?... Или можно придумать другую архитектуру сети: на вход подавать V, и на выход S. В результате после оценивать ошибку и по ошибки определять «подобие».

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

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Спасибо за идеи и отличный пример!

 

Оказывается, мы думаем примерно в одном направлении... :) Когда я понял, что можно привести вектора к единой размерности без искажения исходных данных, то мысль о корреляции не покидала меня. Единственное, что смущает - это что сама корреляция строится на основе взаимного отклонения от среднего обоих сравниваемых векторов, а это неправильно. Например, если у V есть "пик" в начале, а у S есть "пик" в конце, а все остальное более-менее одинаково, то по идее корреляция совпадет, а так быть не должно. И вот сейчас я думаю, что корреляцию нужно попробовать искать между V"=M(V) и S"=M(S), где M - момент вектора относительно его начала, т.е. M(Vi)=i*Vi, M(Si)=i*Si. А еще правильнее, мне кажется, рассмотреть корреляцию моментов векторов относительно их "центра масс". В общем, буду пробовать...

 

По поводу нейросети - это было в моих дальнейших планах. Дело в том, что подобие вектора S эталону V не гарантирует того, что вектор S - "правильный". Иными словами говоря, изо всех подобных векторов S, некоторые "более правильные", чем другие. Критерием этой "правильности" служит некий достаточно простой алгоритм моделирования дальнейшего поведения системы. Грубо говоря, если найдено подобие, то с этого элемента временного ряда нужно запустить алгоритм моделирования и получить результат - удачный исход или нет. Как минимум это позволит сделать вероятностную оценку "доверия подобия эталону" (подобие эталону должно приводить к успешному результату моделирования в большинстве случаев).

 

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

Андрей, добрый день!

Андрей, добрый день!

andreybs wrote:
  Например, если у V есть "пик" в начале, а у S есть "пик" в конце, а все остальное более-менее одинаково, то по идее корреляция совпадет, а так быть не должно.

Вот это я не очень поняла. Что вы имеете в виду под "корреляция совпадает"? С чем она совпадает?

Идеи о том, как посчитать корреляции мне нравятся, но я бы начала совсем с простого. Посчитать - посмотреть, потом подумать, снова посчитать - снова посмотреть, в третий раз подумать. Итеративно можно получить адекватный результат даже с очень простой функцией. Насчет моего метода мне "гипотетизировали" многие, но я доказала на огромной выборке, что мое простое подобие работает, а "выдуманные гипотетизированные" варианты встречаются в жизни оооочень редко :-)))

Насчет нейронных сетей поняла — у нас гипотетически есть отклик, которые показывает подобие. Обучать сеть надо "непротиворечивой выборкой", не факт, что выйдет такая, но попробовать точно стоит. Для таких задач ANN как раз и создавались!

Я тут недавно делала пост с примером нейросети для прогнозирования. Вы можете этот пример для MATLAB взять — там все в закомментировано, так что сможете легко разобраться, как его поправить. А можете сюда, например, выложить выборку какую-нибудь с S и V, а также с откликом. Я планирую продолжать освещать нейронные сети, так что могла бы взять ваши данные и попробовать получить адекватный результат. Если выйдет, то будет отличный пост для нашего блога!

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Добрый день.

 

chuchueva wrote:

Вот это я не очень поняла. Что вы имеете в виду под "корреляция совпадает"? С чем она совпадает?

 

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

 

По поводу нейросети - очень интересные материалы, обязательно почитаю статьи. Разобравшись с подобием векторов попробую его реализовать в виде нейросети, используя примеры. Только вот на счет Mathlab не знаю - мои исходные данные лежат в гигантских таблицах в БД, там их сподручнее будет обрабатывать с помощью SQL. В общем, что загадывать - доберусь до нейросети, будет видно, как ее лучше реализовать.

 

Спасибо за информацию - прям то, что я искал. Буду держать в курсе, как продвигается практическая реализация моей задумки.

Андрей, доброе утро!

Андрей, доброе утро!

Я рада, что удалось помочь! Держите меня в курсе дел, интересно, какие будут у вас впечатления после расчетов.

Насчет MATLAB'а скажу, что если таблицы у вас до 5 млн. строк, то MATLAB с ними легко и просто работает. К БД (MySQL, Oracle и др) он подключается одной строкой кода. Если у вас массивы значительно больше, то ищите другой инструментарий: тут подойдет C#, JAVA или иной мощный язык программирования.

Connection = database('database_name', 'login', 'password', ...
   'com.mysql.jdbc.Driver', ...
   'jdbc:mysql://192.168.0.2/database_name');

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Добрый день.

 

Наконец то я добрался до задачи и сделал пару вычислений (приведение векторов к единой размерности с помощью линейного масштабирования и вычисление корреляции Пирсона). Что получилось - см. на картинке во вложении.

 

В чистом виде корреляция показывает не слишком достоверные результаты. Например, чем отличается розовая и коричневая фигура - да почти ничем, а r отличается на 0.08. А чем отличается серая фигура от зеленой - всем (один пик и три пика), но r у них почти одинаковый.

 

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

Андрей, вы оперативны!

Андрей, вы оперативны!

Я бы сказала, что все выделенные фигуры "аналогичны" и "очень похожи" (подобны!)

Навскидку возникает вопрос: а есть ли этот самый "результат" для исследуемого временного ряда? Помните, мы говорили, что есть результат и мы можем оценить "работает" или "не работает" (0 или 1). Можно ли сюда прицепить этот результат и оценить, как отличается не сам вектор, а результат, полученный на основе вектора? Берем розовую - > считаем розовый результат; далее берем коричневую -> считаем коричневый результат. А далее сравниваем результаты и мы увидим на 1-ом примере, как на деле отличие в R = 0.08 сказываются на результате? Будет ли результат отличаться существенно и несущественно.

Второе, что приходит на ум: данных бы побольше. 100 значений это прямо скажем маловато... Хоть бы на 1000 посмотреть. И еще, если этот ряд "выдуман", то настоятельно рекомендую использовать реальные данные. Это приведет к более быстрому пониманию сути процесса.

Про корреляции: они бывают разные. Пирсона - это линейная корреляции, бывает еще ранговые Спирмена и Кендаля. Смотрите в Википедии, чего к чему, но можно попробовать разные виды корреляции. У вас корреляция считается по 6 точкам, а это маловато. Попробуйте эталон сделать подлиннее, при этом в целом корреляция снизится, но будет более адекватна.

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Добрый день.

 

chuchueva wrote:

Я бы сказала, что все выделенные фигуры "аналогичны" и "очень похожи" (подобны!)

Навскидку возникает вопрос: а есть ли этот самый "результат" для исследуемого временного ряда? Помните, мы говорили, что есть результат и мы можем оценить "работает" или "не работает" (0 или 1). Можно ли сюда прицепить этот результат и оценить, как отличается не сам вектор, а результат, полученный на основе вектора?

 

К сожалению, это не предусмотрено методикой. Ее суть как раз в том, что если фрагмент временного ряда макисмально подобен эталону, то можно прогнозировать поведение значений ряда в непосредственной близости от этого найденного фрагмента. Этот прогноз будет напрямую зависеть от суперпозиции всех ближайших фрагментов временного ряда, подобных тому или иному эталону. Каждый эталон связан с попределенным признаком поведения временного ряда, а суперпозиция признаков позволяет повысить точность прогноза временного ряда. В этом заключена особенность прогнозирования нестационарных временных рядов - в них нужно искать закономерности, а не ожидать повторение истории. Поэтому если на глаз видно, что подобие эталону определяется не верно, то придется искать другие способы анализа подобия, иначе погрешность финальных вычислений будет сликом велика.

 

chuchueva wrote:

Второе, что приходит на ум: данных бы побольше. 100 значений это прямо скажем маловато... Хоть бы на 1000 посмотреть. И еще, если этот ряд "выдуман", то настоятельно рекомендую использовать реальные данные. Это приведет к более быстрому пониманию сути процесса.

Про корреляции: они бывают разные. Пирсона - это линейная корреляции, бывает еще ранговые Спирмена и Кендаля. Смотрите в Википедии, чего к чему, но можно попробовать разные виды корреляции. У вас корреляция считается по 6 точкам, а это маловато. Попробуйте эталон сделать подлиннее, при этом в целом корреляция снизится, но будет более адекватна.

 

Данные выдуманы специально, чтобы проверить алгоритм на простейших примерах. А лгоритм просто не имеет права не работать с такими данными. :)  При этом корреляция считается по двум одинаковым векторам увеличенным в ходе масштабирования до размерности в 15..40 точек. Я думаю, что имеет смысл посчитать сразу несколько видов корреляции и посмотреть, как они сочетаются "в проблеммных" ситуациях. Последую совету и посчитаю ранговые корреляции над исходными и модифицированными векторами. Потом расскажу, к чему это привело.

Андрей, добрый день!

Андрей, добрый день!

По первому пункту я спорить не могу: методика ваша, задача ваша. Вам точно виднее! Я же только со стороны на это гляжу.

А по второму да, попробовать разные виды корреляции точно стоит. Я не работаю вообще с выдуманными данными, хотя у меня ряды как стационарные, так и нет - но тут, опять же, вам виднее меня. Вообще, очень сложно теперь найти ряд стационарный, если исследовать на большом интервале - они все нестационарные: и среднее значение меняется, и дисперсия.

Пишите, как будут какие-то результаты! Интересно!

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Добрый день.

 

Наконец таки я добрался до моей задачи и провел несколько экспериментов. Перепробовав целый ряд различных вариантов преобразования сравниваемых векторов, я пришел к тому, что самым эффективным преобразованием является "производная", т.е. вектор приращений элементов исходного вектора. Вычисляя корреляцию таких производных векторов, получаем дополнительный признак "подобия" векторов (см. рис.)

 

Я себе объясняю модель подобия примерно так... Если вектора разложить на плоскости в виде графика, то корреляция базовых векторов дает нам признак подобия относительно разброса значений векторов на оси Y, а признак подобия производных векторов дает нам признак подобия относительно разброса экстремумов на оси X. Вместе оба признака могут быть использованы для определения истинного подобия векторов.

 

Я еще планирую подумать над преобразованием производной вектора... Хочется как-то ее пронормировать, чтобы ослабить влияние расстояния между экстремумами. Возможно, здесь как-то помогут моменты векторов. Посмотрим. А вообще, результатом я доволен. Можно потихоньку переходить к созданию нейросети.

 

 

andreybs wrote:

Вычисляя корреляцию таких производных векторов, получаем дополнительный признак "подобия" векторов (см. рис.)

 

Забыл добавить по рисунку - в скобках черным указана корреляция производных векторов, а цветом указана корреляция базовых векторов.

 

В очередной раз убеждаюсь, что самое эффективное решение оказфвается самым простым. Бритва Оккама в действии... :)

Андрей, с прошедшими

Андрей, с прошедшими праздниками вас!

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

Это правда: самое эффективное всегда просто :-))) Удачи вам! Рада, что удалось немного помочь в вашей задачке.

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Ирина, добрый день!

 

Мне удалось найти время и реализовать алгоритм поиска похожих участков временного ряда. Я провел ряд экспериментов над реальными данными. Результаты оказались даже лучше, чем я мог ожидать. Комплексный признак подобия позволил из 65000 точек исходных данных с достаточно высокой точностью выявить примерно 1000 релевантных векторов-шаблонов и 30000 ссылок на вхождение этих шаблонов в исходные данные. То есть неупорядоченный хаос удалось представить в виде ограниченного набора моделей. Спасибо, что помогли найти такое удачное решение! :)

 

Что же, приступаем к следующему этапу – построение универсальной статистической модели, позволяющей прогнозировать временной ряд. Мы имеем исходные данные, представленные в нескольких срезах (сериях), каждый из которых содержит определенное число моделей и ссылок на вхождение этих моделей в соответствующую серию исходных данных. Существует набор заранее известных моментов времени, в которых требуется спрогнозировать оптимальные входные параметры и вероятный результат некоторого эксперимента.

 

Приведу пример – нам нужно спрогнозировать оптимальное утреннее время хода из дома и маршрут движения с учетом дорожной обстановки, чтобы доехать на работу за определенное время. Скажем, время выхода должно быть не ранее 8:30 и не позднее 9:30, а время пути не должно превышать 1 час. В качестве исходных данных у нас есть куча экспериментов, когда мы ездили утром в разное время разными маршрутами при разных дорожных условиях и добирались на работу за известное время.

 

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

 

На самом деле задача совсем не тривиальная и хотелось бы ее решить не «методом перебора», а попытаться найти универсальное решение. Скажем, если ранее я искал метод выявления подобия среди векторов временного ряда, когда их элементы принадлежали одному множеству и были одной размерности, то теперь нужно найти подобие среди векторов, состоящих из элементов разной размерности. При этом подобие может затрагивать не все, а только часть элементов вектора (другие элементы не влияют на результат эксперимента).

 

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

Андрей, добрый день!

Андрей, добрый день!

Давайте я пока позадаю вам вопросы.

  1. У вас 1000 шаблонов. Какова их длина от ... до ... значений?
  2. Каково максимальное количество комбинаций, приходящихся на один участок некоторый длины? Например, на отрезок временного ряда от отметки времени t=1 до отметки t=20 приходится 5 шаблонов, при этом на отрезок от t=1001 до отметки t=1020 приходится 25 шаблонов. Каков в целом порядок этих цифр?
  3. Вы пишите "с достаточно высокой точностью выявить примерно 1000 релевантных векторов-шаблонов": какова ошибка "шаблонизации" — значение MAPE? Какая ошибка прогноза MAPE по вашему ряду является эффективной, то есть с какой ошибкой прогноз можно использовать?
  4. Не совсем ясна постановка задачи. Прогноз — это определение будущих значений временного ряда. Вы пишите "спрогнозировать оптимальное утреннее время": не надо путать прогноз (будущее значение) и оптимизацию (нахождение экстремума). Здесь, как мне кажется, нужно отделить мух от котлет - вы оптимизируете или прогнозируете
  5. .
  6. По моим ощущениям, ваш вопрос не в том, как сделать это красиво, мне кажется, что пока с постановкой задачи вообще имеется полный сумбур. Пока ее не будет, о красоте думать рано :-) Попробуйте сформулировать для самой простой задачи вашу постановку. Пусть дано 100 точек временного ряда и вы нашли в них 3 шаблона: один из 5 значений, второй из 7, третий из 8. Насколько и как вы его будете прогнозировать?

Потихонечку можно разобраться и тут. А какая у вас предметная область? И что за прогноз вы делаете? Хоть в самых общих словах расскажите :-)

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Добрый день!

 

1. Все шаблоны от 4 до 8 значений. Особенность предметной области.

 

2. Макс.кол-во комбинаций на единицу длины = 5 шт: 4,5,6,7 и 8 значений в шаблоне. Число не зависит от конкретного участка ряда исходных данных. При t=20, макс.число комбинаций = 100. Реальное распределение моделей по всей длине ряда исходных данных детально я не исследовал, но могу сказать, что оно почти равномерное.

 

3. Я пока не могу оценить ошибку шаблонизации - нет подходящей методику. Проверял выборочно визуально шаблоны из различных временных интервалов и все проверки (более 10 шт) были успешные. Допустимая ошибка прогноза должна быть в пределах 30%. То есть, если хотя бы 70 прогнозов из 100 подтвердятся, то это будет отличный результат. Прогнозируется не сам временной ряд, а вероятный исход события при наличии тех или иных шаблонов (или др. условий) в момент построения прогноза. Если прогноз предвещал свершение события и событие свершилось, то прогноз верен.

 

4. Вы правы, в конечном счете меня интересует прогнозирование не самого временного ряда, а его экстремумов (пояснил в п.3.), т.е. я "оптимизирую".

 

5. В предложенном варианте важно, где именно встречаются эти шаблоны. Допустим, они встретились 50 раз на участке длиной 100 точек. Я выясню, какие шаблоны обнаружены в точке прогнозирования. Далее я найду среди оставшихся точек места, где встречались именно такие же шаблоны и выясню, возникало ли в тех местах интересующее меня событие (именно его мы и прогнозируем, не сам ряд). Получу статистику типа: для такой то комбинации шаблонов событие встречалось в 30% случаев (например), а для другой комбинации шаблонов событие встречалось в 70% случаев. Значит грубо можно рассчитывать, что событие случится с вероятностью 70%. Проблема в том, что реально вероятность возникновения события может лишь частично зависеть от той комбинации шаблонов, с которой мы столкнулись в точке прогнозирования. И тогда выявление закономерностей между возникновением события в истории и обнаружением того или иного набора шаблонов - станет целой проблемой. Я действительно пока не представляю, как можно описать алгоритм выявления этих закономерностей. Вот, разбираюсь, тестирую разные способы...

 

Предметная область - анализ финансовых рынков (ценные бумаги, валютные пары). Я занимаюсь этим не профессионально. Не привожу конкретных примеров, поскольку это все еще больше запутает... :)

 

 

Поразмыслив над постановкой задачи, хочу дополнить п.5...

 

Задача в конечном счете сводится к выявлению связи между неким исходным вектором и группой аналогичных векторов. Каждый вектор состоит из 1 и 0, ч то обозначает наличие или отсутствие конкретного шаблона в данной точке времени. Размерность векторов фиксированная, но достаточно большая - более 1000 тыс элементов.

 

Рассмотрим пример. Исходный вектор -

{0,0,1,1,0,0,1}

и группу векторов -

{1,0,0,1,1,0,1}

{0,1,1,1,1,0,1}

{1,0,1,1,0,0,1}

В данном случае хорошо видна связь исходного вектора с группой: {0,0,0,1,0,0,1} встречается в кажом векторе. Но что, если исходный вектор такой: {1,0,1,0,0,0,0} - он в чистом виде связан только с одним вектором в группе. Так же нужно учесть, что {1,0,0,0,0,0,0} входит в 1 и 3 вектор группы, а {0,0,1,0,0,0,0} входит во 2 и 3 вектор группы.

 

Так вот, задача состоит в том, чтобы определить методику степени связанности исходного вектора с векторами группы. Допустим, связанность 100% говорит о том, что исходный вектор включен во все вектора группы. Если он включен не полностью (только некоторые комбинации его элементов) или он включен не во все вектора группы (частично включен в часть векторов группы), то показатель связанности будет менее 100%. Мне нужно выявить степень связанности исходного вектора с группой, ге прогнозируемое событие свершилось в истории и с группой, где оно не свершилось и имея эти две связи определить вероятность того, что событие свершится в точке исходного вектора. В каком-то смысле, это перекликакется с идеей вычисления корреляции, но не совсем...

Андрей,

Андрей,

я прочитала. Пока нет предложений, я подумаю над этим. Первое ощущение: очень наворочено, а по моему опыту это может оказаться малоэффективным. Предложение к вам — упрощайте! Эффективнее идти от простого к сложному, чем наоборот.

Возник вопрос: я смотрела на фин ряды, не надо боятся меня пугать — вам это вряд ли удастся :-) Так вот то, чего я видела, это по большей части массивы не из 0 и 1, а из -1, 0 и 1. Прогноз всегда делался ультракраткосрочный, то есть на 1-5 значений вперед, пытаются угадать тренд, то есть стабильное состояние, рост или спад. Что у вас означают эти 0 и 1?

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Размышляя по теме дальше я пришел к выводу, что рассматриваемые мною ранее постановки задачи слишком сложные и нужно начать с чего-то более простого. К тому же, я уже не раз убеждался, что простые решения зачастую оказываются самыми верными. В итоге пришел к такому решению...

 

Нам необходимо определить вероятность возникновения некоторого события S в "системе" в момент времени t.

 

Шаг 1. Определяем все моменты времени T в истории, где встретился хотя бы один из векторов-шаблонов из точки t.

 

Шаг 2. Для всех T определяем (с помощью моделирования) возникновение события S.

 

Шаг 3. Для каждого момента времени T выполняем преобразование P(Ti,t), которое определяет подобие состояний "системы" в точках Ti и t. Преобразование P позволяет учесть дополнительные признаки подобия такие, как наличие схожих векторов-моделей на параллельных срезах исходных данных - это чисто технологический момент, поэтому сейчас можно на нем не заморачиваться.

 

Шаг 4. У нас есть набор моментов времени T с известными исходами возникновения события S и оценкой подобия P состояния "системы" по отношению к моменту времени t. Остается ввести условие минимальной степени подобия P и рассчитать вероятность возникновения события S в момент времени t = nT/nP, где nT-число точек Т, где событие сбылось и степень подобия P удовлетворяет граничному условию, а nP- общее число точек T, где степень подобия P удовлетворяет граничному условию.

 

На мой взгляд, выглядит достаточно просто и логично. Нужно будет это опробовать...

Ну вот! Это уже более

Ну вот! Это уже более читабельно и понятно! А про упрощение мы одновременно подумали :-)

Посмотрите на цепи Маркова. Цепь Маркова - это структура, задающая правила переходов из одного состояния в другое, переходы задаются вероятностями. Она просто строиться, по ней ясно, как получить вероятность события по вашей постановке. И кстати, эти цепи используются для моделирования финансовых показателей.

Модели прогнозирования на основе цепей Маркова предполагают, что будущее состояние процесса зависит только от его текущего состояния и не зависит от предыдущих. Вот здесь постановку задачи можно усложнить и включить туда условную вероятность, то есть не вероятность перехода из А в B, а сначала вероятность перехода из А в В, а потом из B в С и т.д. Я давно думала, что эту модель можно изящно модернизировать в соответствие с современными вычислительными мощностями.

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Посмотрю, как использовать цепи Маркова. Спасибо за наводку! :)

Идеология очень похожа на то "красивое" решение, что я ищу...

 

 

Добрый вечер, Ирина.

Хочу поделиться результатами работы. Я применил предложенную концепцию цепей Маркова и получил весьма неплохие результаты: хорошее, положительное матожидание эффективности прогноза на больших выборках и высокая вероятность успешности прогноза (75-80% и выше). Ваша идея про цепи Маркова просто замечательно вписалась в систему! Спасибо за ценную подсказку! :) Ниже краткое описание логики работы.Система (временной ряд) описывается в каждый момент времени конечным набором значимых параметров. В системе происходит событие перехода из одного состояния в другое, когда меняется хотя бы один из этих параметров. Для прогноза поведения системы в настоящий момент времени производится выборка исторических состояний, похожих на текущее состояние. «Похожесть» определяется путем перебора комбинаций параметров и сравнения их текущих и предшествующих значений, для настоящего и исторического момента времени.

 

Критерии сравниваемых комбинаций параметров:- в каждой комбинации должен присутствовать хотя бы один изменившийся параметр,- предыдущее значение изменившегося параметра из комбинации должно совпадать с предыдущим значением этого же параметра в истории,- текущее значение каждого параметра в комбинации должно совпадать с текущем значением этого же параметра в истории.

 

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

 

Беда в том, что эта «вычисляемая вероятность» не соответствует действительности. То есть, если  в «похожие» моменты истории с вероятностью, скажем 95%, срабатывала некая модель поведения системы, то сейчас она сработает с вероятностью лишь 65-70%. То есть критерии «похожести» исторических состояний системы привели к такой выборке исторических состояний, где случайное поведение системы (в соответствии с анализируемой моделью) распределено не равномерно, и не по нормальному закону. 

 

Проблема сводится к тому, чтобы из множества найденных закономерностей нужно выбрать те, в которых система ведет себя максимально предсказуемо. Возможно, если значение параметров поведения системы распределены по закону, максимально похожему на нормальный, то к вероятностные законы будет более точно работать? Я не силен в тервере, поэтому хотел спросить, как мне определить степень «предсказуемости поведения» системы или степень «похожести» распределения случайной величины на нормальный закон? Анализ дисперсии? Или какие иные способы?

 

 

Решил сделать небольшое дополнение в виде примера, который наглядно иллюстрирует проблему.

 

Допустим, мы проводим 2 серии испытаний по 10 экспериментов. Если эксперимент удался, то обозначаем это 1, иначе 0. Задача состоит в том, чтобы определить вероятность успеха эксперимента в начале второй серии экспериментов, основываясь на результатах первой серии.

 

Вариант а)

Результаты 1-й серия экспериментов: 1010101010, вероятность удачного эксперимента=50%. 2-я серия: 1010101010, вероятность удачного эксперимента по итогам двух серий не изменилась=50%.

 

Вариант б)

Результаты 1-й серия экспериментов: 1111111100, вероятность удачного эксперимента=80%. 2-я серия: 0000000011, вероятность удачного эксперимента по итогам двух серий=50%.

 

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

 

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

 

Андрей, добрый день!

Андрей, добрый день!

Здорово, что подсказка оказалась удачной. Я прочитала ваше описание. Первое впечатление немного сумбурно, но мне кажется, что суть ухватила. Давайте я немного подумаю, а после напишу свои мысли или вопросы, если они сформулируются.

На нормальность в реальности опираться не приходится, потому что ее по факту нигде нет — некогда это был очень удобный инструмент, который реальность почти всегда обходит стороною.

----------------------
Ирина Чучуева,
команда Математического бюро

Андрей, давайте кое-что

Андрей, давайте кое-что уточним, а то не все мне, к сожалению, ясно сразу.

andreybs wrote:
 Система (временной ряд) описывается в каждый момент времени конечным набором значимых параметров. В системе происходит событие перехода из одного состояния в другое, когда меняется хотя бы один из этих параметров.

У меня вот тут вопрос: правильно я понимаю, у вас состояние системы (временной ряд) Z(t) = f(N1(t),...,Nq(t)) — есть функция набора параметров?

andreybs wrote:
 Для прогноза поведения системы в настоящий момент времени производится выборка исторических состояний, похожих на текущее состояние.

Правильно я понимаю, что мы ищем такое состояние в прошлом Z(t-k), чтобы разность f(N1(t),...,Nq(t)) и f(N1(t-k),...,Nq(t-k)) была минимальная? Или мы ищем так: [N1(t) - N1(t-k)] и [N2(t) - N2(t-k)]...

Если не сложно, но напишите, какие у вас параметры (как они называются) и сколько их (величина q).

----------------------
Ирина Чучуева,
команда Математического бюро

chuchueva wrote:

chuchueva wrote:

У меня вот тут вопрос: правильно я понимаю, у вас состояние системы (временной ряд) Z(t) = f(N1(t),...,Nq(t)) — есть функция набора параметров?

 

Да, можно и так сказать. Число исследуемых параметров q - фиксировано. Сейчас используется 9 параметров. Каждый параметр - это функция некоторого преобразования над временным рядом на определенном масштабе времени. Например, параметр "тренд в масштабе 1 час" может принимать значения 1,0,-1, что определяет соответствующее направление тренда. Есть такие параметры: "тренд" (направление), "динамика тренда" (усиление/ослабление), "экстремум" (минимумы/максимумы). Рассматриваются 3 масштаба времени. Т.е получаем 9 параметров (3х3).

 

chuchueva wrote:

Правильно я понимаю, что мы ищем такое состояние в прошлом Z(t-k), чтобы разность f(N1(t),...,Nq(t)) и f(N1(t-k),...,Nq(t-k)) была минимальная? Или мы ищем так: [N1(t) - N1(t-k)] и [N2(t) - N2(t-k)]...

 

Не совсем. Наша задача - определить множество исторических состояний f, похожих на текущее состояние. Пусть t - настоящий момент времени, k - исторический момент, M = {Nj} - некоторая комбинация параметров, среди которых есть хотя бы один изменившийся параметр, т.е. Nj(t)<>Nj(t-1). f (N(k)) считается похожей на f(N(t)), если для каждого параметра комбинации M соблюдается: N(t)=N(k) и для каждого изменившегося параметра комбинации M: N(t-1)=N(k-1).

 

Таким образом, для каждой комбинации параметров M мы получим множество исторических моментов K = {k}, соответствующих похожему состоянию системы и зная результаты некоторого эксперимента в эти моменты времени, можем прогнозировать результаты этого же эксперимента в момент времени t.

 

Перебирая все допустимые комбинации параметров M, мы переберем все возможные "признаки подобия" состояний системы и получим множество прогнозов (решений) исхода интересующего нас эксперимента в момент времени t.

 

На финальном шаге мы выбираем наиболее подходящий прогноз (решение) и используем далее его. Сейчас этот выбор осуществляется на основании матожидания эффективности эксперимента, вероятности успешного исхода эксперимента и объема (полноты) выборки исторических моментов K в рассматриваемом решении.

 

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

 

К сожалению, проще объяснить не получается, т.к. система анализа достаточно сложная - по сути она ищет любые закономерности среди n-мерного пространства параметров системы. Задавайте вопросы, буду пояснять детали.

 

 

У меня возникла идея. А что, если саму вероятность успешного исхода эксперимента рассматривать, как случайную величину? Или еще лучше величину ошибки (отклонения) моментальной вероятности от ожидаемой (на большом интервале) рассматривать, как случайную величину. Тогда можно предположить, что максимальная ошибка вероятности может быть вычислена согласно правилу "двух сигм".

 

Вот логика вычислений. Допустим, мы получили для некоторого решения некий набор похожих состояний системы на интервале времени {k, t}. Делим этот интервал на n = {1,..,10} частей, равных по длительности d. Вычисляем вероятность успешного исхода нашего эксперимента для каждого временного отрезка {t, t+d*n}. Получаем набор вероятностей P = {P1,...,Pn}. Отклонение от ожидаемой вероятногсти dPi = Pn-Pi рассматриваем, как случайную величину и считаем, что с вероятностью 95% dPi не превышает величину Q = матожидание(dP) + 2*среднееквадратическое_отклонение(dP). Соответственно на величину Q нам нужно делать поправку рассчетной вероятности всего интервала {k, t}. Что думаете о таком способе?

 

 

А еще немного подумав, пришла мысль, что может вообще не стоит впутывать тервер в оценку погрешности рассчетной вероятности. Коль скоро возникает ошибка из-за неравномерного распределения, то точно такая же проблема возникнет, если рассматривать распределение "вероятности-вероятностей". Гораздо проще применить скользящее среднее к вероятности успешного исхода эксперимента для каждого временного отрезка {t, t+d*n}.

andreybs wrote: Коль скоро
andreybs wrote:
 Коль скоро возникает ошибка из-за неравномерного распределения, то точно такая же проблема возникнет, если рассматривать распределение "вероятности-вероятностей".

Андрей, я прочитала внимательно еще раз ваши сообщения. Мне в целом ясна проблема, которую вы описываете, но как и везде — дьявол прячется в деталях. Я согласна с вышеприведенной фразой, потому что городить огород поверх огорода почти всегда малоэффективно.

Давайте вернемся к проблеме еще разок: у нас модель на этапе оценки дает вероятность исхода 95%, а при тестировании в боевом режиме эта вероятность снижается до 65%. Вот меня интересует вторая цифра: 65% это хорошо или плохо? Насколько нужно ее увеличить, чтобы считать результат прогноза адекватным для реальной работы?

Если все же оценить расхождение интересно, то я бы пошла от 65%, то есть обратным ходом. Посмотреть есть ли переход, в котором вероятность выше (в боевом варианте), а после вернутся к исходным оценкам и сравнить, какая вероятность была там. То есть проделать процедуру в обратном порядке. Может, это даст идеи о том, как сделать корректную оценку на этапе "оценки". Немного сумбурно, но, вероятно, мы меня поймете :-)

----------------------
Ирина Чучуева,
команда Математического бюро

chuchueva][quote=andreybs

chuchueva][quote=andreybs wrote:

Давайте вернемся к проблеме еще разок: у нас модель на этапе оценки дает вероятность исхода 95%, а при тестировании в боевом режиме эта вероятность снижается до 65%. Вот меня интересует вторая цифра: 65% это хорошо или плохо? Насколько нужно ее увеличить, чтобы считать результат прогноза адекватным для реальной работы?

 

65% - это хорошо с учетом того, что эффективность выбранных решений имеет положительное матожидание. Меня не устраивает другое - статистическая неуправляемость мат.модели. В ней много вспомогательных параметров, влияющих на принятие решения и управление рисками - они все поплывут, если базовые показатели посчитаны с большой погрешностью. А полагаться на удачу - это не наш метод... :)

 

chuchueva][quote=andreybs wrote:

Если все же оценить расхождение интересно, то я бы пошла от 65%, то есть обратным ходом. Посмотреть есть ли переход, в котором вероятность выше (в боевом варианте), а после вернутся к исходным оценкам и сравнить, какая вероятность была там. То есть проделать процедуру в обратном порядке. Может, это даст идеи о том, как сделать корректную оценку на этапе "оценки". Немного сумбурно, но, вероятно, мы меня поймете :-)

 

Я примерно так и действую сейчас. С помощью моделирования ищу закономерность в изменениях алгоритма поиска решения и статистическими показателями на выходе моделирования. Компьютер, бедный, уже неделю пашет без останова с загрузкой CPU под 100% на всех 4 ядрах... :))) Рано или поздно я найду то "паразитное преобразование", которое снижает статистическую устойчивость мат.модели.

 

Между тем, покопавшись в литературе по статистике, я нашел ряд методов работы с неравномерно распределенными вероятностями. Все таки стоит изучить этот вопрос глубже - возможно, я изобретаю велосипед и нужные мне методы оценки давно разработаны и ждут, чтобы их применили...

andreybs wrote:я нашел ряд
andreybs wrote:
я нашел ряд методов работы с неравномерно распределенными вероятностями. Все таки стоит изучить этот вопрос глубже - возможно, я изобретаю велосипед и нужные мне методы оценки давно разработаны и ждут, чтобы их применили...

Андрей, озвучьте их, пожалуйста, здесь, чтобы понимать, о чем речь. Я не занималась такого рода анализом, а мне будет полезно ознакомится с заложенными в эти методами идеями.

А про расчеты многочасовые, то это нормальный и естественный процесс разработки. Сначала мы делаем просто, а потом начинаем городить несметный огород, и только после такого нагромождения способный выделить действительно эффективные оценки и алгоритмы. Удачи вам!

----------------------
Ирина Чучуева,
команда Математического бюро

chuchueva wrote:

chuchueva wrote:

Андрей, озвучьте их, пожалуйста, здесь, чтобы понимать, о чем речь. Я не занималась такого рода анализом, а мне будет полезно ознакомится с заложенными в эти методами идеями.

 

Вот, что я бы посмотрел на тему оценки равномерности, нормальности, однородности выборки, работы с ненормальными распределениями...

1. Равномерность по Вейлю. Понятие равномерности ряда, критерии полноты равномерности.

2. Критерии согласия. Проверка равномерности: критерии Колмогорова, омега-квадрата. Проверка показательности. Проверка нормальности: исключение известных параметров, подстановка оценок параметров, центральные выборочные моменты.

3. Альтернативы однородности. Выбор альтернативной стат.модели. Критерий Смирнова, Розенблатта, ранговых сумм Уилкоксона.

4. Работа с эмпирическими данными с помощью L,М,R-оценок, сглаживание данных, критерии сходимости.

Это наиболее близкие к теме разделы из книги "Наглядная математическая статистика" (М.Б.Лагунин). Полагаю, если копаться глубже, можно найти еще много полезного по теме.

И еще я нашел полезную

И еще я нашел полезную информацию по работе с "эмпирическими вероятностями" в разделе "Теория выборочного метода" в книге "Нестационарные временные ряды" (Ю.Н.Орлов и К.П.Осминин).

Большое спасибо за ссылки.

Большое спасибо за ссылки. Кое-что мне хорошо знакомо, а что-то совсем новое. Как время будет, то ознакомлюсь для общего развития, так сказать:-))) Вам удачи! Как накопаете что-то подходящее для вашего случая, то пишите! Очень интересно, как будет развиваться ваш подход и насколько удастся улучшить предсказуемость!

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Применил сразу два метода.

1. Разбиваем тестовую выборку на блоки. Вычисляем статистические параметрам (матожидание эффективности, вероятность успеха эксперимента и пр.) для каждого блока. Применяем линейно- (один вариант) и экспоненциально- (другой вариант) взвешенное сглаживание к статистическим параметрам. В дальнейших вычислениях используем "сглаженные" параметры.

2. Этот метод основан на доказательстве Ляпунова А.М., что распределение выборочных средних , a следовательно, и их отклонений от генеральной средней, при достаточно большом числе (размер выборки) приближенно подчиняется нормальному закону распределения при условии, что генеральная совокупность обладает конечной средней и ограниченной дисперсией. А это как раз мой случай и максимальный размер ошибки матожидания вычисляется по формуле , где t - критерий доверия Стьюдента. Для моего случая достаточно t=2 (доверие 95%). В моем случае выборочные средние - это как раз матожидание эффективности (средняя эффективность) и вероятность успеха эксперимента (число успехов/число экспериментов). То есть мы элементарно можем получить пределы ошибки матожиданий, посчитав среднеквадратическое отклонение ближайших 100 точек. В общем, это работает. На сколько это изменит статистическую устойчивость системы на всем исследуемом периоде (10 лет) - покажет моделирование, которое завершится через пару дней.

 

 

Так, формулы вырезались. Повторю текстом формулу величины ошибки матожидания: d=+- t*sigma/sqrt(n), где t - критерий доверия (=2 для 95%), sigma - среднеквадратической отклонение случайной величины в тестовой выборке, n - размер тестовой выборки, sqrt - квадратный корень.

Ух, как все сурьезно! Андрей,

Ух, как все сурьезно! Андрей, вы пишите формулы прямо в виде кода программы, мне будет понятно. Давайте подождем окончания моделирования и вашей оценки от такой модернизации. Будет ли она существенна.

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

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

chuchueva wrote:Давайте
chuchueva wrote:
Давайте вернемся к проблеме еще разок: у нас модель на этапе оценки дает вероятность исхода 95%, а при тестировании в боевом режиме эта вероятность снижается до 65%.

Андрей, вот так было до применения второго метода с оценкой пределов ошибки мат. ожиданий. А как теперь стало? Получила ли ваша проблема качественное развитие?

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Стало ~85%. Так и должно быть, т.к. исходная вероятность 95% перемножается на вероятность еще одного фактора ~87-90%. Нужно будет еще проверить устойчивоть результата на различных произвольных больших выборках. В идеале результат для любой большой выборки должен стремиться к результату для генеральной совокупности (согласно использованному принципу Ляпунова).

О как! Отлично! Мне кажется,

О как! Отлично! Мне кажется, что если ваша генеральная совокупность достаточно большая по количеству отчетов, то результат на остальных интервалах будет очень похож, если на этих интервалах не случается "качественного" изменения.

Андрей, я помню, что ряды у вас финансовые, назовите, пожалуйста, какие именно: Forex, биржи или что-то еще? Если хотите, мы дадим вам место в нашем разделе статей, чтобы вы там резюмировали на нескольких страницах ваш опыт. Тема популярная, думаю, что интересующихся будет немало :-)

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

chuchueva wrote:

О как! Отлично! Мне кажется, что если ваша генеральная совокупность достаточно большая по количеству отчетов, то результат на остальных интервалах будет очень похож, если на этих интервалах не случается "качественного" изменения.

 

Проверил устойчивость стат.модели на различных выборках - она устойчива в пределах +-3% при выборке в 1 год и +-7% в пределах полугода. В общим, я более чем удовлетворен результатом. Следующим шагом вижу доработку алгоритма формирования выборки для более точного прогноза - есть пара удачных идей, которые нужно проверить.

 

chuchueva wrote:

Андрей, я помню, что ряды у вас финансовые, назовите, пожалуйста, какие именно: Forex, биржи или что-то еще? Если хотите, мы дадим вам место в нашем разделе статей, чтобы вы там резюмировали на нескольких страницах ваш опыт. Тема популярная, думаю, что интересующихся будет немало :-)

 

Я исследую временные ряды Forex. С удовольствием воспользуюсь предложением открыть отдельный раздел по своей темматике, только позже. План примерно такой:

- произвести еще некоторые доработки в системе,

- создать интерфейс работы с торговым терминалом

- отладить систему на реальном торговом счете

- подключить систему к нескольким брокерам и привлечь инвестиции (управление капиталом)

Учитывая, что данный вид деятельности для меня не является основным, то я добирусь до финального шага где-то в конце этого - в начале следующего года. Тогда то как раз потребуется опубликовать статьи по ключевым принципам работы системы. С удовольствием воспользуюсь Вашим предложением, если оно останется в силе... :)

Андрей, планы у вас

Андрей, планы у вас грандиозные! Удачи вам с реализацией.

+/- 7% от 85% на интервале полугодовом = 78% - 92% — цифры выглядят более чем солидно, однако я не могу оценить их эффективность, так как слабо знакома со спецификой работы Forex'а. Тут буду полагаться на ваше мнение.

Насчет публикации статей — пишите, как будет желание и необходимость. Вместе разберемся, как это лучше и удобнее для нас, и для вас организовать. Еще раз удачи!

----------------------
Ирина Чучуева,
команда Математического бюро

 

 

Списибо! :) Буду на связи.... С математикой я еще точно не закончил... :)

 

 

Ирина, добрый день!

 

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

 

Проведя ряд экспериментов, я понял, что использование корреляции Пирсона не очень хорошо подходит для сравнения двух фрагментов ценового ряда. Дело в том, что вычисляемый для двух векторов коэффициент r отражает "условное сходство разброса" значений случайной величины относительно матожидания. Однако наличие такого сходства не гарантирует реальное сходство самих векторов, если под сходством понимать характер колебаний цены. Дело в том, что колебания цены имеют направленный характер, а матожидание - величина постоянная для всего фрагмента ряда. Вот я и озадачился поиском более точного способа определения сходства фрагментов ценового ряда. Мне кажется, что вместо корреляционного анализа нужно прибегнуть к регрессионному анализу (т.е. рассматривать схожесть векторов "в динамике"). Что думаете по этому поводу?

 

Возможно, Вы подскажете эффективные алгоритмы для сравнения векторов в регрессионном анализе. В литературе предлагают такой алгоритм:

1. предварительная обработка эмпирическийх данных;

2. выбор вида уравнений регрессии;

3. вычисление коэффициентов уравнения регрессии;

По поводу 1. все понятно - либо работать с теми же экстремумами, что и сейчас, либо брать сглаженный ряд цен. По п.2 я бы начал с линейной регрессии. Вп.3. получим коэффициенты регрессии - может по ним и нужно сравнивать два вектора? Как вариант вычислить корреляцию Пирсона... :)

 

 

Я бы еще подумал над использованием полимиальной или криволинейной регрессии ( http://www.machinelearning.ru/wiki/index.php?title=%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D1%8F ). Если говорить о полиминальной регрессии, то для сравниваемых фрагментов временного ряда можнобыло бы плучить полиномниальные коэффициенты регрессии, которые следует сравнить. Возсожно, с помощью корреляции.

2010 - 2018 © Математическое бюро

Все права защищены в соответствии с законодательством РФ

При полном или частичном использовании материалов ссылка на сайт обязательна