Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3255

 
mytarmailS #:

согласен

иди ютуб смотри ))

 
Forester #:

БО - это что? 

мне так казалось что на сайте это уже устоявшееся сокращение : БО - бинарные опционы. Кривые/косые/производные но именно они про дискретные отсчёты времени и + - в них. Часть вводных бизнес-правил берётся от опционов. А часть нет и от этого получается петрушка, которая вообще не работает ни там ни тут.

сразу отвечая тёзке: я обоими руками за МО и любую движуху. Но просто если очень долго нет результата, надо искать - может изначально что-то не так заложено. Что-то ни разу не видел графика в теме даже демки "сделано с использованием Мachine Learning". Методический поиск подразумевает ещё и критику (вопросы/замечания к)основы. 

 
Maxim Dmitrievsky #:
На малых ТФ переполняться память. Забивается 16 озу и файл подкачки (своп на маке) 30гиг. Ну там матрица корреляционная 50к на 50к размером, например.

Видимо, какие-то особенности Питона, т.к. на MQL алгоритм такой.

  1. Бежим по 1d-массиву Pos-переменной.
  2. [Pos-n, Pos] - очередной паттерн.
  3. Применили нечто подобное к этому паттерну и 1d-массиву.
  4. Нашли ситуации, где MathAbs(corr[i]) > 0.9.
  5. В этих местах посмотрели на m баров вперед поведение цены и усреднили.
  6. Мест найдено не мало и красивое усреднение? - сохранили данные паттерна (значения из п.2).
  7. Pos++ и на п.2.

Это лобовой вариант. С решетом еще быстрее.


Допустим один миллион баров. Длина строки 10. Тогда 1d-массив на 10 миллионов double-значений - 80 Mb. п.3. - ну пусть будет 500 Mb по расходу памяти. Что не учел?

 
fxsaber #:

Видимо, какие-то особенности Питона, т.к. на MQL алгоритм такой.

  1. Бежим по 1d-массиву Pos-переменной.
  2. [Pos-n, Pos] - очередной паттерн.
  3. Применили нечто подобное к этому паттерну и 1d-массиву.
  4. Нашли ситуации, где MathAbs(corr[i]) > 0.9.
  5. В этих местах посмотрели на m баров вперед поведение цены и усреднили.
  6. Мест найдено не мало и красивое усреднение? - сохранили данные паттерна (значения из п.2).
  7. Pos++ и на п.2.

Это лобовой вариант. С решетом еще быстрее.


Допустим один миллион баров. Длина строки 10. Тогда 1d-массив на 10 миллионов double-значений - 80 Mb. п.3. - ну пусть будет 500 Mb по расходу памяти. Что не учел?

Корреляция матрицы всех строк ко всем считается в разы быстрее, чем циклы (1 строка к каждой другой строке) и даже цикл (1 строка ко всем строкам). Там какое-то ускорение за счет алгоритма. Проверял на алглибовской версии расчета корреляции.
 
Forester #:
Корреляция матрицы всех строк ко всем считается в разы быстрее, чем циклы (1 строка к каждой другой строке) и даже цикл (1 строка ко всем строкам). Там какое-то ускорение за счет алгоритма. Проверял на алглибовской версии расчета корреляции.

Давайте код, проверим.

 
fxsaber #:


  1. Нашли ситуации, где MathAbs(corr[i]) > 0.9.

 MathAbs() мне кажеться лишним

 
fxsaber #:

Видимо, какие-то особенности Питона, т.к. на MQL алгоритм такой.

  1. Бежим по 1d-массиву Pos-переменной.
  2. [Pos-n, Pos] - очередной паттерн.
  3. Применили нечто подобное к этому паттерну и 1d-массиву.
  4. Нашли ситуации, где MathAbs(corr[i]) > 0.9.
  5. В этих местах посмотрели на m баров вперед поведение цены и усреднили.
  6. Мест найдено не мало и красивое усреднение? - сохранили данные паттерна (значения из п.2).
  7. Pos++ и на п.2.

Это лобовой вариант. С решетом еще быстрее.


Допустим один миллион баров. Длина строки 10. Тогда 1d-массив на 10 миллионов double-значений - 80 Mb. п.3. - ну пусть будет 500 Mb по расходу памяти. Что не учел?

сам офигел, что ни одна библиотека в питоне не может посчитать, в итоге запутался 

Пандас переполняет оперативку, оверхед гигантский 

Нампай вообще тупо вылетает и убивает сеанс интерпретатора :) не выводя никаких ошибок

Можно решетом сделать, придется весь код переписать 
 
fxsaber #:

Давайте код, проверим.

в statistics.mqh

функции
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 уже посчитана.

static bool CBaseStat::PearsonCorrM2(const CMatrixDouble &cx,const CMatrixDouble &cy,
                                     const int n,const int m1,const int m2,
                                     CMatrixDouble &c)


Проверяйте на матрице порядка 5к*20к. Если 100*100 будет все быстро.
 
Numpy матрица 20к*20к весит 2гб
 
Maxim Dmitrievsky #:
Numpy матрица 20к*20к весит 2гб

400 миллионов double-чисел весят 3 гига.

Причина обращения: