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

 
Mihail Marchukajtes:
Ну примерно, если не считать что на 21 фотографии у Вас нарисован просто угол и о треугольнике там речи нет...
Так срабатывает предсказание на основе статистики. Я предсказываю, что это недорисованный треугольник, который станет полым на след.фото.
 
Я Вам так скажу. Всё приходит с опытом, причём в МО есть два типа опыта, теоретически и практический и они ой как различаются, поверьте. Чем больше практикует тем больше начинаешь понимать философию данной области. Всё, поехал за картошкой в рамках самоизоляции выглядит это как квест :-)(
 

Для понимания сути и теоретической основы нейросетей необходимо знание теории Колмогорова, Арнольда и Хехт-Нильсона.

Для практики эти знания не особенно нужны, но общее их понимание не помешает.

 
elibrarius:

Я же давал ссылку на просмотр сплитов из JSOТ данных. Там как раз выгрузка полной модели в файл и происходит. Потом из него и считываются сплиты.

Уверены, что уже асимметричные деревья можно выгружать?


elibrarius:

В бустинге по определению все деревья важны. Каждое последующее уточняет все предыдущие. Если вы одно дерево в середине выкините, то все что после будут работать с неправильными данными - их надо переобучать, без учета выкинутого дерева. При этом первое же дерево очень близко повторит выкинутое.

Нет, это не совсем так. Когда модель готова в ней сидит куча листьев деревьев, дающие вероятность возле 0,5 - что мусор по сути.


elibrarius:

Да. Отдельные листья в бустинге неполноценны, т.к. дополняются ответами листьев из других уточняющих деревьев. И только совокупность ответов, например, 100 деревьев дает правильный ответ.

Пытаться получить что-то достоверное из одного листа бустинговой модели - невозможно.
В бустинге все 100 ответов от 100 деревьев суммируются, каждое дает например по 0,01 в сумме = 1. Значение 1 листа =0,01 - что вы от него хотите получить? Ничего в нем нет. Только сумма из 100 листьев даст правильный ответ.
На самом деле там 1-е дерево сильное, и дает например 0,7, остальные приближают сумму к 1. Если и рассматривать отдельно то только листья первого дерева, но думаю они слабее любого дерева из случайного леса, за счет меньшей глубины.
В случайном лесе находится среднее, например каждый лист  из 100 деревьев =1, среднее тоже =1. В нем лисья полноценны, но со случайными отклонениями. Но толпа из 100 ответов, дает среднее, как достаточно точный ответ.

Получить полезное из одного дерева возможно, но это редкость.

Даже первое дерево будет весьма не лучшим.

Бустинг быстр, но там нужно тщательно отбирать модели, а для этого нужна большая выборка, что то ж проблема.

 
Aleksey Nikolayev:

Для понимания сути и теоретической основы нейросетей необходимо знание теории Колмогорова, Арнольда и Хехт-Нильсона.

Для практики эти знания не особенно нужны, но общее их понимание не помешает.

Спс. 

Отсутствие строгой теории, связанной с перечисленными моделями нейронных сетей, не препятствует исследованию возможностей их применения для решения практических задач.

 
Aleksey Vyazmikin:

Уверены, что уже асимметричные деревья можно выгружать?

Попробовал пример, добавив grow_policy='Lossguide'
Вот кусок модели содержащий сплиты:

'split': {'border': 16.049999237060547, 'float_feature_index': 1, 'split_index': 0, 'split_type': 'FloatFeature'}}, 'right': {'left': {'value': 0.05454545454545454, 'weight': 153}, 'right': {'value': 0.8265895953757225, 'weight': 161}, 'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 4, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}}, {'left': {'left': {'value': -0.43103007753084105, 'weight': 444}, 'right': {'value': -0.10906568919445614, 'weight': 133}, 'split': {'border': 6.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 2, 'split_type': 'OnlineCtr'}}, 'right': {'left': {'value': 0.02835585997337218, 'weight': 163}, 'right': {'value': 0.5713236394502054, 'weight': 151},
'split': {'border': 5.999999046325684, 'ctr_target_border_idx': 0, 'split_index': 3, 'split_type': 'OnlineCtr'}}, 
'split': {'cat_feature_index': 1, 'split_index': 1, 'split_type': 'OneHotFeature', 'value': -845129958}

С Depthwise тоже есть сплиты. Но это на Питоне, на R не видел возможности выгрузить модель. Но думаю можно на R сохранить модель во внутреннем формате, открыть ее в Питоне и выгрузить в JSON. А из нее уже все нужное использовать

 
Коллеги. Тема интересна, но я не понимаю чем отличается машинное обучение от простой оптимизации параметров в тестере ? Ведь цель будет примерно одна и та же - принятие решения о входе (выходе) в (из) рынка при совпадении параметров входа (выхода). И тот и тот метод престает работать при сильном изменении рынка. Необходимо заново обучать, оптимизировать. Если можно кратко и без философии.
 
Yan Barmin:
Коллеги. Тема интересна, но я не понимаю чем отличается машинное обучение от простой оптимизации параметров в тестере ? Ведь цель будет примерно одна и та же - принятие решения о входе (выходе) в (из) рынка при совпадении параметров входа (выхода). И тот и тот метод престает работать при сильном изменении рынка. Необходимо заново обучать, оптимизировать. Если можно кратко и без философии.

Разница в гибкости инструмента. Нейронная сеть способна подстроится под любой ряд. Посмотрите на полином ниже. Разрядность коэфициентов, а так же их количество может быть абсолютно разными.

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7, double v8, double v9, double v10) {
   double x0 = 2.0 * (v0 + 2.6721302849319) / 5.70376880500565 - 1.0;
   double x1 = 2.0 * (v1 + 0.862195874260524) / 4.318953971518134 - 1.0;
   double x2 = 2.0 * (v2 + 0.636958350251177) / 2.893126110958697 - 1.0;
   double x3 = 2.0 * (v3 + 1.28131145039971) / 4.47439455086403 - 1.0;
   double x4 = 2.0 * (v4 + 1.40655622673661) / 3.84454848827483 - 1.0;
   double x5 = 2.0 * (v5 + 1.05792133319783) / 4.0361119526354905 - 1.0;
   double x6 = 2.0 * (v6 + 0.960632890559664) / 2.810809591513934 - 1.0;
   double x7 = 2.0 * (v7 + 2.50474545671368) / 4.50657217846072 - 1.0;
   double x8 = 2.0 * (v8 + 3.37124943164126) / 5.00153555828254 - 1.0;
   double x9 = 2.0 * (v9 + 1.01434366581359) / 3.81959911946484 - 1.0;
   double x10 = 2.0 * (v10 + 0.997401251919643) / 2.959840023725593 - 1.0;
   double decision = 0.0455519244734931 * sigmoid(x0 + x5 + x8)
  + 0.01733841684822077 * sigmoid(x5 + x7 + x8)
  + 0.21269063180827888 * sigmoid(x0 + x5 + x7 + x8)
  + 0.02875816993464052 * sigmoid(x0 + x8 + x9)
  -0.025853304284676835 * sigmoid(x0 + x4 + x8 + x9)
  + 0.021169208424110384 * sigmoid(x0 + x7 + x10)
  + 0.07184095860566449 * sigmoid(x0 + x8 + x10)
  + 0.03769063180827887 * sigmoid(1.0 + x0 + x3 + x5 + x8)
  -0.03179012345679012 * sigmoid(1.0 + x3 + x6 + x9)
  + 0.02750544662309368 * sigmoid(1.0 + x0 + x5 + x7 + x9)
  + 0.1463507625272331 * sigmoid(1.0 + x1 + x2 + x8 + x9)
  + 0.012799564270152506 * sigmoid(1.0 + x0 + x2 + x10)
  + 0.1864560639070443 * sigmoid(1.0 + x0 + x1 + x5 + x8 + x10)
  + 0.07494553376906318 * sigmoid(1.0 + x0 + x2 + x5 + x8 + x10)
  + 0.014669571532316631 * sigmoid(1.0 + x2 + x5 + x6 + x8 + x10)
  + 0.05266884531590414 * sigmoid(1.0 + x0 + x1 + x7 + x8 + x10)
  + 0.04566085693536674 * sigmoid(1.0 + x0 + x1 + x2 + x8 + x9 + x10)
  + 0.061546840958605666 * sigmoid(1.0 + x0 + x2 + x4 + x8 + x9 + x10);
   return decision;
}

А теперь представьте количество вариантов, ни один многопараметрический советник не сможет похвастаться такой гибкость. А ещё говорят они обладают обощающей способностью, но это не точно :-)

 
elibrarius:

Попробовал пример, добавив grow_policy='Lossguide'
Вот кусок модели содержащий сплиты:

С Depthwise тоже есть сплиты. Но это на Питоне, на R не видел возможности выгрузить модель. Но думаю можно на R сохранить модель во внутреннем формате, открыть ее в Питоне и выгрузить в JSON. А из нее уже все нужное использовать

Да, есть в справке указано:

"Note. Models with this growing policy can not be analyzed using the PredictionDiff feature importance and can be exported only to json and cbm."

Я с версией "командная строка" работаю - там получается, что нельзя экспортировать.

Нужен какой то парсер-интерпретатор, что бы тогда напрямую делал модель, пригодную для зашивки в код MQL5.

У Вас есть такой?

 
Aleksey Vyazmikin:

Да, есть в справке указано:

"Note. Models with this growing policy can not be analyzed using the PredictionDiff feature importance and can be exported only to json and cbm."

Я с версией "командная строка" работаю - там получается, что нельзя экспортировать.

Нужен какой то парсер-интерпретатор, что бы тогда напрямую делал модель, пригодную для зашивки в код MQL5.

У Вас есть такой?

Из командной строки сохраните модель, потом зайдите в Питон, загрузите эту модель и выгрузите в JSON. Из JSON вытаскивайте сплиты и анализируйте.

Парсеров у меня нет, я только 3-й день как начал с Катбустом разбираться.
Причина обращения: