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

 
Maxim Dmitrievsky:

sélectionner tous les fichiers et les télécharger, ils seront zippés

différentes longueurs d'échantillon, alors si une partie

Merci, c'est vrai - vous pouvez télécharger comme une archive, ce qui est bien !

Mais des longueurs d'échantillonnage différentes sont mauvaises, je pensais sélectionner les colonnes les plus aléatoires où de petits écarts sont acceptables.

Je pense qu'il n'est pas nécessaire d'appliquer cette méthode à l'échantillon - sinon comment puis-je l'utiliser dans la vie réelle.

Je l'utilise pour m'entraîner, on verra bien ce qui se passe.

 
Aleksey Vyazmikin:

Merci, c'est vrai - vous pouvez télécharger une archive, ce qui est bien !

Mais les différentes longueurs d'échantillon sont mauvaises, j'ai pensé à mettre en évidence les colonnes les plus aléatoires, où de petits écarts sont acceptables.

Je pense qu'il n'est pas nécessaire d'appliquer cette méthode à l'échantillon - sinon comment puis-je l'utiliser dans la vie réelle.

Je l'utilise pour m'entraîner, on verra bien ce qui se passe.

Je n'en ai pas besoin pour les examens, mais ça peut être utile.

 
elibrarius:

Trop paresseux pour convertir)
Laissez-moi vous expliquer :

1) nous trions la colonne
2) nous comptons le nombre moyen d'éléments dans un quantum, par exemple 10000 éléments / 255 quanta = 39,21
3) dans la boucle, nous nous déplaçons de 39,21 éléments à chaque étape et ajoutons la valeur du tableau trié au tableau des valeurs des quanta. Par exemple, la valeur 0 du tableau = 0 quantum, la 39e valeur = 1 quantum, la 78e valeur = 2 quantum, etc.

Si la valeur est déjà dans le tableau, c'est-à-dire si nous arrivons dans une zone avec de nombreux doublons, nous ignorons le doublon et ne l'ajoutons pas.

À chaque étape, nous ajoutons exactement 39,21, puis nous arrondissons la somme pour sélectionner un élément du tableau, afin qu'il soit égal. Par exemple, au lieu de 195 (39*5 = 195), prenez 196 ( 39,21 * 5 = (int) 196,05).

Avec une distribution uniforme, c'est clair - je créerais un tableau de valeurs uniques et l'utiliserais pour le découpage.

Mais il existe d'autres méthodes pour diviser la grille :

    THolder<IBinarizer> MakeBinarizer(const EBorderSelectionType type) {
        switch (type) {
            case EBorderSelectionType::UniformAndQuantiles:
                return MakeHolder<TMedianPlusUniformBinarizer>();
            case EBorderSelectionType::GreedyLogSum:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::GreedyMinEntropy:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::MaxLogSum:
                return MakeHolder<TExactBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::MinEntropy:
                return MakeHolder<TExactBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::Median:
                return MakeHolder<TMedianBinarizer>();
            case EBorderSelectionType::Uniform:
                return MakeHolder<TUniformBinarizer>();
        }
 
Aleksey Vyazmikin:

Avec une distribution uniforme, je vois - je créerais d'abord un tableau de valeurs uniques et l'utiliserais pour couper.

Mais il existe d'autres méthodes pour diviser la grille :

Il doit y avoir beaucoup d'échantillons, sinon le modèle n'apprendra rien.

 
Maxim Dmitrievsky:

Il doit y avoir beaucoup d'échantillons, sinon le modèle n'apprendra rien.

Ce sont les méthodes de quantification de l'échantillonnage pour CatBoost - ce sont les limites sur lesquelles l'énumération/apprentissage va ensuite.

Mes expériences montrent que la grille devrait être choisie pour chaque prédicteur séparément, alors l'augmentation de la qualité est observée, mais il n'est pas capable de le faire CatBoost et je ne suis pas capable de construire une grille et je dois construire des grilles et les télécharger en csv, puis les itérer afin d'estimer le comportement des cibles en eux. Je pense que c'est un outil très prometteur, mais je dois traduire le code en MQL.

 
Aleksey Vyazmikin:

Ce sont les méthodes de quantification d'échantillonnage pour CatBoost - ce sont les limites par lesquelles l'énumération/apprentissage procède ensuite.

Mes expériences montrent que la grille devrait être choisie pour chaque prédicteur séparément, puis un gain de qualité est observé, mais CatBoost ne peut pas le faire et je ne peux pas construire une grille et je dois construire des grilles et les télécharger en csv et ensuite les itérer pour évaluer le comportement de la cible dans celles-ci. Je pense que c'est une fonctionnalité très prometteuse, mais je dois traduire le code en MQL.

est-ce dans les réglages du modèle lui-même (paramètres) ? je ne sais pas ce que c'est

si ce n'est pas dans les paramètres, alors c'est une connerie.

 
Maxim Dmitrievsky:

Est-ce dans les réglages du modèle lui-même (paramètres) ? Je ne sais pas ce que c'est...

Si ce n'est pas dans les paramètres, c'est des conneries.

Il est dans les paramètres, au moins pour la ligne de commande

--feature-border-type

Le mode dequantification pour les caractéristiques numériques.

Valeurs possibles :
  • Médiane
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropie
  • GreedyLogSum
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
 
Aleksey Vyazmikin:

C'est dans les paramètres, au moins pour la ligne de commande

--feature-border-type

Le mode dequantification pour les caractéristiques numériques.

Valeurs possibles :
  • Médiane
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropie
  • GreedyLogSum

Est-ce que ça fait une grande différence ? Ça devrait être à un pour cent près.

 
Aleksey Vyazmikin:

Avec une distribution uniforme, je vois - je créerais d'abord un tableau de valeurs uniques et l'utiliserais pour couper.

Mais il existe d'autres méthodes pour diviser la grille :

Si vous avez des valeurs uniques, ce sera le bazar. Par exemple, vous avez 100 chaînes de caractères dont 10 sont uniques, 2 d'entre elles ont 45 chaînes et 8 en ont 1. Divisé par 5 quanta, il est possible que seuls 5 par 1 soient choisis, et que les 2 plus représentatifs (par 45) soient ignorés.
 
Maxim Dmitrievsky:

et est-ce que ça fait une grande différence ? Ça devrait être à un pourcentage près.

Le choix de la bonne ventilation a un impact important sur le résultat.

Voici un exemple sur le rappel - jusqu'à 50% de variation - pour moi c'est significatif.

En augmentant les limites de 16 à 512 par incréments de 16 - mais pas dans l'ordre sur l'histogramme - mes titres sont un peu gênants.


Je suis encore en train d'expérimenter la sélection de mailles, mais il est déjà évident qu'il y a différents prédicteurs pour lesquels différentes mailles sont nécessaires, pour observer la logique, et pas seulement pour les ajuster.

Raison: