Нейронные сети - страница 14

 
Да, обучение против прогноза. Я создал новую сеть с данными за первые 6-7 лет, которые использовались для обучения, тестирования и перекрестной проверки. Затем я скормил ей оставшиеся 3 года данных в качестве теста без обучения, идея состояла в том, чтобы имитировать живой тест. Линия регрессии при обучении имела наклон 0,99995, а когда я скормил ей около 3 лет ранее невидимых данных, этот наклон снизился до 0,9995. Я не уверен, как это интерпретировать. Это кажется слишком точным для того, что я создал менее чем за час.

Я объясню вам это на примере.

Допустим, вы хотите предсказать переменную, которая может иметь значения от 100 до 250 /как GBPJPY/. Вы хотите предсказывать очень маленькие временные шаги по сравнению с обучающими данными /например, H1 или H4/. Для некоторого шага желаемое значение, скажем, 174.850, а выход NN - 176.350. Ошибка очень мала /около 0,8%/, но в терминах Forex она велика - 150 пунктов.

Гораздо проще предсказывать нормальную или логарифмическую доходность. Даже если вы допустите ошибку, результат, вероятно, все равно будет полезен /если вы предсказываете рост цены на 20%, а на самом деле он составляет 10%, даже если ошибка составляет 50%, результат все равно очень хороший/.

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

Это невозможно.

Даже если NN дает очень плохое предсказание, это все равно решение.

Больше, чем, скажем, средний настольный компьютер.

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

 

mrwobbles,

Не будете ли вы так добры и не сообщите ли нам ваши входы и выходы для ваших результатов NN? Я бы хотел прогнать его через NeuroShell и посмотреть, смогу ли я сгенерировать уровень корреляции R примерно такой же плотности. Заранее спасибо.

 
Kazam:
Я объясню вам это на примере.

Допустим, вы хотите предсказать переменную, которая может иметь значения от 100 до 250 /например, GBPJPY/. Вы хотите прогнозировать очень маленькие временные шаги по сравнению с обучающими данными /например, H1 или H4/. Для некоторого шага желаемое значение, скажем, 174.850, а выход NN - 176.350. Ошибка очень мала /около 0,8%/, но в терминах Forex она велика - 150 пунктов.

Гораздо проще прогнозировать нормальную или логарифмическую доходность. Даже если вы сделаете ошибку, результат, вероятно, все равно будет полезен /если вы предсказываете рост цены на 20%, а на самом деле это 10%, даже если ошибка составляет 50%, результат все равно очень хороший/.

Да, но я говорю об ошибках на порядок меньших, чем эта. Средняя ошибка в пунктах сети, которую я обучил, составляет около 10-20, что приближается к приемлемому уровню. Но все же есть некоторые аномальные результаты, несколько более 100 пунктов, что явно неприемлемо.

Это невозможно.

Даже если NN дает очень плохой прогноз, это все равно решение.

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

 
Да, но я говорю об ошибках на порядок меньших, чем эта. Средняя ошибка в пунктах сети, которую я обучил, составляет около 10-20, что приближается к приемлемому уровню. Тем не менее, есть некоторые аномальные результаты, несколько более 100 пунктов, что, очевидно, неприемлемо.

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

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

Случайность - это ключ

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

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

Файлы:
 

Эта мысль приходила мне в голову. Я имею в виду, что если популяция предварительно обученных NN слишком мала или с недостаточной генетической дисперсией, то некоторые решения могут быть не рассмотрены. Как вы сказали, всегда есть шанс выбрать 12 NN, которые все застряли в разных локальных минимумах, и это было бы не очень хорошо. Или, что еще хуже, 12 NN, которые все застряли в одном и том же локальном минимуме. Хотя вы всегда можете закодировать несколько случайных генных мутаций, чтобы попытаться увеличить генетический запас, скажем, каждые 10 поколений. То есть, если начать с совершенно случайной структуры, то можно гарантировать, что будет рассмотрено большинство возможностей.

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

Edit: Я обучил сеть на данных за первые 7 лет, а затем смоделировал ее работу на данных за последние несколько лет. Средняя ошибка в пунктах составила 40, но если вы посмотрите на график, то на первых 1500 она попадает точно в цель, затем теряет ее и начинает ошибаться в цене, но направление по большей части правильное. Затем он достигает примерно 10000 и снова набирает обороты (как раз вовремя для большого краха). Посмотрите на это и скажите мне, что вы думаете. Темно-синий - выходная цель светло-синего цвета. Кстати, я не снабжал сеть целями, которые были переложены для анализа.

Файлы:
gbpjpy60-4.jpg  40 kb
gbpjpy60-8.jpg  55 kb
 

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

Но я могу рассказать вам, как проверить, в порядке ли NN. Экспортируйте /в Matlab есть мастер экспорта и импорта/ результаты тестирования в файл XLS или CSV /файл Excel/. Затем поместите реальные значения рядом с результатом NN и в следующем столбце поместите формулу, которая проверяет, правильно ли NN предсказал направление движения цены.

Подсчитав, сколько "1" вы получите, вы узнаете точность сети.

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

Файлы:
 

Привет, Казам,

Возможно ли внедрить этот пакет NN в Метатрейдер?

Файлы:
example.zip  106 kb
 

Похоже, это может быть хорошо, я прогнал формулу через электронную таблицу Open Office, и она дала 73% точности для направления торговли. Осталось сделать еще несколько входов, которые, как мне кажется, повысят точность. Вот электронная таблица, я сохранил ее в формате xls, вы должны быть в состоянии прочитать ее.

Файлы:
gj60.rar  831 kb
 

В образце, вне образца

mrwobbles:
Похоже, это может быть хорошо, я прогнал формулу через таблицу Open Office, и она дала 73% точности для направления торговли. Осталось сделать еще несколько входов для сети, которые, как я думаю, повысят точность. Вот электронная таблица, я сохранил ее в формате xls, вы должны быть в состоянии прочитать ее.

Хорошо... В образце или вне образца?

Большая разница будет на вашем счету, 73% в выборке - это убийца счета, 73% вне выборки - это возможно...

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

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

С уважением,

Симба

 

biddick

Это DLL, поэтому посмотрите здесь:

http://www.metatrader.info/node/150[/CODE]

There's an example of how to use DLL functions in Metatrader.

mrwobbles

It's either the training data or you got something wrong - the results are to good .

If one could get an accuracy of 73% with a simple back propagation network no one would give a shit about more complicated stuff

SIMBA

You're right. Choosing the proper input is a the most important thing in the process of creating a NN /there's a rule "trash goes in, trash comes out" /.

But you can always use data mining tools to analyze many different variables and choose those that affect the one you want to predict.

There's a nice book about data minig /and about genetic algorithms, Bayesian classification etc./ - "Data Mining Methods and Models." by Daniel T. Larose. It also shows how to use WEKA /a free, open source software for machine learning/.

My preferred way is to use GA - for the propose of time series prediction I usually allow them to choose from 15-40 previous steps.

PS

I've mentioned using Bayesian probability for the classification tasks but it can also be used for time series prediction

[CODE]http://www.cis.hut.fi/juha/papers/ESTSPfinal.pdf