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

 

Quelqu'un peut-il m'expliquer dans un langage simple mais précis quels sont les principes utilisés par RF pour construire l'échelle d'importance des prédicteurs ?

J'ai un ensemble avec deux classes dans la classe cible, le nombre d'observations dans une classe est des centaines de fois plus élevé que dans la seconde, je me souviens de quelque part que l'un des critères d'importance des prédicteurs dans la RF est la fréquence d'occurrence d'une certaine observation.

Je veux donc savoir si RF supprime cette classe qui a peu d'observations lors du calcul de l'importance des prédicteurs.

 
article intéressant, ou plutôt pas d'article, mais des images intéressantes sur le "pca" non linéaire) https://imdevsoftware.wordpress.com/tag/non-linear-pca/
Discriminating Between Iris Species
Discriminating Between Iris Species
  • imdevsoftware.wordpress.com
The Iris data set is a famous for its use to compare unsupervised classifiers. The goal is to use information about flower characteristics to accurately classify the 3 species of Iris. We can look at scatter plots of the 4 variables in the data set and see that no single variable nor bivariate combination can achieve this. One approach to...
 
mytarmailS:

Je suppose que vous êtes dans le forex, il n'y a pas de courtiers dans le forex et ils ne font pas de commerce, ce sont des entreprises basées sur les papiers des bookmakers.

p.s. Que pensez-vous de ma suggestion pour la sélection des traits ?

Eh bien oui, un centre de négociation et non un courtier. Mais personne n'a annulé leur entrée sur le marché interbancaire de toute façon.

Votre choix semble logique. Mais j'ai décidé de ne pas sélectionner les indicateurs en fonction de mes concepts car cela n'a jamais amélioré le modèle. Je préfère laisser l'algorithme sélectionner de nombreux indicateurs et le laisser décider de ce qui est bon et de ce qui ne l'est pas. Parfois, les moyennes mobiles se retrouvent également dans l'ensemble final de prédicteurs, je pense qu'elles peuvent fournir certaines informations non pas seules mais en combinaison avec d'autres indicateurs. Mais mes résultats ne sont pas encore stables, je ne peux pas encore garantir leur utilité.
De plus, je n'essaierais pas de prédire exactement le renversement, dans les données d'entraînement, la classe "business as usual" aura des dizaines de fois plus de cas que "renversement" et on dit que le ratio des classes pour l'entraînement est mieux d'avoir 50/50.

 
SanSanych Fomenko:

J'ai un algorithme qui détermine le pouvoir prédictif d'un prédicteur pour une variable cible particulière. En bref, il s'agit d'oscillateurs et d'incréments différents. Si un prédicteur particulier a un pouvoir prédictif pour une variable cible particulière, il ne s'ensuit pas qu'il aura un pouvoir prédictif pour une autre variable cible. De plus, un prédicteur peut avoir une capacité prédictive dans une fenêtre et pas dans une autre.

L'algorithme fonctionne bien. Les prédicteurs qu'il sélectionne ne conduisent pas à un surajustement des modèles.

PS

Selon mon algorithme, les slips de tout type n'ont aucune capacité de prédiction, aussi ridicule que cela puisse paraître.

Tous les modèles, quel que soit le jeu de données, sont réentraînés.

Un autre problème est que la probabilité de surentraînement avec le bon choix, la transformation des prédicteurs est fortement réduite.

La probabilité de surentraînement dépend également du jeu de données et du type de modèle.

Il n'y a pas besoin d'illusions.

Jetez un coup d'œil au paquet pbo, il est intéressant de voir comment ce problème est traité.

Bonne chance

 
Vladimir Perervenko:

Tous les modèles, quel que soit le jeu de données, peuvent être réentraînés.

Un autre problème est que la probabilité de sur-apprentissage avec le bon choix, la transformation des prédicteurs est considérablement réduite.

La probabilité de surentraînement dépend également du jeu de données et du type de modèle.

Pas besoin d'illusions.

Jetez un œil au paquet pbo, il semble intéressant.

Bonne chance

Regardé. Les hypothèses sous-jacentes ne sont pas du tout claires. En particulier "une augmentation du nombre d'observations conduit à un surentraînement" ???

J'utilise un critère parfaitement clair et, surtout, valable en pratique.

J'en ai dit l'essentiel à maintes reprises. Je vais le répéter.

J'utilise le critère suivant de surentraînement (overfitting) : si l'erreur pendant l'entraînement n' est PAS égale à l'erreur sur d'autres données en dehors de l'échantillon d'entraînement, c'est-à-dire sur d'autres intervalles de temps, alors le modèle est surentraîné. En d'autres termes, le modèle a capté certaines spécificités pendant la formation qu'il n'a pas rencontrées dans les intervalles de temps suivants.

Comment cela est mis en œuvre dans la pratique.

On prend un quotient, par exemple 10 000 bars.

Nous le divisons mécaniquement par le numéro de la barre sans aucune extravagance, ce qui est très important pour moi car dans la pratique, ce sera comme ceci et non comme cela.

Je prends donc les premières barres du numéro 1 à 7000. Ces barres sont utilisées pour les tests d'apprentissage et la validation. Pour les diviser en trois ensembles, j'utilise, par exemple, l'échantillon ou ce qui est intégré au modèle lui-même.

J'obtiens trois chiffres du modèle. Si le modèle n'est pas ré-entraîné, ces chiffres sont approximativement égaux.

Ensuite, la chose la plus importante.

Je prends un fichier avec des barres de 7001 à 10 000. Et j'utilise le modèle formé sur les barres précédentes. Je reçois une erreur. Si l'erreur est légèrement différente des trois précédentes, alors le modèle n' est PAS réentraîné. Je considère généralement que si l'écart est de 15-20%, alors il n'y a pas de recyclage. Si l'un des chiffres diffère de plus de 50 % d'un autre, le modèle est réentraîné.

Donc, avec ma méthodologie, je sélectionne un sous-ensemble de prédicteurs à partir d'un ensemble de prédicteurs. S'il est trouvé, ce qui n'est pas obligatoire, alors les modèles tels que randomforest, SVM, ada et leurs variantes ne sont PAS réentraînés ! Je ne connais pas les autres modèles - je ne les utilise pas.

Ce n'est pas une illusion. C'est un fait.

 
mytarmailS:

Quelqu'un peut-il m'expliquer dans un langage simple mais précis quels sont les principes utilisés par RF pour construire l'échelle d'importance des prédicteurs ?

J'ai un ensemble avec deux classes dans la classe cible, le nombre d'observations dans une classe est des centaines de fois plus élevé que dans la seconde, je me souviens de quelque part que l'un des critères d'importance des prédicteurs dans la RF est la fréquence d'occurrence d'une certaine observation.

Je veux donc savoir si RF supprime cette classe qui a peu d'observations lors du calcul de l'importance des prédicteurs.

Vous avez des classes sauvagement déséquilibrées et ce n'est pas bon. Il existe des algorithmes pour équilibrer les classes, mais dans votre cas, cela n'a pas fonctionné pour moi. J'ai essayé d'indiquer le renversement de ZZ non pas par un numéro de barre, mais par plusieurs, avant et après le renversement. Cela a réduit le déséquilibre, mais n'a pas résolu le problème.

Je n'ai pas trouvé de modèles qui soient garantis pour fonctionner sur des classes NON équilibrées.

 
SanSanych Fomenko:

Vous avez des classes sauvagement déséquilibrées, et ce n'est pas bon. Il existe des algorithmes pour équilibrer les classes, mais dans votre cas, cela n'a pas fonctionné. J'ai essayé de marquer le retournement de ZZ non pas avec un seul numéro de barre, mais avec plusieurs, avant et après le retournement. Cela a réduit le déséquilibre, mais n'a pas résolu le problème.

Je n'ai pas trouvé de modèles qui soient garantis pour fonctionner sur des classes NON équilibrées.

Je suis intéressé par la question de la sélection des caractéristiques
 
mytarmailS:
Je suis intéressé par la question sur la sélection des caractéristiques

J'ai répondu à tout ce que je pensais nécessaire.

Si vous avez un ensemble d'attributs avec une variable cible, envoyez-le moi, je le sélectionnerai, puis je construirai des modèles sur les attributs sélectionnés et je verrai le résultat.

 
Quelqu'un a-t-il essayé d'utiliser une ACP non linéaire, dont j'ai laissé le lien ci-dessus, mais j'ai du mal à reconnaître les nouvelles données avec elle, elle donne une erreur
 
mytarmailS:
Personne, par hasard, n'a essayé d'appliquer l'analyse pca non linéaire ? dont le lien est indiqué ci-dessus, je n'ai pas réussi à reconnaître de nouvelles données avec elle, elle donne une erreur.

Je ne pense pas que cet ensemble soit suffisant pour construire un modèle capable de prédire la variable cible. Tout ce que j'ai trouvé dans l'aide est de construire un modèle PCA basé sur des prédicteurs, la variable cible n'est pas du tout là.

#установка  пакета, нужно выполнить один раз и перезапустить R
source("https://bioconductor.org/biocLite.R")
biocLite("pcaMethods")        

#создание  pca объекта
library(pcaMethods)
browseVignettes("pcaMethods") #хелп  файлы
data(metaboliteDataComplete)
mdC <- prep(metaboliteDataComplete, scale="none", center=TRUE)
resNipals <- pca(md, method="nipals", center=FALSE, nPcs=5)

Cela créera un objet resNipals (Nonlinear Estimation by Iterative Partial Least Squares) avec 5 composants principaux pour analyser le tableau metaboliteDataComplete. Au lieu de metaboliteDataComplete, vous pouvez substituer votre propre tableau avec des prédicteurs. Il est important de ne pas alimenter la variable cible ici, elle sera utilisée plus tard.

Mais cela ne sera suffisant que pour analyser les relations entre les variables en examinant différents graphiques. Afin de créer un modèle prédictif, on construit ensuite un modèle de régression linéaire qui utilise les principales composantes PC1,PC2,PC3,PC4,PC5 comme variables d'entrée (x1,x2,x3,...). Et la variable cible Y est déjà introduite dans le modèle linéaire comme résultat souhaité. Le problème est que resNipals est un objet de la classe "pcaRes" du paquet pcaMethods. Je n'ai pas trouvé comment faire tout cela dans l'aide.

S'il s'agissait d'un modèle PCA du paquet caret, cela se passerait comme suit :

#http://www.win-vector.com/blog/2016/05/pcr_part2_yaware/ (раздел Is this the same as caret::preProcess?)
newVars <- colnames(resNipals)
resNipals$y <- dTrain$y   #"y" в данном случае это название колонки с целевой переменной, dTrain - исходная таблица с данными
modelB <- lm(paste('y',paste(newVars,collapse=' + '),sep=' ~ '),data=resNipals)
print(summary(modelB)$r.squared)
#дальше нужно использовать функцию predict(modelB, newdata = <таблица с валидационной выборкой>) для прогноза на новых данных

Mais cela ne fonctionne pas avec resNipals, en théorie le paquet pcaMethods devrait avoir quelques fonctions propres pour travailler avec cet objet, mais je n'ai rien trouvé.