Рыночный этикет или правила хорошего тона на минном поле - страница 20

 
Neutron >>:

Ты намекни, что за проблема у тебя с корреляцией входных сигналов. Что подаёшь на вход, и почему решил что проблема существует. Ведь, чем её решать, легче убедиться в её отсутствии:-)

Это не проблемма, я моя математическая неграмотность.

Ты думаешь я как ПВ считал? Не поверишь! Предварительно разделив диапазон -/+1 на равные интервалы по 0,02, в цикле пробегался по всему ВР и если значение ВР на данном баре попадало в диапазон -0,98 : +1 кидал в этот "карманчик" один "чатл" = 0.01. Потом выводил содержимое этих ста карманов на последних 100 барах. А для нормировки ПВ умножал исследуемый ВР на коэффициент К > 1

Вот мой код:

for(int i = limit; i >= 0; i--)
{
if(first)
for(int k = 200; k >0; k--)
Ind2[k] = 0.0; // Инициализация нулем
first = false;
//---------------------------------------------------
res = th(kf*(Close[i] - Close[i+1])/Close[i+1]); // Входной ВР
Ind1[i] = res;
//-------------------------------------------------------

pos = -1.0;
for(int j=200; j>0; j--)
{
if((res > pos) && (res < (pos+step))) // расчет МО
{
if( i > 2 )
{Ind2[j] = Ind2[j] + chatl;}
break;
}
else
{pos = pos + step;}
}

}


То есть я подбираю этот коэффициент "вручную", с помощью индюка, а потом вставляю его как константу в код НС. Это работает, но только в том случае, когда на входе НС приращения ВР взятые за равные промежутки временеи - например на каждом баре, или через равные n баров. Но если на входе приращения взятые за неравные промежутки времени - например по ряду Фибоначчи - 2,3,5,8... то для каждого такого отсчета коэффициент нормировки МО должен быть разным! Да и вообще, то как я делаю хоть и эффективно, но не интелллигентно -:)

 

Ясно.

Так, что там с корреляцией по входам НС?

 
Neutron >>:

Ясно.

Так, что там с корреляцией по входам НС?

Судя по всему она незначительна или вообще отсутствует. См индюк под графиком. Каждая синяя линия это один из входов.



Что удивительно - НС работает на редкость хорошо! Два месяца после "заточки" растет с очень приемлемой (27%) просадкой

 

Вот еще хотел спросить:

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

Нужна ли нормировка на выходе? Если нет, то как оченить полученную вероятность, ведь она, в общем случае выходит за пределы +/-1

 
paralocus писал(а) >>

Судя по всему она незначительна или вообще отсутствует. См индюк под графиком. Каждая синяя линия это один из входов.

Что удивительно - НС работает на редкость хорошо! Два месяца после "заточки" растет с очень приемлемой (27%) просадкой

Значит, выбеливать ничего не нужно!

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

Перекладываешь на MQL, загоняешь в него два ВР (X,Y) одинаковой длины - n, и получаешь на входе число в диапазоне +/-1. Так, на вскидку, у тебя по индюкам коэффициент корреляции достигает величины +0.6

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

 
Neutron >>:


...

Не понял, а как у тебя величина n определяется??????

 

я то считаю проще и нагляднее :о):



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

PS К тому же это совсем не "ФАК", смысл чуть чуть другой.

 
Neutron >>:

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

Я так и делаю. У меня все через th() -:) каламбур, однако...

Делаю все, как ты объяснял:

1. Все нейроны имеют один единичный вход(+1)(это, конечно, кроме прочих входов с данными)

2. На выходе всех нейронов, кроме последнего - выходного, нелинейная ФА - использую th(x)

Теперь, если я хочу получать на выходе вероятность, то этот выход должен быть в пределах +/-1(насколько я понимаю). Теперь смотрим, как этот последний выход формируется.

А он формируется вот так: OUT1*W1 + OUT2*W2 + OUT3*W3 + W4 если принять во внимание, что OUT1 - OUT3 - суть гипертангенсы выходов нейронов предыдущего слоя и принимают значения из диапазона -/+1, а W1 - W4 - их веса, принимающие значения из диапазона -/+1, то амплитуда выходнога нейрона находится в пределах -/+ 4 . Так еще ладно, но если приниять во внимание, то что веса могут изменяться в довольно широком диапазоне - как ты говорил +/-20 - это норма, то пределы изменения амплитуды выходного сигнала сетки исчезают за горизонтом.

Вопросы:

1. Как в таких условиях оценить вероятность транзакции?

2. Нужно ли нормировать выходной сигнал и если да, то чем?


Насчет выкладок из МатЛаба - к сожалению, для меня это темный лес... как и сам МатЛаб.

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

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

С выбеливанием вроде понятно - все работает.

С архитектурой - понятно.

С эпохами и оптимальной выборкой почти понятно:

Я тут пытался рассчитать размер оптимальной выборки для твоей "красивой схемы" у меня получилось вот что:

количество входов - 4

количество синапсов - 4*6 + 3*3 + 4 = 37

коэффициент - 4

P = k*w*w/d = 4*37*37/4 = 1369 .... а должно быть 1500.

Вопрос: синапсы единичных входов считать нужно? Я считал.

 
grasn писал(а) >>

Не понял, а как у тебя величина n определяется??????

Из вне.

Привет, Серёга!

У тебя пять независимых циклов, а у меня - всего один! Что лучше - выглядеть элегантно, или быть таким всегда?

paralocus писал(а) >>

Вопросы:

1. Как в таких условиях оценить вероятность транзакции?

2. Нужно ли нормировать выходной сигнал и если да, то чем?

Так ты и поставь на выход последнего нейрона th() - все проблемы отпадут! Обучать при этом сетку сложнее не станет.

Я тут пытался рассчитать размер оптимальной выборки для твоей "красивой схемы" у меня получилось вот что:

количество входов - 4

количество синапсов - 4*6 + 3*3 + 4 = 37

коэффициент - 4

P = k*w*w/d = 4*37*37/4 = 1369 .... а должно быть 1500.

Вопрос: синапсы единичных входов считать нужно? Я считал.

Считаем оптимальную длину обучающего вектора для каждого члена комитета. Поскольку у нас все члены имеют одинаковую архитектуру, то находим для одного:

1. Число входов d=3+1=4.

2. Число синапсов w=2*4+3+1=12

3. Оптимальная длина обучающего вектора Р=4*w*w/d=4*12*12/4=144

Таким образом, для обучения этого комитета сетей, нам необходимо три обучающих вектора (по числу членов комитета), каждый длиной 144 отсчёта. Если тебе, paralocus, это значение кажется малым, увеличь число нейронов в скрытом слое с двух до 4 или 8 и получишь сразу 500 или 2000 отсчётов! Не забывай, что всё это хозяйство на каждом отсчёте желательно дообучать - мало не покажется.

 
Neutron писал(а) >>

Из вне.

Привет, Серёга!

У тебя пять независимых циклов, а у меня - всего один! Что лучше - выглядеть элегантно, или быть таким всегда?

Я догадался :о)

Пока творю - должен выглядеть, как художник! А вот когда кодирую ... :о)))

PS: Серега, конкретно в MathCAD практически монопенисуально, а вот в C++/ФОРТРАНЕ ... будет отличаться, но в MathCAD - мягко говоря нет (для этого конкретного случая). А если использовать mean, то считать будет еще быстрее, а если использовать, напимер, corr, то твой "быстрый" алгоритм будет черепашкой :о) Как они это делают, не знаю, но что касается оператора "суиммирования" - он на много быстрее цикла. Если у тебя не так - тогда ставь свежую версию.

Причина обращения: