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

 
Yuri, j'ai pu former un modèle vmr, mais je ne peux pas prédire de nouvelles données sur celui-ci, pouvez-vous me dire ce qui ne va pas ? Je sélectionne le menu Charger le modèle, je sélectionne le fichier train.vmr dans la pièce jointe, puis je clique sur Utiliser le modèle. Je vois le texte "Entrez les données et appuyez sur "OK" dans le journal. Mais c'est tout, quelles que soient les données que j'entre, je vois toujours un bouton Ok gris inactif et je ne peux pas obtenir de réponse. Les fichiers train.csv et test.csv sont également dans atache, ce sont ceux que vous avez postés précédemment.
Dossiers :
train.zip  38 kb
 
Dr. Trader:
Yuri, j'ai pu former un modèle vmr, mais je ne peux pas prédire de nouvelles données sur celui-ci, pouvez-vous me dire ce qui ne va pas ? Je sélectionne le menu Charger le modèle, je choisis le fichier train.vmr dans la pièce jointe, puis je clique sur Utiliser le modèle. Je vois le texte "Entrez les données et appuyez sur "OK" dans le journal. Mais c'est tout, quelles que soient les données que je saisis, je vois toujours un bouton Ok gris inactif et je ne peux pas obtenir de réponse. Les fichiers Train.csv et test.csv sont également dans atache, ce sont ceux que vous avez postés précédemment.

Vous avez dû entrer quelque chose de non-numérique ? Cela déclenche un gestionnaire d'exception et désactive le bouton OK. Dans ce cas, vous devez redémarrer jPrediction.

Je me pencherai sur cette question dans un avenir proche afin de pouvoir au moins afficher une sorte de message d'avertissement lorsqu'un utilisateur a saisi des données non numériques.

P/S Je l'ai déjà réparé.

Par exemple, entrons le symbole "z" au lieu d'un numéro. Un message d'erreur s'affiche alors :

Pour activer le bouton OK maintenant, sélectionnez l'élément de menu Fichier>Utiliser le modèle :


J'ai téléchargé la version corrigée sur mon site

 

J'ai trouvé, l'erreur venait du mauvais format de données. J'ai formaté les données comme vous l'avez fait dans le pdf - j'ai ajouté une deuxième ligne avec une explication, la première colonne avec les indices, et j'ai supprimé le nom de la colonne du prédicteur. Tout fonctionne. Le modèle est entraîné dans les deux cas, à la fois sur les données originales et sur les données formatées. Mais la prédiction ne fonctionne que si des données spécialement formatées sont utilisées pour la formation.

Mais malheureusement, votre modèle a échoué au test sur vos propres données. Vous avez précédemment posté des fichiers train.csv et test.csv et vous aviez de bonnes performances de prédiction. J'ai vérifié, l'erreur de prédiction est de 50%, pas de bonnes performances du tout.

Étapes du test :

1) Formatez le fichier train.csv comme ci-dessus. Ensuite, divisez physiquement le fichier en deux - train_part1.csv et train_part2.csv. Le second fichier contient les 20 dernières lignes de train.csv. Le premier fichier contient tout le reste sauf les 20 dernières lignes, de sorte que les données des deux fichiers ne se chevauchent pas.

2) Entraînez le modèle sur train_part1.csv, entrez dans le mode de prévision. Alimenter alternativement les lignes de train_part2.csv pour la prédiction. Je n'ai obtenu la bonne réponse que 9 fois sur 20, pas de miracle.

Je ne comprends pas pourquoi, si votre modèle divise lui-même le fichier d'entraînement original en deux parties pour l'entraînement et la validation, puis effectue un test hors échantillon, il aboutit à une précision de prédiction de 100 ? Et si vous divisez physiquement le fichier d'apprentissage et effectuez manuellement le test hors échantillon, la prédiction n'est pas meilleure que de tirer à pile ou face ? Si j'utilise n'importe quel échantillon de l'échantillon d'entraînement pour la prédiction, la prédiction fonctionne correctement, c'est-à-dire que la fonction de prédiction semble être correcte. Tout ceci est très mauvais et erroné, vous avez de graves erreurs dans votre code.

Dossiers :
vmr_test.zip  44 kb
 
SanSanych Fomenko:

Seule une familiarité très superficielle avec R permettrait de parler de "canassons".

Bien sûr, on met R et on voit un interpréteur de chaînes de caractères. Si vous allez plus loin, vous pouvez voir le bytecode, mais cela ne résout aucun des problèmes de l'interpréteur en termes d'efficacité. Il n'y a même pas de quoi discuter - râleur.

Mais si vous vous plongez un peu dans les paquets R, vous verrez rapidement que ce que vous voyez dans le code R fait référence à d'autres codes. Et si vous commencez à enquêter, vous verrez que pour les algorithmes à forte intensité de calcul, R utilise toujours des paquets tiers, qui ont été choisis selon le principe de l'efficacité maximale. Il s'agit généralement de bibliothèques C ou Fortran.

Ou, par exemple, les opérations matricielles. Étant donné que R n'a aucune notion de scalaire et que tout commence par des vecteurs et que l'arithmétique matricielle est complètement naturelle pour R, la question de l'utilisation d'une bibliothèque appropriée qui n'est PAS écrite en R est une question de principe. La bibliothèque Intel Math Kernel est utilisée.

De plus, la mise en parallèle des calculs non seulement sur tous les cœurs de son propre ordinateur, mais aussi sur les ordinateurs voisins, est une opération courante dans R.

La question est donc de savoir ce qui est "harcelant" et ce qui ne l'est pas.

PS.

Vous n'avez pas besoin de porter quoi que ce soit à R, vous devez juste apprendre les mathématiques. R a tout ce dont vous avez besoin et bien plus que cela.

Je suis d'accord avec SanSanych. Tout ce dont vous avez besoin pour chacune de vos idées est déjà présent dans R/.

La remarque arrogante de Reshetov n'est pas surprenante. C'est une telle vision du monde.

Il n'est pas nécessaire de changer d'avis. Cela n'a aucun sens.

 
Dr. Trader:

Je ne comprends pas pourquoi, si votre modèle divise lui-même le fichier d'entraînement original en deux parties pour l'entraînement et la validation, puis effectue un test hors échantillon, il aboutit à une précision de prédiction de 100 ? Et si vous divisez physiquement le fichier d'apprentissage et effectuez manuellement le test hors échantillon, la prédiction n'est pas meilleure que de tirer à pile ou face ? Si j'utilise n'importe quel échantillon de l'échantillon d'entraînement pour la prédiction, la prédiction fonctionne correctement, c'est-à-dire que la fonction de prédiction semble être correcte. Tout ceci est très mauvais et erroné, vous avez de sérieuses erreurs dans votre code.

Vous avez raison, il y a une erreur dans le code. Je vais le corriger.
 
Vladimir Perervenko:

Je soutiens SanSanych. Tout ce dont vous avez besoin pour n'importe laquelle de vos idées est déjà dans le R/.

Je vais argumenter ici, si je peux me permettre, nag est signifié en termes de vitesse et je suis absolument d'accord avec Yuri...

Vous pouvez trouver une solution toute prête pour R pour presque tous les problèmes, mais parfois vous êtes coincé avec la vitesse

Je me souviens, je faisais une recherche très difficile pour de nombreux paramètres à travers la fonction de corrélation, au début j'ai utilisé la fonction intégrée de R (d'ailleurs, elle est écrite en C++), mais parce qu'elle était surchargée avec différentes méthodes, le calcul d'un tour de mon cycle a pris environ 3,9 minutes ou 230 secondes, ce temps n'était pas acceptable, la deuxième étape a été d'écrire ma propre fonction dans R sans tout le reste, ma fonction a fonctionné en 30 secondes, mais cela ne me satisfaisait pas, parce que R était mon premier et seul langage, j'ai demandé à mon ami d'écrire pour moi une fonction corr alors comparons

Le champ de corrélation par défaut dans R est de 230 secondes.

fonction de corrélation R auto-écrite - 30 sec.

fonction écrite en C++ - 0,33 sec

Donc oui, Yuri a raison, R est une limace dans le contexte où il l'entendait, mais ce problème peut être résolu, et pour ce qui est de la commodité et de la vitesse d'écriture du code, je pense que R est loin de tous les langages car je n'ai pas à écrire quoi que ce soit, tout est prêt, c'est pourquoi j'aime R...

 
mytarmailS:

Je vais argumenter ici, si je peux me permettre, le nag est signifié en termes de vitesse et je suis absolument d'accord avec Yuri ...

Vous avez toutes les chances de trouver une solution toute faite à presque n'importe quel problème, mais parfois, vous devez vous contenter de la vitesse.

Je me souviens, je faisais une recherche très difficile pour de nombreux paramètres à travers la fonction de corrélation, au début j'ai utilisé la fonction intégrée de R (d'ailleurs, elle est écrite en C++), mais parce qu'elle était surchargée avec différentes méthodes, le calcul d'un tour de mon cycle a pris environ 3,9 minutes ou 230 secondes, ce temps n'était pas acceptable, la deuxième étape a été d'écrire ma propre fonction dans R sans tout le reste, ma fonction a fonctionné en 30 secondes, mais cela ne me satisfaisait pas, parce que R était mon premier et seul langage, j'ai demandé à mon ami d'écrire pour moi une fonction corr alors comparons

La fonction de corrélation par défaut dans R est de 230 sec.

fonction de corrélation R auto-écrite - 30 sec.

fonction écrite en C++ - 0,33 sec

Donc oui Yuri a raison, R est un casse-pieds dans un contexte où il le pense, mais ce problème est résolu, et quant à la commodité et la vitesse de codage, je pense que R est loin de tous les langages car je n'ai presque rien à écrire, tout est prêt, c'est pourquoi j'aime R ...

Alors, quel est le rapport avec R ?

Une fois de plus, R a tout ce dont vous avez besoin pour mettre en œuvre vos idées, y compris la vitesse.

Par ailleurs, tout le monde et tout le monde ne sait pas comment les utiliser.

Mais ce n'est pas un problème de langue.

D'ailleurs, la commodité et la simplicité des fonctions en ligne dans Srr sont étonnantes.

Bonne chance

 
mytarmailS:

Je vais argumenter ici, si je peux me permettre, le nag est signifié en termes de vitesse et je suis absolument d'accord avec Yuri ...

Vous avez toutes les chances de trouver une solution toute faite à presque n'importe quel problème, mais parfois, vous devez vous contenter de la vitesse.

Je me souviens, je faisais une recherche très difficile pour de nombreux paramètres à travers la fonction de corrélation, au début j'ai utilisé la fonction intégrée de R (d'ailleurs, elle est écrite en C++), mais parce qu'elle était surchargée avec différentes méthodes, le calcul d'un tour de mon cycle a pris environ 3,9 minutes ou 230 secondes, ce temps n'était pas acceptable, la deuxième étape a été d'écrire ma propre fonction dans R sans tout le reste, ma fonction a fonctionné en 30 secondes, mais cela ne me satisfaisait pas, parce que R était mon premier et seul langage, j'ai demandé à mon ami d'écrire pour moi une fonction corr alors comparons

La fonction de corrélation par défaut dans R est de 230 sec.

fonction de corrélation R auto-écrite - 30 sec.

fonction écrite en C++ - 0,33 sec

Donc oui, Yuri a raison, R est une limace dans un contexte où il veut dire, mais ce problème est résolu, et quant à la commodité et la vitesse de codage, je pense que R est loin de tous les langages, car je n'ai presque pas à écrire quoi que ce soit, tout est prêt, c'est pourquoi j'aime R ...

Ne remplaçons pas les questions générales par un exemple particulier.

Si l'on parle en général de l'efficacité du code dans le SYSTÈME de programmation R, j'ai écrit sur les bases de l'efficacité. Contrairement à la plupart des systèmes de programmation, les algorithmes à forte intensité de calcul dans R sont utilisés indirectement et sont utilisés au mieux dans la programmation en général, à l'intérieur de certaines fonctions de contenu, bien qu'il existe une possibilité de les utiliser directement, par exemple l'optimisation ou l'AG.

L'exemple le plus clair de cette efficacité est celui des opérations matricielles, qui font partie des opérations les plus gourmandes en ressources informatiques. Un programmeur peut ne pas avoir conscience de la bibliothèque utilisée, car une opération matricielle n'est qu'une simple ligne de code.

D'ailleurs, ce que je n'ai pas écrit dans mon post sur l'efficacité est ce que vous avez écrit. C'est la capacité d'écrire un morceau de code snr, tout en soulignant que la structure de R est telle que cette insertion sera un ajout organique au code principal. Et l'exemple que vous avez donné est très typique de R.

 
OK, je propose de clore le sujet de l'efficacité R, car nous commençons déjà à répéter des évidences, et le sens est "pétrole, le ciel est bleu, l'herbe est verte".
 

Bonjour !

J'ai trouvé un paquet avec un réseau neuronal récurrent https://cran.r-project.org/web/packages/rnn/rnn.pdf, il était intéressant de le vérifier sur mes données (peut-être que quelqu'un d'autre serait intéressé ;) ). Mais j'ai rencontré quelque chose que je n'ai jamais rencontré auparavant, comme le réseau récurrent est alimenté avec les données d'une manière spéciale sous la forme d'un tableau 3D, malgré le fait qu'il y a un exemple, je ne peux toujours pas comprendre comment cela fonctionne

comment le code devrait ressembler dans la variable "X" si je n'ai pas 2 prédicteurs mais 100, voici un morceau de l'exemple :

#  create training numbers
X1 = sample(0:127, 7000, replace=TRUE)
X2 = sample(0:127, 7000, replace=TRUE)
#  create training response numbers
Y <- X1 + X2
#  convert to binary
X1 <- int2bin(X1)
X2 <- int2bin(X2)
Y <- int2bin(Y)
#  Create 3 d array: dim 1: samples; dim 2: time; dim 3: variables.
X <- array( c(X1,X2), dim=c(dim(X1),2) )
Raison: