Получены результаты тестирования модели. Ранее уже писали о начале эксперимента.
В принципе результаты можно считать положительными. На отборе рост и на тесте тоже рост и удерживание на уровне. Но стабильности в модели нет.
Возможно это связано с тем что мы использовали только 1 эпоху промежуточного обучения для нижней модели.
Теперь попробуем дать ей две эпохи нижнего промежуточного обучения. Эксперимент запущен. Ждем результатов. Результаты скорее всего будут завтра.
Ждем.
четверг, 6 ноября 2008 г.
Методы для генетики
После расчёта качества на популяции производим её трансформацию. Здесь в матрице популяции (pop) отдельные геномы - это строки. Отдельные гены - это числа в диапазоне от 0 до 1. Для трансформации популяции даем качество для каждого генома, коэффициент мутации (mu) и частоту шока (flash).
Трансформация популяции
Скрещивание
Мутация генома
Трансформация популяции
function [pop,bi] = trans_pop(pop,kach,mu,flash)
[s,idx] = sort(kach) ;
gi = idx(1:($/2)) ;
bi = idx(($/2+1):$) ;
gi = gi(randperm(length(gi))) ;
bi = bi(randperm(length(bi))) ;
for i = 1:2:length(gi)
[pop(bi(i),:),pop(bi(i+1),:)] = xver(pop(gi(i),:),pop(gi(i+1),:),mu,flash) ;
end
endfunction
Скрещивание
function [gb1,gb2] = xver(gg1,gg2,mu,flash)
gb1 = gg2 ;
gb2 = gg1 ;
for k = 1:length(gg1)
if rand(1,1,"normal") > 0
gb1(k) = gg1(k) ;
gb2(k) = gg2(k) ;
end
end
gb1 = mutate(gb1,mu,flash) ;
gb2 = mutate(gb2,mu,flash) ;
endfunction
Мутация генома
function genom = mutate(genom,mu,flash)
for k = 1:length(genom)
my_mu = mu ;
if rand(1,1,"uniform") < flash
my_mu = my_mu * 10 ;
end
genom(k) = genom(k) + (rand(1,1,"uniform")*2-1)*my_mu ;
if genom(k) > 1
genom(k) = 1 ;
end
if genom(k) < 0
genom(k) = 0 ;
end
end
endfunction
Скрипт для компиляции C кода из Scilab.
[comp.sci]
В дочернем каталоге LIB держим библиотеку my_comp.c. В Scilab-е все время находимся в родительском каталоге. Правим код C в библиотеке и после правки запускаем скрипт перекомпиляции. Он сначала вычищает все подключенные рутины. Затем вычищает все в дочернем каталоге LIB кроме исходников на C. Затем запускает компиляцию.
Этот скрипт все делает. А то раньше пока все отключишь пальцы болеть начинают.
Здесь для примера отключаются и перекомпилируются две рутины.
mode(-1) ;
close
clear
function ulink_str(str)
while 1
[c,n] = c_link(str) ;
if c
ulink(n) ;
else
break ;
end
end
endfunction
function ul
ulink_str('calc_rek_zad') ;
ulink_str('calc_rek_zad_vib') ;
endfunction
ul ;
my_dir = pwd() + "\" ;
comp_sub_dir = "lib\" ;
f_name = "my_comp" ;
names = ["calc_rek_zad","calc_rek_zad_vib"] ;
// -----------------------------------------
c_name = f_name + ".c" ;
try
cd(my_dir + comp_sub_dir) ;
ddd = ls() ;
for k = 1:size(ddd,1)
if ~(ddd(k) == c_name)
mdelete(ddd(k)) ;
disp(ddd(k)) ;
end
end
res = ilib_for_link(names,f_name + ".o",[],"c") ;
disp(res) ;
end
cd( my_dir ) ;
В дочернем каталоге LIB держим библиотеку my_comp.c. В Scilab-е все время находимся в родительском каталоге. Правим код C в библиотеке и после правки запускаем скрипт перекомпиляции. Он сначала вычищает все подключенные рутины. Затем вычищает все в дочернем каталоге LIB кроме исходников на C. Затем запускает компиляцию.
Этот скрипт все делает. А то раньше пока все отключишь пальцы болеть начинают.
Здесь для примера отключаются и перекомпилируются две рутины.
Ярлыки:
компиляция,
scilab
Получены первые результаты по новой модели
[081031_sim_all_test]
Получены первые результаты по тестированию новой модели.
Прогнозируем направление изменения курса валютной пары eurusd со скважностью 15 минут. Отбираем модели на диапазоне в 300 отсчетов и затем лучшую гоним на следующих 50-ти. Смотрим сколько знаков угадывает.
На верхнем левом графике качество на отборе, на правом верхнем качество в тесте. На левом нижнем графике искомый параметр верхней генетики. На правом нижнем графике норма по популяции.
Наша цель увидеть на тестовом графике рост вместе с ростом графика отбора. Это будет означать, что обеспечив рост качества на отборе мы получим растущее качество в тесте. Значит можно строить рабочую модель на отборе и гарантировать успех в прогнозе следующего дня.
Модель пока слабая. Но нужно подтвердить основной принцип. Ждем результатов.
В результате компиляции большей части кода удалось получить хорошую производительность. Вчера за пару часов она успела пройти 9 эпох.
Думаю хватит порядка 50-100 верхних эпох чтобы получить результаты которые можно взять за основу для выводов. Так что за пару-тройку дней управимся.
Получены первые результаты по тестированию новой модели.
Прогнозируем направление изменения курса валютной пары eurusd со скважностью 15 минут. Отбираем модели на диапазоне в 300 отсчетов и затем лучшую гоним на следующих 50-ти. Смотрим сколько знаков угадывает.
На верхнем левом графике качество на отборе, на правом верхнем качество в тесте. На левом нижнем графике искомый параметр верхней генетики. На правом нижнем графике норма по популяции.
Наша цель увидеть на тестовом графике рост вместе с ростом графика отбора. Это будет означать, что обеспечив рост качества на отборе мы получим растущее качество в тесте. Значит можно строить рабочую модель на отборе и гарантировать успех в прогнозе следующего дня.
Модель пока слабая. Но нужно подтвердить основной принцип. Ждем результатов.
В результате компиляции большей части кода удалось получить хорошую производительность. Вчера за пару часов она успела пройти 9 эпох.
Думаю хватит порядка 50-100 верхних эпох чтобы получить результаты которые можно взять за основу для выводов. Так что за пару-тройку дней управимся.
Ярлыки:
прогнозирование,
forex
Подписаться на:
Сообщения (Atom)