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

 
Aleksey Vyazmikin #:

Да, что-то из этой области, я начал делать на базе k-means , потом узнал, что такой подход используется в целом в разных областях. Но, какой пакет позволяет это делать - не знаю. Да и для переноса в терминал удобней будет свой код использовать - не уверен в поддержке ONNX.

k-means в Алглибе есть в Include\Math\Alglib\dataanalysis.mqh
Но ему лучше данные подавать в нормализованном виде (в одном масштабе). Иначе например изменения в 1000 одних единиц (например объемы) полностью заглушат измения 0,01000 (например цены).

 

еще пару лет и Алексей поймет что все его квантование это корявая попытка сделать обычную кластеризацию )

 
Forester #:

k-means в Алглибе есть в Include\Math\Alglib\dataanalysis.mqh
Но ему лучше данные подавать в нормализованном виде (в одном масштабе). Иначе например изменения в 1000 одних единиц (например объемы) полностью заглушат измения 0,01000 (например цены).

Да, поэтому мне и кажется затея интересной - относительно легко портироваться должна, в теории. Алглиб поддерживает сохранение и применение моделей?

Касаемо нормализации, в целом нормализация нужна, но листья бинарные - проблема отпадает сама собой.

 
Aleksey Vyazmikin #:

Да, поэтому мне и кажется затея интересной - относительно легко портироваться должна, в теории. Алглиб поддерживает сохранение и применение моделей?

Касаемо нормализации, в целом нормализация нужна, но листья бинарные - проблема отпадает сама собой.

//| k-means++ clusterization                                         |
//| INPUT PARAMETERS:                                                |
//|     XY          -   dataset, array [0..NPoints-1,0..NVars-1].    |
//|     NPoints     -   dataset size, NPoints>=K                     |
//|     NVars       -   number of variables, NVars>=1                |
//|     K           -   desired number of clusters, K>=1             |
//|     Restarts    -   number of restarts, Restarts>=1              |
//| OUTPUT PARAMETERS:                                               |
//|     Info        -   return code:                                 |
//|                     * -3, if task is degenerate (number of       |
//|                           distinct points is less than K)        |
//|                     * -1, if incorrect                           |
//|                           NPoints/NFeatures/K/Restarts was passed|
//|                     *  1, if subroutine finished successfully    |
//|     C           -   array[0..NVars-1,0..K-1].matrix whose columns|
//|                     store cluster's centers                      |
//|     XYC         -   array[NPoints], which contains cluster       |
//|                     indexes                                      |

Получите массив C с центрами кластеров, потом по своей новой точке ищете к какому из центров она ближе.

Там еще ниже есть что-то про кластреризацию, может там есть готовая ф-я для прогноза. Разбирайтесь.
 
Forester #:
//| k-means++ clusterization                                         |
//| INPUT PARAMETERS:                                                |
//|     XY          -   dataset, array [0..NPoints-1,0..NVars-1].    |
//|     NPoints     -   dataset size, NPoints>=K                     |
//|     NVars       -   number of variables, NVars>=1                |
//|     K           -   desired number of clusters, K>=1             |
//|     Restarts    -   number of restarts, Restarts>=1              |
//| OUTPUT PARAMETERS:                                               |
//|     Info        -   return code:                                 |
//|                     * -3, if task is degenerate (number of       |
//|                           distinct points is less than K)        |
//|                     * -1, if incorrect                           |
//|                           NPoints/NFeatures/K/Restarts was passed|
//|                     *  1, if subroutine finished successfully    |
//|     C           -   array[0..NVars-1,0..K-1].matrix whose columns|
//|                     store cluster's centers                      |
//|     XYC         -   array[NPoints], which contains cluster       |
//|                     indexes                                      |

Получите массив C с центрами кластеров, потом по своей новой точке ищете к какому из центров она ближе.

Там еще ниже есть что-то про кластреризацию, может там есть готовая ф-я для прогноза. Разбирайтесь.

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

 
Aleksey Vyazmikin #:

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

Там нет весов, там (в С) координаты центров.
 
Forester #:
Там нет весов, там (в С) координаты центров.

Как я понимаю, нужна мю. Она для каждого предиктора своя, отсюда и вектор/массив.

 
Aleksey Vyazmikin #:

Как я понимаю, нужна мю. Она для каждого предиктора своя, отсюда и вектор/массив.

Думаю эта формула участвует при обучении / поиске центров кластеров. Для прогноза нужно просто найти ближайший центр по С[]
 
Какие признаки вы бы включили в модель если бы хотели спрогнозировать будет ли зарабатывать ТС на новых данных следующие n остчетов
 
Aleksey Vyazmikin #:

Как я понимаю, нужна мю. Она для каждого предиктора своя, отсюда и вектор/массив.

мю - это середина отрезка, кластера в данном случае, я так понял

если бы была окружность, то формула подходит

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