Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3255
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
На малых ТФ переполняться память. Забивается 16 озу и файл подкачки (своп на маке) 30гиг. Ну там матрица корреляционная 50к на 50к размером, например.
Видимо, какие-то особенности Питона, т.к. на MQL алгоритм такой.
Это лобовой вариант. С решетом еще быстрее.
Допустим один миллион баров. Длина строки 10. Тогда 1d-массив на 10 миллионов double-значений - 80 Mb. п.3. - ну пусть будет 500 Mb по расходу памяти. Что не учел?
Видимо, какие-то особенности Питона, т.к. на MQL алгоритм такой.
Это лобовой вариант. С решетом еще быстрее.
Допустим один миллион баров. Длина строки 10. Тогда 1d-массив на 10 миллионов double-значений - 80 Mb. п.3. - ну пусть будет 500 Mb по расходу памяти. Что не учел?
Корреляция матрицы всех строк ко всем считается в разы быстрее, чем циклы (1 строка к каждой другой строке) и даже цикл (1 строка ко всем строкам). Там какое-то ускорение за счет алгоритма. Проверял на алглибовской версии расчета корреляции.
Давайте код, проверим.
MathAbs() мне кажеться лишним
Видимо, какие-то особенности Питона, т.к. на MQL алгоритм такой.
Это лобовой вариант. С решетом еще быстрее.
Допустим один миллион баров. Длина строки 10. Тогда 1d-массив на 10 миллионов double-значений - 80 Mb. п.3. - ну пусть будет 500 Mb по расходу памяти. Что не учел?
сам офигел, что ни одна библиотека в питоне не может посчитать, в итоге запутался
Пандас переполняет оперативку, оверхед гигантский
Нампай вообще тупо вылетает и убивает сеанс интерпретатора :) не выводя никаких ошибокДавайте код, проверим.
функции
PearsonCorrM - Корреляция всех строк ко всем - самая быстрая.
//+------------------------------------------------------------------+
//| Pearson product-moment correlation matrix |
//| INPUT PARAMETERS: |
//| X - array[N,M], sample matrix: |
//| * J-th column corresponds to J-th variable |
//| * I-th row corresponds to I-th observation |
//| N - N>=0, number of observations: |
//| * if given, only leading N rows of X are used |
//| * if not given, automatically determined from input |
//| size |
//| M - M>0, number of variables: |
//| * if given, only leading M columns of X are used |
//| * if not given, automatically determined from input |
//| size |
//| OUTPUT PARAMETERS: |
//| C - array[M,M], correlation matrix (zero if N=0 or N=1) |
//+------------------------------------------------------------------+
static bool CBaseStat::PearsonCorrM(const CMatrixDouble &cx,const int n,
const int m,CMatrixDouble &c)
PearsonCorr2 - Корреляция строка к строке. Для полной матрицы: 1 строку проверяем со всеми после 1, 2-ю со всеми после 2й и т.д.
//| Pearson product-moment correlation coefficient |
//| Input parameters: |
//| X - sample 1 (array indexes: [0..N-1]) |
//| Y - sample 2 (array indexes: [0..N-1]) |
//| N - N>=0, sample size: |
//| * if given, only N leading elements of X/Y are |
//| processed |
//| * if not given, automatically determined from |
//| input sizes |
//| Result: |
//| Pearson product-moment correlation coefficient |
//| (zero for N=0 or N=1) |
//+------------------------------------------------------------------+
static double CBaseStat::PearsonCorr2(const double &cx[],const double &cy[],
const int n)
И через PearsonCorrM2 можно в 1 матрицу записать полную матрицу и в другую проверяемую строку. Так можно проверить 1 строку сразу ко всем строкам.Но тут очевидная лишняя работа, т.к. для 10-й строки корреляция со строками выше 10 уже посчитана.
const int n,const int m1,const int m2,
CMatrixDouble &c)
Numpy матрица 20к*20к весит 2гб
400 миллионов double-чисел весят 3 гига.
MathAbs() мне кажеться лишним
Можно и по отдельности знаки проверять. Не суть.
400 миллионов double-чисел весят 3 гига.
ну понятно, памяти не хватает на всю эту радость