Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 399
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот тут готов поспорить. Это из практики. То что я наблюдаю на протяжении использования оптимизатора.
Но в демонстрационном примере на его сайте 5 столбцов и большое кол-во строк
Вот тут готов поспорить. Это из практики. То что я наблюдаю на протяжении использования оптимизатора.
Если столбцов меньше чем строк, то количество входов становится меньше чем условный размер полинома сети.
Если количестов столбцов и строк равно, то количество входов и размер полинома примерно одинаков.
Если столбцов больше чем строк то размер полинома меньше количества входов.
Другими словами необходимо чтобы количество столбцов и строк было примерно одинаковым. Тогда полином получается с достаточным количеством входов, а также размер его примерно одинаком количеству входов.
Другими и другими словами. Чем больше файл, тем многопараметрической становится модель. Увеличивается количество входов и размер полинома, что говорит о том что модель становится умнее. Как то так.
И ещё при неоднократном прогоне одного и тогоже файла, набор входных параметров всегда разный. Это связанно со случайным разбиением выборке при делении. Но если мы запустим один и тот же файл и получим абсалютно разные модели, то работать они всё равно будут примерно одинаково, во всяком случае должны. Это и есть ответ на вопрос, какая рыба забита в данном фале. Если данные разняться прогон от прогона, это говрит о том что данные не имеют никакого отношения к выходу. Как то так....
Полином строится только для того, чтобы из него все выкинуть и оставить 3 для одной сети и 3 для другой.
Посмотрите внимательно код. Есть три смостояния это 1, 0 и -1. Так это результат работы двух сеток, для передачи сигналов в торговлю....
Да какие коэфицента связи, что вы говорите. Вот перечень используемых входов, а то что вы видети там перед каждым полиномом идёт нормализация, а входов там 8 вот они описаны, посмотрите ниже в самом низу фала.
//Variable x0: Del
//Variable x1: Del1
//Variable x2: VDel
//Variable x3: VDel1
//Variable x4: VDel6
//Variable x5: ST5
//Variable x6: VAD11
//Variable x7: VVolum4
Но в демонстрационном примере на его сайте 5 столбцов и большое кол-во строк
Дело в том что я расскусил его файл демонстрационный..... Там фишка в том что есть повторяющиеся данные, представь что 5 столбцов и в каждой их строчек может быть записано только одно из трёх значений 1-1ил0. При таком расскладе получится что будут повторяющие строки, а теперь увелить мой датасет в два раза. Тупо расскопируй строки и уровень обобщения выростит значительно, вплодь до 90% НО к сожалению это будет ПЕРЕОБУЧЕНИЕ. Знаю... проверял не однократно, так что.....
у Вас х0.. х7 = р0...р7 - из формулы выше (просто по другому названы) формула взята из статьи Решетова описывающей его нейрон. И согласно формуле входа всего 3 - A,B и С
Да та статья про RNN она к данному оптимизатору отношения никакого не имеет это совершенно разные работы, как вы не понимаете. Хотя внутри оптимизатора что то и используется может быть из этой статьи, но это совершенно разные работы еслив что.....
Дело в том что я расскусил его файл демонстрационный..... Там фишка в том что есть повторяющиеся данные, представь что 5 столбцов и в каждой их строчек может быть записано только одно из трёх значений 1-1ил0. При таком расскладе получится что будут повторяющие строки, а теперь увелить мой датасет в два раза. Тупо расскопируй строки и уровень обобщения выростит значительно, вплодь до 90% НО к сожалению это будет ПЕРЕОБУЧЕНИЕ. Знаю... проверял не однократно, так что.....
Там 50 на 50 же выборки делятся? сейчас делаю сравнение с другими моделями
Там 50 на 50 же выборки делятся? сейчас делаю сравнение с другими моделями
На самом деле делении обучающего множества на две выборки очень хитрое... Там нет понятия времени, из прошлого в будущее. в этом нет необходимости при классификации, это нужно при апроксимации.
Но и деление происходит очень хитрым способом. Подскажу. Важно чтобы в выходной переменной количество нулей и единичек было равным. Тогда деление идёт как то понятно, если количество не равное то там идёт добавление. Вообщем хитрый способ деления там если в что...
Посмотрите внимательно код. Есть три смостояния это 1, 0 и -1. Так это результат работы двух сеток, для передачи сигналов в торговлю....
Я выясняю работу каждой сети отдельно. А что из их выходов получать - дело вкуса)
Кстати, смотрю на код из вашего файла, - там другая формула, не как в статье, т.е. не
double RNN(double p1,double p2,double p3)
{
//--- вероятности для правил из базы знаний экспертной системы
double y0 = x0; // Вероятность правила №0 в процентах
double y1 = x1; // Вероятность правила №1 в процентах
double y2 = x2; // Вероятность правила №2 в процентах
double y3 = x3; // Вероятность правила №3 в процентах
double y4 = x4; // Вероятность правила №4 в процентах
double y5 = x5; // Вероятность правила №5 в процентах
double y6 = x6; // Вероятность правила №6 в процентах
double y7 = x7; // Вероятность правила №7 в процентах
//--- база знаний, состоящая из набора взаимоисключающих правил
double probability=
(1.0 - p1) * (1.0 - p2) * (1.0 - p3) * y0 + // Правило №0
(1.0 - p1) * (1.0 - p2) * p3 * y1 + // Правило №1
(1.0 - p1) * p2 * (1.0 - p3) * y2 + // Правило №2
(1.0 - p1) * p2 * p3 * y3 + // Правило №3
p1 * (1.0 - p2) * (1.0 - p3) * y4 + // Правило №4
p1 * (1.0 - p2) * p3 * y5 + // Правило №5
p1 * p2 * (1.0 - p3) * y6 + // Правило №6
p1 * p2 * p3 * y7; // Правило №7
//--- конвертируем проценты в вероятности
probability=probability/100.0;
//--- возвращаем результат в виде вероятности
return(probability);
}
а
double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7) {
double x0 = 2.0 * (v0 + 1189.0) / 2047.0 - 1.0;
double x1 = 2.0 * (v1 + 810.0) / 2247.0 - 1.0;
double x2 = 2.0 * (v2 + 1636.0) / 2155.0 - 1.0;
double x3 = 2.0 * (v3 + 558.0) / 1252.0 - 1.0;
double x4 = 2.0 * (v4 + 139.0) / 494.0 - 1.0;
double x5 = 2.0 * (v5 + 74.97643) / 144.15451 - 1.0;
double x6 = 2.0 * (v6 + 1026.56016) / 1938.48639 - 1.0;
double x7 = 2.0 * (v7 + 4167.0) / 7074.0 - 1.0;
double decision = 3.162907268170426 * sigmoid(x0)
-1.0554004772410066 * sigmoid(x1 + x2 + x3)
+ 3.8921930574940347 * sigmoid(x0 + x1 + x4)
-1.3775531643479957 * sigmoid(x1 + x2 + x3 + x4)
-0.44704575810784447 * sigmoid(x0 + x5)
-0.012703915477316044 * sigmoid(x0 + x1 + x5)
-7.231026668467576 * sigmoid(x2 + x5)
-0.059339966683175004 * sigmoid(x2 + x4 + x5)
-2.786314588867378 * sigmoid(x0 + x1 + x2 + x4 + x5)
+ 2.1339726561913768 * sigmoid(x0 + x1 + x6)
-0.49562529077183975 * sigmoid(x0 + x4 + x6)
+ 5.2147434454399475 * sigmoid(x0 + x3 + x4 + x6)
-2.890797352663095 * sigmoid(x5 + x6)
+ 0.10933021175693726 * sigmoid(x0 + x5 + x6)
-1.6844056248405446 * sigmoid(x1 + x2 + x5 + x6)
-0.18093137034202272 * sigmoid(x1 + x3 + x5 + x6)
+ 0.6607987033451893 * sigmoid(x1 + x7)
-1.8854921735476415 * sigmoid(x0 + x1 + x3 + x7)
-1.1169615655906233 * sigmoid(x2 + x5 + x7)
-0.6844731589452674 * sigmoid(x4 + x6 + x7)
-0.4231236774571158 * sigmoid(x1 + x2 + x3 + x4 + x6 + x7)
+ 5.763615625891075 * sigmoid(1.0 + x1 + x2 + x3 + x5)
-0.3138985187519697 * sigmoid(1.0 + x0 + x1 + x4 + x5)
-1.8910224663455044 * sigmoid(1.0 + x1 + x3 + x4 + x5)
+ 2.1204658352467995 * sigmoid(1.0 + x2 + x3 + x4 + x5)
+ 6.219005597826903 * sigmoid(1.0 + x2 + x3 + x4 + x6)
-3.740916662914772 * sigmoid(1.0 + x0 + x1 + x3 + x4 + x5 + x6);
return decision;
}
Так что может и не 3 входа (как по изначальной формулы), а все-таки 8... пока не понял суть новой формулы.