Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3256
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
MathAbs() мне кажеться лишним
Можно и по отдельности знаки проверять. Не суть.
400 миллионов double-чисел весят 3 гига.
ну понятно, памяти не хватает на всю эту радость
в statistics.mqh
функции
PearsonCorrM - Корреляция всех строк ко всем - самая быстрая.
Где-то ошибся, но не вижу.
А вот с такой строкой работает
const matrix<double> matrix1 = {{2, 2, 3}, {3, 2, 3}, {1, 2, 1}};
[0,0,0]
[0.8660254037844387,0,1]]
Видимо если в столбце все данные одинаковые то расчет пропускается.
Вот во 2-м столбце оставил все по 2 и 2-я строка матрицы осталась нулевой. Хотя наверное правильно бы диагональ заполнять 1-цами.
ПС. Вначале подумал, что баг с Alglib-ом.
В старом коде значения элементам устанавливались через
m[row].Set(col, val);
А сейчас
m.Set(row,col, val);
Жаль что нет обратной совместимости. Ну мне это не важно. Сейчас не через Alglib работаю. Если у кого-то старые коды перестанут работать - то нужно будет исправлять.
Самое печальное, что старая версия
m[row].Set(col, val);
не пишет сообщений об ошибке, а просто ничего не делает. Люди просто не заменят и не узнают, что надо менять код. Будет что-то считать, но с неизмененными матрицами.
Видимо если в столбце все данные одинаковые то расчет пропускается.
Пирсон не между рядами вычисляет, а между столбцами?
ЗЫ Похоже, что так. Выдает единичную матрицу.Пирсон не между рядами вычисляет, а между столбцами?
ЗЫ Похоже, что так. Выдает единичную матрицу.Alglib хорошая библиотека, есть все для МО. Нейросети там овер медленные, в ранних версиях так было.
в statistics.mqh
PearsonCorrM - Корреляция всех строк ко всем - самая быстрая.
На ее основе сделал расчет корреляционной матрицы.
Замерил производительность.
Результат.
Хорошо видно, что Alglib считает матрицу быстрее, чем штатный матричный метод.
Однако, для поиска паттернов считать корреляционную матрицу - безумие по потреблению RAM.
Питон за какое время считает такую же по размерам исходную матрицу, как в примере выше?
Однако, для поиска паттернов считать корреляционную матрицу - безумие по потреблению RAM.
У меня встроенный побыстрее сработал: на i7-6700
Странно что штатный медленнее, могли бы просто скопировать. Вряд ли в Alglibe какой то уникальный ускоренный алгоритм под лицензией.
Другие 2 варианта из Alglib не пробовали?
Если считать в циклах каждая строка к каждой строке или каждая строка ко всем строкам, то память будет экономнее расходоваться (2 строки или 1 строка +матрица). Но это будет дольше, точно не помню, но думаю, что и медленнее встроенной ф-ии.
Однако, для поиска паттернов считать корреляционную матрицу - безумие по потреблению RAM.
С памятью все хуже.
Перед запуском
А во время работы Алглибовского PearsonCorrM память все время растет: и 5 гг видел, на скрин 4,6 попало
и во время работы штатного Matrix.CorrCoef
Видимо штатный оптиизирован для мин. использования памяти, а алглибовский оптимизирован на скорость.