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

 
Dr. Trader:

Généatique essaie de trouver les bons paramètres pour un nombre limité d'appels de fonctions. En réduisant le nombre de variantes de ce paramètre (30 au lieu de 200), le généticien peut étudier plus en détail la région allant de 1 à 30. Et à juste titre, si vous connaissez les limites spécifiques pour trouver un certain paramètre du modèle, il est préférable de donner cette information au généticien immédiatement.


Alternativement :

Ajoutez cette ligne (la verte) au code, alors le généticien aura 500 individus dans la population au lieu des 50 par défaut. Et elle pourra tester 10 fois plus de modèles (mais le temps d'exécution du script sera également multiplié par 10), en étant capable d'essayer autant de combinaisons de paramètres de modèles que possible. Même avec un maximum de 200 neurones, je pense que les généticiens obtiendront de meilleurs résultats avec 0,85 également, ou du moins des résultats proches.

Je ne comprends pas de quelle génétique vous parlez. Il n'y a pas de génétique en ELM. Il suffit de regarder la théorie ELM ou la description du paquet elmNN :

"L'algorithme ELM est une méthode d'apprentissage alternative pour les SLFN (Single Hidden Layer Feedforward Networks) qui ne nécessite pas de réglage itératif ni de paramètres tels que le taux d'apprentissage, le momentum, etc., qui sont des problèmes courants des algorithmes d'apprentissage traditionnels basés sur le gradient (comme la rétropropagation).

La formation d'un SLFN avec ELM est un modèle d'apprentissage en trois étapes :

Étant donné un ensemble d'apprentissage P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, la fonction de sortie du nœud caché G(a, b, x) et le nombre de nœuds cachés L

1) Attribuez de manière aléatoire les paramètres des nœuds cachés (ai , bi ), i = 1,..., L. Cela signifie que les poids des arcs entre la couche d'entrée et la couche cachée et la couche cachée sont générés de manière aléatoire.

2) Calculez la matrice de sortie de la couche cachée H en utilisant l'une des fonctions d'activation disponibles.

3) Calculer les poids de sortie B : B = ginv(H) %*% T (multiplication de la matrice), où T est la sortie cible de l'ensemble d'apprentissage.

ginv(H) est l'inverse généralisé de Moore-Penrose de la matrice de sortie de la couche cachée H. Il est calculé par la fonction ginv du package MASS.

Une fois que le SLFN a été entraîné, la sortie d'un ensemble de test générique est simplement Y = H %*% B (multiplication de la matrice). Caractéristiques saillantes :

- La vitesse d'apprentissage de l'ELM est extrêmement rapide.

- Contrairement aux algorithmes d'apprentissage traditionnels basés sur le gradient qui ne fonctionnent que pour les fonctions d'activation différentiables, l'ELM fonctionne pour toutes les fonctions d'activation continues par morceaux non constantes et bornées.

- Contrairement aux algorithmes d'apprentissage traditionnels basés sur le gradient, qui sont confrontés à plusieurs problèmes tels que les minima locaux, le taux d'apprentissage inapproprié et le surajustement, etc., l'ELM tend à atteindre les solutions de manière directe, sans ces problèmes triviaux.

- L'algorithme d'apprentissage ELM semble beaucoup plus simple que d'autres algorithmes d'apprentissage populaires : les réseaux neuronaux et les machines à vecteurs de support."

Même avec un petit nombre de neurones, il est impossible d'obtenir deux réseaux neuronaux identiques. Vous définissez de manière incorrecte le seuil de transfert de la production continue vers une classe. Seuil = 0,5 est le pire cas. Acceptable = médiane/ Mais il en existe de plus avancées.

Bonne chance

 
Maxim Dmitrievsky:

Oh, ce sera quelque chose à lire, j'avais oublié ce que c'était. Ou plutôt, a oublié la différence entre GBM et XGboost... ou ne savait pas

gbm peut booster n'importe quel modèle, xgb semble être sur les arbres

Je sais que le boosting est légèrement meilleur que le bagging, grâce auquel la forêt est construite. Je ne sais pas pour le recyclage.


Le redémarrage n'a RIEN à voir avec le type de modèle.

Un modèle est réentraîné dans deux cas :

  • la présence de prédicteurs de bruit est un problème majeur et est résolu UNIQUEMENT par l'ajustement des prédicteurs
  • surajustement du modèle - "optimisation" de ses paramètres, généralement sur un petit échantillon. Ce type de surajustement est résolu par l'expérience des développeurs.

 
SanSanych Fomenko:

SanSanych, arrêtez d'être hystérique.

 
Vladimir Perervenko:

Je ne comprends pas de quelle génétique vous parlez. Il n'y a pas de génétique dans l'ELM. Il suffit de regarder la théorie ELM ou la description du paquet elmNN :

"L'algorithme ELM est une méthode d'apprentissage alternative pour les SLFN (Single Hidden Layer Feedforward Networks) qui ne nécessite pas de réglage itératif ni de paramètres tels que le taux d'apprentissage, le momentum, etc., qui sont des problèmes courants des algorithmes d'apprentissage traditionnels basés sur le gradient (comme la rétropropagation).

La formation d'un SLFN avec ELM est un modèle d'apprentissage en trois étapes :

Étant donné un ensemble d'apprentissage P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, la fonction de sortie du nœud caché G(a, b, x) et le nombre de nœuds cachés L

1) Attribuez de manière aléatoire les paramètres des nœuds cachés (ai , bi ), i = 1,..., L. Cela signifie que les poids des arcs entre la couche d'entrée et la couche cachée et la couche cachée sont générés de manière aléatoire.

2) Calculez la matrice de sortie de la couche cachée H en utilisant l'une des fonctions d'activation disponibles.

3) Calculer les poids de sortie B : B = ginv(H) %*% T (multiplication de la matrice), où T est la sortie cible de l'ensemble d'apprentissage.

ginv(H) est l'inverse généralisé de Moore-Penrose de la matrice de sortie de la couche cachée H. Il est calculé par la fonction ginv du package MASS.

Une fois que le SLFN a été entraîné, la sortie d'un ensemble de test générique est simplement Y = H %*% B (multiplication de matrice). Caractéristiques saillantes :

- La vitesse d'apprentissage de l'ELM est extrêmement rapide.

- Contrairement aux algorithmes d'apprentissage traditionnels basés sur le gradient qui ne fonctionnent que pour les fonctions d'activation différentiables, l'ELM fonctionne pour toutes les fonctions d'activation continues par morceaux non constantes et bornées.

- Contrairement aux algorithmes d'apprentissage traditionnels basés sur le gradient, qui sont confrontés à plusieurs problèmes tels que les minima locaux, le taux d'apprentissage inapproprié et le surajustement, etc., l'ELM tend à atteindre les solutions de manière directe, sans ces problèmes triviaux.

- L'algorithme d'apprentissage ELM semble beaucoup plus simple que d'autres algorithmes d'apprentissage populaires : les réseaux neuronaux et les machines à vecteurs de support."

Même avec un petit nombre de neurones, il est impossible d'obtenir deux réseaux neuronaux identiques. Vous définissez de manière incorrecte le seuil de transfert de la sortie continue vers une classe. Seuil = 0,5 est le pire cas. Acceptable = médiane/ Mais il en existe de plus avancées.

Bonne chance

Sur mon petit fichier d'entraînement, il y a 100% de correspondance entre les sessions d'entraînement...

 

Sur quelle période de temps déchargez-vous les données ?

J'ai un écart de 2 ans et une différence de données de 15 secondes. Prédicteurs : 30 naturels et plus de 1000 générés au format "(double)(val1 < val2)".

Au début, j'ai également considéré que le nombre de prédicteurs devait être réduit, mais la pratique a montré que plus est mieux.

Bien sûr, 1000 prédicteurs en 2 ans donnent un volume d'environ 3GB. Utiliser R pour de tels volumes n'est pas sérieux.

Python a battu R en datamining, car il y a Cython et Jython, qui se sont greffés sur des projets comme TensorFlow, Spark, MXNet...

 
Dr. Trader:

Généatique essaie de trouver les bons paramètres pour un nombre limité d'appels de fonctions. En réduisant le nombre de variantes de ce paramètre (30 au lieu de 200), le généticien peut étudier plus en détail la région allant de 1 à 30. Et à juste titre, si vous connaissez les limites spécifiques pour trouver un certain paramètre de modèle, il vaut mieux donner cette information au généticien immédiatement.


Alternativement :

Ajoutez cette ligne (la verte) au code, alors le généticien aura 500 individus dans la population au lieu des 50 par défaut. Et elle pourra tester 10 fois plus de modèles (mais le temps d'exécution du script sera également multiplié par 10), en étant capable d'essayer autant de combinaisons de paramètres de modèles que possible. Même avec un nombre maximal de neurones de 200, je pense que la génétique sera en mesure de trouver un meilleur résultat avec 0,85 également, ou du moins de s'en approcher.

Merci !!!! Il s'est vraiment amélioré. Eh bien, voyons comment ça se passe... L'essentiel est de gagner régulièrement...

 
Vladimir Perervenko:

Je ne comprends pas de quelle génétique vous parlez.

C'est dans le script R que j'ai montré à Mikhail il y a une centaine de pages. L'algorithme génétique passe en revue les paramètres pour elmnn (fonction d'activation, grain gpsh, nombre de neurones cachés). La fonction de fitness pour la génétique entraîne un comité de modèles elmnn en utilisant ces paramètres, évalués via kfold, etc.

J'ai écrit ce script moi-même, lorsque j'ai été inspiré par votre article sur elmnn et l'optimisation bayésienne. Mais j'ai implémenté la génétique au lieu des baes, cela fonctionne beaucoup plus rapidement de cette façon, et l'estimation du comité est faite à mon goût.

 
SanSanych Fomenko:

Le modèle est réentraîné dans deux cas :

  • la présence de prédicteurs bruités est un problème majeur et est résolu UNIQUEMENT en sélectionnant les prédicteurs

La question ne s'adresse pas seulement à vous, mais à tout le monde.

En pratique, c'est le cas, c'est-à-dire que s'il y a des prédicteurs de bruit, NS ne peut pas sortir de 50-55%. Si vous le ramassez, il peut même vous donner 70%.

Mais pourquoi en est-il ainsi ?
1) Eh bien, NS devrait automatiquement sélectionner des poids proches de 0 pour les prédicteurs de bruit pendant la formation (cela équivaut à leur exclusion de la sélection). Nous l'avons vu dans le problème du début de la branche.
2) Si ce n'est pas en s'entraînant à sous-estimer les poids, alors au moins l'abandon devrait les trier...

 
Dr. Trader:

C'est dans le script R, que j'ai montré à Mikhail il y a une centaine de pages. L'algorithme génétique essaie des paramètres pour elmnn (fonction d'activation, grain gpsh, nombre de neurones cachés). Dans la fonction de fitness pour la génétique, un comité de modèles elmnn est entraîné en utilisant ces paramètres, estimés via kfold, etc.

Copiez-le sur votre blog, peut-être que quelqu'un d'autre en aura besoin. Il n'est pas réaliste de chercher quelque chose ici.
 
elibrarius:

La question ne s'adresse pas seulement à vous, mais à tout le monde.

En pratique, c'est le cas, c'est-à-dire que s'il y a des prédicteurs de bruit, NS ne peut pas sortir de 50-55%. Si vous le ramassez, il peut même vous donner 70%.

Mais pourquoi en est-il ainsi ?
1) Eh bien, NS devrait automatiquement sélectionner des poids proches de 0 pour les prédicteurs de bruit pendant la formation (cela équivaut à leur exclusion de la sélection). Nous l'avons vu dans le problème du début de la branche.
2) Si ce n'est pas en s'entraînant à sous-estimer les poids, alors au moins l'abandon devrait les trier...

Il y a toujours une dimension supplémentaire et vous devez dessiner une courbe à travers elle d'une manière ou d'une autre, peut-être avec une grosse erreur...

Le décrochage augmente au contraire l'erreur, non ?