L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 3332

 
Forester #:
Messieurs ! Vous ne mélangez pas le sujet ? Il serait bon de nettoyer 2-3 pages du hors sujet.
L'article d'Alexey a été publié il y a une heure, lisez-le.
Je pense que nous avons déjà discuté de sa quantification en temps voulu, sous tous les angles. Je ne peux qu'ajouter à ce que j'ai dit précédemment que je suis heureux pour lui que cela lui ait rapporté au moins 200 dollars.
 
Aleksey Nikolayev #:
Je pense que nous avons déjà discuté de sa quantification en son temps sous tous les angles. Je ne peux qu'ajouter à ce que j'ai dit précédemment que je suis heureux pour lui que cela lui ait rapporté au moins 200 dollars.

Votre brindille ? Aujourd'hui vous avez exprimé beaucoup d'affabulations philosophiques et autres hors sujet (flud), et qu'appelez-vous "ne pas respecter ses propres principes" ?
D'ailleurs, comment Kant et Diogène, et peut-être Aristote et Pythagore, appelleraient-ils une personne qui se défonce en humiliant, en insultant et en rabaissant les vertus et les réalisations d'une autre personne ?
 
Aleksey Nikolayev #:
Je pense que nous avons déjà discuté de sa quantification en son temps sous tous les angles. Je ne peux qu'ajouter à ce que j'ai dit plus tôt que je suis heureux pour lui que cela lui ait rapporté au moins 200 dollars.

Merci, c'est agréable d'être content de ses revenus - c'est rare !

L'article est introductif - vous avez raison, tout ce que j'ai écrit là - je pense, et tellement clair.

La deuxième partie est à modérer, elle est un peu plus intéressante. Cependant, pour l'instant, j'ai renoncé à décrire ma propre méthode, et j'ai proposé une version simplifiée, qui a donné un petit effet sur les tests. Elle sera décrite dans la deuxième partie.

Mais c'est le cas lorsque les nouvelles idées ne prennent pas plus de 5 % du texte.

Revenez lire et commenter si vous le souhaitez.

 
Andrey Dik #:

h ttps:// www.mql5.com/ru/forum/309270
Votre sujet ? Aujourd'hui, vous avez fait beaucoup de réflexions philosophiques et autres hors sujet (flud), et qu'est-ce que vous appelez "ne pas respecter ses propres principes" ?
D'ailleurs, comment Kant et Diogène, et peut-être Aristote et Pythagore, appelleraient-ils une personne qui se défonce en humiliant, en insultant et en rabaissant les vertus et les réalisations d'une autre personne ?

Je ne sais pas de quel Diogène vous parlez, mais en ce qui concerne le trolling, nous sommes tous des enfants par rapport à Diogène de Sinope ou Diogène de Laertes.

Si vous regardez les dates de mon fil de discussion, de mon enregistrement sur la ressource et de celui d'aujourd'hui, cela deviendra plus clair. Deux ans après mon inscription, il y avait encore de l'espoir pour un dialogue constructif et utile sur le forum, et six ans et demi plus tard, il n'y a presque plus d'espoir. Pour le plaisir.

 
Aleksey Vyazmikin #:

Voilà, merci, c'est bien d'être content de mes revenus - c'est rare !

L'article est introductif - vous avez raison, tout ce que j'ai écrit là - je pense que c'est suffisamment clair.

La deuxième partie est en cours de modération, elle est un peu plus intéressante. Cependant, pour l'instant, j'ai renoncé à décrire ma propre méthode, et j'ai proposé une version simplifiée, qui a donné un petit effet sur les tests. Elle sera décrite dans la deuxième partie.

Mais c'est le cas lorsque les nouvelles idées ne prennent pas plus de 5 % du texte.

Revenez lire et commenter si vous le souhaitez.

Je vous remercie de votre invitation. Bien entendu, j'ai lu la première partie et je lirai également la seconde. S'il y a des réflexions sur le texte, je les partagerai.
 
Forester #:

Pourquoi au hasard ?
Parcourez tous les points d'une classe et mesurez la distance avec tous les points de l'autre classe, en prenant la distance minimale.
Lorsque tout est obtenu, triez, supprimez jusqu'à la distance dont vous avez besoin, une paire à la fois. Si le point supprimé a été utilisé dans une autre paire, vous trouvez un nouveau point avec une nouvelle distance minimale, vous triez à nouveau et vous continuez.
Vous pouvez peut-être trouver une meilleure méthode. Peut-être sans trier - en supprimant simplement la distance requise.

Ugh, je ne comprends pas bien, je suppose :

  1. Nous construisons une matrice de distances - longueur et largeur de la même taille que le nombre d'exemples dans l'échantillon.
  2. Nous construisons une nouvelle matrice, disons binaire, où les unités sont les points qui répondent au critère de "distance minimale".
  3. Si je comprends bien, nous devons compter le nombre de points dans l'îlot conditionnel (additionner les unités des lignes), et s'il y a plus de points que dans l'îlot voisin, et que les points sont répartis entre eux, alors assigner ces points à la pile (cluster) où il y a le plus de points de ce type. Déterminez que tel ou tel point appartient à l'ensemble #n de points et mettez ces points à zéro dans la matrice de l'étape 2.
  4. Poursuivre la remise à zéro jusqu'à ce qu'il n'y ait plus de points.

Ai-je bien compris le prototype de l'algorithme ?

Je reviens sur le sujet avec un tel retard, parce que je suis un peu fasciné par l'idée que les feuilles dans les modèles CatBoost et dans d'autres ensembles d'arbres peuvent être fortement corrélées dans l'activation, ce qui fausse leur confiance pendant l'apprentissage, conduisant à une surestimation de la valeur de la feuille pour le modèle dans son ensemble.

 
Aleksey Vyazmikin #:

Eh, je suis un peu lent à la détente, je suppose :

  1. Nous construisons une matrice de distances - longueur et largeur de la même taille que le nombre d'exemples dans l'échantillon.
  2. Nous construisons une nouvelle matrice, disons binaire, où les unités sont les points qui répondent au critère de "distance minimale".
  3. Si je comprends bien, nous devons compter le nombre de points dans l'îlot conditionnel (additionner les unités des lignes), et s'il y a plus de points que dans l'îlot voisin, et que les points sont répartis entre les deux, attribuer ces points à la pile(grappe) où il y a le plus de points de ce type. Déterminez que tel ou tel point appartient à l'ensemble #n de points et mettez ces points à zéro dans la matrice de l'étape 2.
  4. Poursuivez la remise à zéro jusqu'à ce qu'il n'y ait plus de points.

Ai-je bien compris le prototype de l'algorithme ?

Je reviens sur le sujet avec un tel retard, parce que je suis un peu fasciné par l'idée que les feuilles dans les modèles CatBoost et dans d'autres ensembles d'arbres peuvent être fortement corrélées dans l'activation, ce qui fausse leur confiance pendant l'apprentissage, conduisant à une surestimation de la valeur de la feuille pour le modèle dans son ensemble.

Le regroupement n'a rien à voir avec cela. Il s'agit simplement d'éliminer les points les plus proches de classes différentes qui se contredisent, c'est-à-dire le bruit. Vous pouvez ensuite l'entraîner par regroupement ou par arbre, comme vous le souhaitez.

1) On peut aussi utiliser une matrice, mais pas nécessairement, mais on trouve immédiatement pour chaque point de classe 0 le point le plus proche de classe 1, c'est-à-dire qu'on obtient d'emblée le point 2.
3) ne rien compter et ne pas faire référence à des clusters, il suffit d'enlever les paires de points les plus proches. Avec une distance inférieure au seuil, le seuil dans cet exemple serait de 0,6. Dans d'autres problèmes, nous devrons probablement le sélectionner.
Si un point supprimé de la classe 1 était associé à un autre point de la classe 0, il se retrouve sans paire et doit trouver un nouveau point le plus proche de la classe 1 (faites à nouveau un calcul ou utilisez une matrice, comme vous l'avez suggéré au point 1, si la mémoire est suffisante, je pense qu'une matrice de 1 million par 1 million ne tiendra pas dans une mémoire, jusqu'à 100 000 peut-être).
4) pas jusqu'à ce qu'il reste, mais jusqu'à la distance seuil. Si cette distance est très grande, il ne restera que les points d'une des classes, qui étaient initialement plus nombreux.

Mais comme je l'ai déjà écrit, je ne pense pas que cette élimination du bruit soit une bonne idée (voir https://www.mql5.com/ru/forum/86386/page3324#comment_50171043). Ce n'est pas comme si vous ne pouviez pas supprimer ce bruit lorsque vous faites des prédictions. L'arbre lui-même marquera les feuilles bruyantes en leur donnant une probabilité d'environ 50%, et prendra par exemple les feuilles non bruyantes avec une probabilité de l'une des classes >80% (ou autant que vous le souhaitez).

Машинное обучение в трейдинге: теория, модели, практика и алготорговля - На рыночных данных сигналы пропадают, потому что на новых данных сигналы выходят за узкий допустимый диапазон.
Машинное обучение в трейдинге: теория, модели, практика и алготорговля - На рыночных данных сигналы пропадают, потому что на новых данных сигналы выходят за узкий допустимый диапазон.
  • 2023.10.26
  • www.mql5.com
если в работу использовать листья с высокой чистотой классов и не делить листья до 1 примера в листе. остальные как то достигли чистоты листьев например 70 - вроде неплохо. Препочитаю дерево и лист с честными 53 чистоты одного из классов
 
Forester #:
Les clusters n'ont rien à voir avec cela. Il s'agit simplement de supprimer les points les plus proches ayant des classes différentes qui se contredisent, c'est-à-dire le bruit. Ensuite, vous pouvez utiliser le clustering, ou l'arbre - ce que vous voulez pour vous entraîner.
.

1) Vous pouvez également utiliser une matrice, mais pas nécessairement, mais trouvez immédiatement pour chaque point de classe 0 le point le plus proche de classe 1, c'est-à-dire que nous obtenons en une fois le point 2.
3) ne comptez rien et ne faites pas référence aux clusters, retirez simplement les paires de points les plus proches. Si la distance est inférieure au seuil, le seuil dans cet exemple serait de 0,6. Dans d'autres problèmes, nous devrons probablement le sélectionner.
Si un point supprimé de la classe 1 était associé à un autre point de la classe 0, il se retrouve sans paire et doit trouver un nouveau point le plus proche de la classe 1 (faites à nouveau un calcul ou utilisez une matrice, comme vous l'avez suggéré au point 1, si la mémoire est suffisante, je pense qu'une matrice de 1 million par 1 million ne rentrera dans aucune mémoire, jusqu'à 100 000 peut-être).
4) pas jusqu'à ce qu'il reste, mais jusqu'à la distance du seuil. Si cette distance est très grande, il ne restera que les points d'une des classes, qui étaient initialement plus nombreux.

Mais comme je l'ai déjà écrit, je ne pense pas que cette élimination du bruit soit une bonne idée (voir https://www.mql5.com/ru/forum/86386/page3324#comment_50171043). Ce n'est pas comme si vous ne pouviez pas supprimer ce bruit lorsque vous faites des prédictions. L'arbre lui-même marquera les feuilles bruyantes en leur donnant une probabilité d'environ 50%, et prendra par exemple les feuilles non bruyantes avec une probabilité de l'une des classes >80% (ou autant que vous le souhaitez).

Je n'arrive pas encore à me mettre ça dans la tête. Tout se passe dans un seul espace - dans la métrique d'un prédicteur, mais comment prendre en compte les autres ?

Quant à ce qu'il faut faire pour prédire, je pensais utiliser deux modèles - l'un qui détecte ce qui a été abandonné ou qui confirme que les données se trouvent dans la région de "regroupement", et l'autre qui travaille déjà sur ce qui reste.

 
Aleksey Vyazmikin #:

Je n'arrive pas encore à m'y retrouver. Tout se passe dans un seul espace - dans la métrique d'un prédicteur, mais comment prendre en compte les autres ?

Quant à ce qu'il faut faire pour prédire, je pensais utiliser deux modèles: l'un détecte ce qui a été éliminé ou confirme que les données se trouvent dans la zone de "regroupement", et l'autre travaille déjà sur ce qui reste.

https://www.mql5.com/ru/articles/9138

Personne ne s'en préoccupe depuis un an

J'ai écrit une douzaine ou une vingtaine d'algorithmes de ce type, dont certains sont bien établis. Celui de l'article n'est pas le meilleur en termes de stabilité des résultats, la première galette.

Il n'y a donc rien à discuter, car il n'y a rien de mieux pour l'instant.


Метамодели в машинном обучении и трейдинге: Оригинальный тайминг торговых приказов
Метамодели в машинном обучении и трейдинге: Оригинальный тайминг торговых приказов
  • www.mql5.com
Метамодели в машинном обучении: Автоматическое создание торговых систем практически без участия человека — Модель сама принимает решение как торговать и когда торговать.
 
Je suis nouveau à ML. Je travaille sur plusieurs modèles. Et depuis une semaine, un problème est apparu. Aucun des modèles n'est sauvegardé dans ONNX(((. Qui a rencontré ce problème ?
WARNING:tf2onnx.tf_loader:Could not search for non-variable resources. Concrete function internal representation may have changed.
ERROR:tf2onnx.tf_utils:pass1 convert failed for name: "model_3/lstm_4/PartitionedCall/while"
op: "StatelessWhile"
input: "model_3/lstm_4/PartitionedCall/while/loop_counter"
input: "model_3/lstm_4/PartitionedCall/while/maximum_iterations"
input: "model_3/lstm_4/PartitionedCall/time"
input: "model_3/lstm_4/PartitionedCall/TensorArrayV2_1"
input: "model_3/lstm_4/zeros"
input: "model_3/lstm_4/zeros_1"
input: "model_3/lstm_4/PartitionedCall/strided_slice"
input: "model_3/lstm_4/PartitionedCall/TensorArrayUnstack/TensorListFromTensor"
input: "Func/model_3/lstm_4/PartitionedCall/input/_3"
input: "Func/model_3/lstm_4/PartitionedCall/input/_4"
input: "Func/model_3/lstm_4/PartitionedCall/input/_5"
attr {
  key: "T"
  value {
    list {
      type: DT_INT32
      type: DT_INT32
      type: DT_INT32
      type: DT_VARIANT
      type: DT_FLOAT
      type: DT_FLOAT
      type: DT_INT32
      type: DT_VARIANT
      type: DT_FLOAT
      type: DT_FLOAT
      type: DT_FLOAT
    }
  }
}
attr {
  key: "_lower_using_switch_merge"
  value {
    b: false
  }
}
attr {
  key: "_num_original_outputs"
  value {
    i: 11
  }
}
attr {
  key: "_read_only_resource_inputs"
  value {
    list {
    }
  }
}
attr {
  key: "body"
  value {
    func {
      name: "while_body_149241"
    }
  }
}
attr {
  key: "cond"
  value {
    func {
      name: "while_cond_149240"
    }
  }
}
attr {
  key: "output_shapes"
  value {
    list {
      shape {
      }
      shape {
      }
      shape {
      }
      shape {
      }
      shape {
        dim {
          size: -1
        }
        dim {
          size: 128
        }
      }
      shape {
        dim {
          size: -1
        }
        dim {
          size: 128
        }
      }
      shape {
      }
      shape {
      }
      shape {
        dim {
          size: 1
        }
        dim {
          size: 512
        }
      }
      shape {
        dim {
          size: 128
        }
        dim {
          size: 512
        }
      }
      shape {
        dim {
          size: 512
        }
      }
    }
  }
}
attr {
  key: "parallel_iterations"
  value {
    i: 32
  }
}
, ex=Could not infer attribute `_read_only_resource_inputs` type from empty iterator
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-50 ef5b7ad3f4> in <cell line: 87>()
     85 
     86 # Преобразовать Keras-модель в ONNX формат
---> 87 onnx_model = tf2onnx.convert.from_keras(model)
     88 
     89 # Сохранить модель в формате ONNX

8 frames
/usr/local/lib/python3.10/dist-packages/onnx/helper.py in make_attribute(key, value, doc_string, attr_type)
    874         value = list(value)
    875         if len(value) == 0 and attr_type is None:
--> 876             raise ValueError(
    877                 f"Could not infer attribute `{key}` type from empty iterator"
    878             )

ValueError: Could not infer attribute `_read_only_resource_inputs` type from empty iterator
Raison: