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

 
elibrarius:
J'étais en train de scier Darch sur R. J'ai trouvé quelques bogues, je les ai décrits dans les commentaires. Après quelques semaines de silence, ce Darch s'est avéré être dans les archives de CRANa.
J'ai demandé au développeur de corriger certains problèmes, il l'a fait. Et puis on est revenu à la version originale, en effaçant toutes les corrections. En conséquence, toutes les modifications que j'ai utilisées n'étaient pas disponibles.
Conclusion - soit vous faites tout vous-même, soit vous utilisez des produits de qualité supérieure bénéficiant d'un très bon support.

1. vous devez faire un fork et héberger toutes les modifications. Ils peuvent être acceptés ou non, mais vous pourrez utiliser votre version depuis votre GitHub.

2. Bien sûr, c'est l'option la plus fiable.

 
Maxim Dmitrievsky:

Pour ceux qui recherchent la complexité mais ne comprennent pas à quel point le simple peut être beau.

et en anglais, bien sûr, comme demandé. Non, je ne vais pas le traduire moi-même. Il y a un lien vers le site web où vous pouvez traduire les articles.


C'est un rapport très intéressant, qui ne se limite pas au simple et au complexe. L'accent est mis sur le fait qu'en utilisant un prétraitement complexe, vous pouvez réduire la résolution d'un problème à des modèles simples. Juste la confirmation d'une vérité simple que je ne me lasse pas de répéter dans mes articles : "L'effort principal doit être consacré au prétraitement des prédicteurs, les modèles sont secondaires.

L'orateur est hilarant.

Bonne chance

 
Vladimir Perervenko:

Cet exposé très intéressant ne porte pas seulement sur le simple et le complexe. L'accent est mis sur la manière dont l'utilisation d'un prétraitement complexe peut être ramenée à la résolution d'un problème avec des modèles simples. Juste la confirmation d'une vérité simple que je ne me lasse pas de répéter dans mes articles : "L'effort principal doit être consacré au prétraitement des prédicteurs, les modèles sont secondaires.

L'orateur est hilarant.

Bonne chance

XGBOOST a un tableau d'entrée weights avec des poids de type chaîne. Certains autres paquets l'ont aussi.
Je pensais que je pourrais y écrire des poids allant de 1 (pour les cordes fraîches) à 0,5 pour les cordes anciennes. Cela augmenterait l'impact des nouvelles données.
Je l'ai essayé et je n'ai pas remarqué d'amélioration particulière.

Quelqu'un d'autre l'a-t-il essayé - une amélioration ?

 
elibrarius:
XGBOOST a un tableau d'entrée de poids avec des poids de ligne. Certains autres paquets l'ont aussi.
Je pensais pouvoir y écrire des pondérations allant de 1 (pour les données récentes) à 0,5 pour les données anciennes. Cela augmenterait l'impact des nouvelles données.
Je l'ai essayé et je n'ai pas remarqué d'amélioration particulière.

Quelqu'un d'autre l'a-t-il essayé - une amélioration ?

C'est un peu faux. Vous avez par exemple train[2000, ] et test[500, ]. Vous vous entraînez sur train avec des poids d'exemple initiaux = 1.0, et faites du prédicat test[] un modèle entraîné. En fonction de la qualité de chaque préfixe de test, vous lui attribuez un poids. Ensuite, on combine train et test et on forme un nouvel échantillon d'entraînement, on entraîne le modèle, on le teste et ainsi de suite jusqu'à ce que tous les échantillons d'entraînement aient des poids obtenus de cette manière. Vous pouvez leur appliquer un facteur de réduction pour les barres plus anciennes, mais je ne l'ai pas vérifié. Tout ceci est pour la classification bien sûr.

now_train <- rbind(train,test)%>% tail(dim(train)[1])

Vérifié avec ELM, donne de bons résultats.

Bonne chance

 
Vladimir Perervenko:

Ce n'est pas tout à fait ça. Vous avez par exemple train[2000, ] et test[500, ]. Train on nrain with initial example weights = 1.0, make predicate test[] a trained model. En fonction de la qualité de chaque préfixe de test, vous lui attribuez un poids. Ensuite, on fusionne le train et le test et on forme un nouvel échantillon de formation, on forme le modèle, on le teste et ainsi de suite jusqu'à ce que l'ensemble de l'échantillon de formation ait des poids obtenus de cette manière. Vous pouvez leur appliquer un facteur de réduction pour les barres plus anciennes, mais je ne l'ai pas vérifié. Tout ceci est pour la classification bien sûr.

Vérifié avec ELM, donne de bons résultats.

Bonne chance

C'est comme dans la validation croisée - diviser les données en 5-10 parties et mettre des poids pour chaque cycle jusqu'à ce que tous les poids soient fixés. Je pense que nous devrions faire 2-3 cercles complets pour l'équilibre.

Cela me rappelle plusieurs itérations comme dans l'auto-apprentissage pour définir les meilleurs poids de ligne.
 
elibrarius:
C'est comme la validation croisée : divisez les données en 5 à 10 parties, puis chaque cycle pondère une partie des lignes jusqu'à ce que toutes soient définies. Je pense qu'on devrait faire 2 ou 3 cercles complets pour équilibrer le tout.

Cela me rappelle plusieurs itérations comme dans l'auto-apprentissage pour définir les meilleurs poids de ligne.

Il est possible de procéder à une vérification par recoupement.

 
elibrarius:
XGBOOST a un tableau d'entrée de poids avec des poids de ligne. Certains autres paquets l'ont aussi.
J'ai pensé que nous pourrions y écrire des poids allant de 1 (pour les cordes fraîches) à 0,5 pour les cordes anciennes. Cela augmenterait l'impact des nouvelles données.
Je l'ai essayé et je n'ai pas remarqué d'amélioration particulière.

Quelqu'un d'autre l'a-t-il essayé - une amélioration ?

bien et ne vous instruisez que sous les nouvelles alors. Ces poids sont pour l'alignement de la variance du modèle sur l'ensemble de données, dans la régression logit avec la variance variable est également utilisé (si je ne suis pas confus sur ce dont nous parlons)

aucune amélioration conceptuelle significative, autre que l'ajustement de l'ensemble de données, ne devrait donner

Si vous avez besoin d'une généralisation fiable pour la population générale sur un petit sous-échantillon, il s'agit d'approches bayésiennes.
 
elibrarius:
XGBOOST a un tableau d'entrée de poids avec des poids de ligne. D'autres paquets ont également cette caractéristique.
Je pensais que je pourrais mettre des poids allant de 1 (pour les données récentes) à 0,5 pour les données anciennes. Cela augmenterait l'impact des nouvelles données.
Je l'ai essayé et je n'ai pas remarqué d'amélioration particulière.

Quelqu'un d'autre l'a-t-il essayé - une amélioration ?

L'idée est que ces poids affecteront la construction du premier arbre, c'est-à-dire presque la même graine et le même bogue, des techniques différentes. Théoriquement, le résultat pourrait changer considérablement si vous déplacez les prédicteurs d'échantillons bien séparés vers l'arrière-plan dans les rangées où ils donnent la bonne classification.

N'est-il pas possible de définir l'application du prédicteur uniquement à partir de la division X ? Je pense que c'est une chose très utile de trouver un bon modèle.
 
Maxim Dmitrievsky:

et ne s'entraîner que pour les nouveaux alors. Ces poids servent à aligner la variance du modèle sur l'ensemble des données, dans la régression logit avec la variance de la variable est également utilisée (si je ne me trompe pas sur ce dont nous parlons).

Toute amélioration conceptuelle significative, à l'exception de l'ajustement des ensembles de données, ne devrait pas donner...

si vous avez besoin d'une généralisation fiable pour la population générale sur un petit sous-échantillon, c'est l'approche bayésienne.

C'est-à-dire que l'alignement est choisi par la méthode suggérée par Vladimir ?

 
Aleksey Vyazmikin:

Dans l'idée, ces poids affecteront la construction du premier arbre, c'est-à-dire presque la même graine et le même bogue, des techniques différentes. En théorie, le résultat pourrait changer considérablement si nous déplacions les prédicteurs d'échantillons bien séparés vers l'arrière-plan dans les rangées où ils donnent la bonne classification.

N'est-il pas possible de spécifier comment appliquer un prédicteur uniquement à partir de la division X ? Je pense que c'est une chose très utile dans la recherche d'un bon modèle.

Ces pondérations peuvent être appliquées non seulement dans le boosting, mais aussi dans le cas des forêts et des NS. Apparemment, la méthodologie est commune à tous les systèmes du MoD.
La première expérience consistant à diminuer l'influence des anciennes données n'a montré aucune amélioration.

Le test est meilleur lorsqu'on s'entraîne sur 30000 lignes que lorsqu'on s'entraîne sur 80000. À 80000, les deux transactions sont plus petites et l'erreur est plus élevée. J'ai essayé de diminuer le poids proportionnellement (de 1 pour le frais à 0,5 pour le vieux) - les résultats sont presque les mêmes.


Apparemment, il s'agit toujours de l'alignement de la dispersion, comme l'a souligné Maxim, selon la méthode indiquée par Vladimir.