Discussion de l'article "Les forêts aléatoires prédisent les tendances" - page 12

 

Destinataire : CyberCortex

Désolé SanSanych d'être impliqué.

Je ne pouvais pas passer à côté d'une telle hauteur de vue et d'un tel manque de professionnalisme.

Examinons une à une les déclarations de l'auteur dans sa description du programme d'application

Citation : "Avantages de CyberCortex par rapport aux produits analogues existants :

  • L'algorithme utilisé. Pour de nombreux traders, les technologies du domaine de l'intelligence artificielle commencent et se terminent par le sujet rebattu des réseaux neuronaux classiques. Mais l'algorithme de bousting implémenté dans CyberCortex est un outil moderne et puissant( ?) d'un ordre de grandeur supérieur, car : "

Objection :

  1. D'où vient cette opinion dédaigneuse et grandiose de nombreux traders ? Généralement, ce domaine est appelé Machine Learning, l'Intelligence Artificielle est quelque peu différente. Je suis certain que de nombreux traders connaissent de nombreux types de réseaux neuronaux dont vous n'avez même pas entendu parler (réseaux profonds, réseaux convolutifs et autres réseaux modernes). Le sujet des réseaux neuronaux est épuisé pour ceux qui se sont limités à l'étude des MLP . Je m'empresse de vous décevoir, le sujet des réseaux de neurones a maintenant reçu un second souffle après le développement des méthodes d'apprentissage profond et pour ceux qui savent et peuvent le faire, c'est loin d'être un sujet clos. En outre, nous connaissons de nombreux autres algorithmes de classification qui sont mis en œuvre dans de nombreux paquets du langage R.

  2. L'algorithme du bousting sous diverses modifications est connu depuis assez longtemps (1996) et n'est en rien plus puissant que l'algorithme des réseaux de neurones. D'ailleurs, vous devriez nous dire quel algorithme votre programme utilise. Un coup d'œil rapide sur les paquets R -

  • "ADA"- adaptive stochastic bousting. un de mes favoris, trois modifications de l'algorithme original sont implémentées : Gentle-, Logit-, et Real AdaBoost

    .

  • "adabag" - le paquet utilise les algorithmes multiclasses Adaboost.M1 (Freund et Schapire), AdaBoost-SAMME (Zhu et al., 2009) , et l'algorithme Bagging de Breiman ;

  • "boost" - contient un ensemble de méthodes de boosting telles que 'BagBoost', 'LogitBoost', 'AdaBoost' et 'L2Boost' complétées par une présélection des caractéristiques (prédicteurs) à l'aide de la statistique du test de Wilcoxon ;

  • pga" - contient un ensemble d'algorithmes combinant AdaBoost et Random Forest avec un algorithme évolutionnaire.

    Si vous disposez d'un algorithme original inconnu dans le monde entier, veuillez décrire au moins en termes générauxla différence par rapport aux algorithmes existants et les avantages qu'ils présentent .

Comme vous pouvez le constater, le choix est assez large.

Pour ceux qui ne sont pas dans le sujet. "Busting" (amplification) - méthode de rééchantillonnage proposée à l'origine pourrésoudre des problèmes dans des domaines scientifiques où, initialement, le nombre d'exemples (résultats d'expériences) à utiliser dans les calculs statistiques était faible, et où il est impossible ou très coûteux d'en extraire de nouveaux. L'essence de la méthode consiste à extraire de l'ensembleinitial depetite taille un échantillon de taille plus réduite formé de manière aléatoire.Cetteprocédure est répétéede nombreuses fois, ce qui permet d'obtenir un échantillon total suffisamment grand, qui est ensuite utilisé dans les calculs statistiques.

Tout d'abord, le marché du Forex n'est pas un cas de Le marché du Forex n'est pas un cas de "déficit de données". Au contraire, il s'agit d'un cas d'"abondance de données".

Deuxièmement. Une longueexpérience de larecherche et de l'application de bousting et de la validation croisée dans la pratique et dans les universités a montré qu'il n'est pas souhaitable d'utiliser ces méthodes dans le processus de formation, c'est-à-dire lors de la sélection d'un modèle parerreurinterne. En revanche, elles sont très utiles au stade de l'évaluation du modèle formé, c'est-à-dire pour obtenir l'erreur externe. Par conséquent, dans notre cas d '"abondance de données", la division en formation/validation/test pendant la formation est idéale. Il existe de nombreuses autres subtilités à prendre en compte dans le processus de sélection des données et de pré-entraînement et dont dépend dans une large mesurele résultat de la modélisation , mais il s'agit là d'un autre grand sujet.

D'après mon expérience de longues expériences avec ADA , je peux dire que les résultats sont parfois excellents, parfois dégoûtants = très instables.


Citation : "L'algorithme ne nécessite pas de réduire la dimensionnalité des données d'entrée et de trouver quelles caractéristiques sont informatives et lesquelles ne le sont pas. Au contraire, plus il y a de données d'entrée disponibles, plus la probabilité d'une classification correcte est élevée. Les caractéristiques non informatives sont automatiquement éliminées."

Question : comment les caractéristiques non informativessont-elles éliminéescomme par magie ? La détermination(évaluation) de l'importance des prédicteurs est incluse dans chaque algorithme d'arbre de décision, mais il existe un grand nombre de critères utilisés pour déterminer l'importance et tous ne donnent pas des résultats sans ambiguïté. Comment résoudre ce problème dans le programme?

Citation : "L'algorithme ne nécessite aucune normalisation préliminaire des données ni aucune manipulation préliminaire. Toutes les données sont automatiquement ramenées à une variance unitaire et à une espérance mathématique nulle."

Le seul algorithme qui ne nécessite vraiment aucun traitement préalable estRandomForest. Tous les autres nécessitent divers traitements préalables. Vous voulez manifestement dire que votre programme effectue le processus de standardisation (x moins la moyenne divisée par l'écart-type) pour l'utilisateur ? Je ne suis pas sûr que ce soit une bonne solution, car il existe au moins une douzaine de méthodes deprétraitement différenteset vous devez déterminer laquelle est la meilleure dans chaque cas individuel.

Citation : " L'algorithme, contrairement aux réseaux neuronaux, ne nécessite pas de réglage des paramètres d'apprentissage afin d'obtenir un résultat de classification optimal."

C'est faux. Tout algorithme de bousillageconnu comporte au moins deux paramètres qui doivent être réglés pour obtenir le meilleur résultat.

Citation :"L'algorithme est virtuellement immunisé contre la tendance au surentraînement."

Faux. Tout algorithme d'apprentissage automatique est susceptible d'être affecté par cette maladie, le sur-apprentissage. La régularisation permet de réduire le risque d'obtenir un modèle surentraîné. De nos jours, plusieurs méthodes de régularisation sont connues et utilisées avec succès, y compris dans les algorithmes de bousting.

Citation :"L'algorithme permet de classer les données dans un nombre quelconque de classes".

Il ne s'agit pas d'une réalisation de cet algorithme. Aujourd'hui, presque tous les algorithmes d'apprentissage automatique le font.

Citation :"La particularité de l'algorithme mis en œuvre est que s'il y a des modèles dans les données - ils seront trouvés. Au contraire, s'il n'y a pas de modèle dans les données, les prédictions du programme ne seront pas meilleures qu'un simple jeu de pile ou face, ce qui est logique"

Je vais peut-être vous surprendre, mais tous les algorithmes ont cette caractéristique.

Conclusion : l'algorithme incompréhensible que vous proposez pour de l'argent peut être mis en œuvre de manière transparente, simple et sous diverses variantes dans le langage R et notez qu'il est absolument gratuit, c'est-à-dire sans frais. Ce programme aura une longueur de 10 à 15 lignes. C'est le premier. Le deuxième avantage indéniable du langage R est qu'il est développé et soutenu par la communauté scientifique mondiale (pratiquement toutes les universités du monde) et maintenant par les géants de l'industrie du logiciel. Microsoft a lancé un service en nuage "Azure" avec Microsoft Azure Machine Learning Studio" qui vous permet dans le nuage de produire toutes les étapes de création, d'entraînement et d'évaluation du modèle et par la suite d'obtenir des prédictions en envoyant des données au service pour votre modèle. Le service est entièrement basé sur le langage R et dispose d'une interface graphique qui vous permet de réduire le processus à "dessiner" une image (je simplifie bien sûr). Si le langage était auparavant un standard de facto dans les cercles de recherche, il l'est maintenant pratiquement devenu dans le domaine appliqué et industriel.

Une dernière chose. Je ne suis pas opposé au fait que vous monétisez votre travail incorporé dans le programme. C'est très bien. Je suis contre le fait que vous attribuiez des qualités inexistantes ou exagérées au produit à des fins publicitaires. Ce n'est pas professionnel.

Soyez prudent. Comme le dit le classique.

Bonne chance


 
vlad1949:


Bonjour !

"Généralement, ce domaine s'appelle l'apprentissage automatique, l'intelligence artificielle est un peu différente." - L'apprentissage automatique est une sous-section de l'intelligence artificielle. Mais je suis sûr que vous l'avez juste oublié. Cela arrive...

J'ai entendu parler de nouveaux types de réseaux neuronaux :) Et, si vous avez remarqué, la description de mon programme parle de" réseaux neuronauxclassiques ", pas de tous les réseaux. Par classique, j'entends MLP, ses dérivés, le réseau Hopfield, le réseau probabiliste et d'autres.

"D'où vient cette opinion grandiose et dédaigneuse de nombreux traders? - Cette opinion méga hyper-importante vient du fait que la grande majorité des traders qui tentent d'utiliser des technologies d'intelligence artificielle faibles utilisent des réseaux neuronaux classiques .

"D'ailleurs, il serait nécessaire de préciser sur quel algorithme spécifique votre programme fonctionne." - L'adaptation des arbres de décision à un seul niveau (stumps). C'est écrit là. Comme je l'ai mis en œuvre moi-même à partir de zéro, sans voir de modèle devant moi, et qu'il n'y avait pas de description normale sur l'internet, j'ai appliqué certaines de mes heuristiques en le développant.

"Pour ceux qui ne sont pas au courant. "Le boosting est une méthode de rééchantillonnage proposée par..." - Je ne sais pas d'où vous avez copié cette définition, mais je pense qu'il ne s'agit pas de boosting, mais de bootstrap :) Le boosting consiste à booster des classificateurs simples. Dans le bootstrap, on n'obtient pas un grand échantillon N à partir d'un petit échantillon m. Dans le bousting, pour chaque classificateur simple suivant, les exemples mal classés par le précédent sont échantillonnés de manière préférentielle. Le nombre d'exemples est toujours égal au nombre d'exemples d'origine. Après cela, il est particulièrement drôle de lire votre sérieux :"Pour ceux qui ne sont pas dans le coup". xD

"Tout d'abord, il faut savoir que le marché des changes n'est pas un cas de figure. Le marché des changes n'est pas un cas de "pénurie de données". Au contraire, c'est un cas d'abondance de données." - Cela dépend de quel point de vue on se place. Si vous parlez des cours du forex et d'un tas d'indicateurs "pseudo-mathématiques" qui sentent le vieux temps et de leurs divers dérivés, alors oui, il n'y a pas de pénurie. Mais comme vous êtes parti dans une autre direction, confondant accidentellement bousting et bootstrap, votre maxime restera lettre morte, car je n'ai aucune idée du type de réponse que vous attendez.

"Une longueexpérience de larecherche et de l'application de bousting et de la validation croisée dans la pratique et dans les universités a montré..." - vraiment ? C'est ennuyeux...

"D'après mon expérience de longues expériences avec l'ADA , je peux dire que les résultats sont parfois excellents, parfois dégoûtants = très instables. " " - Votre expérience n'est pas un axiome pour nous, peut-être que vous avez mélangé quelques boutons ici ou quelque chose comme la confusion juste au-dessus. Je n'en sais rien.

"Comment résoudre ce problème dans le logiciel? - Tout classificateur simple se concentre sur la caractéristique qui produit le moins d'erreur de classification. Si la caractéristique n'est pas informative, l'erreur est élevée. C'est là toute la magie de la chose. Remettons en question cette logique avec d'autres absurdités scientifiques sur la façon dont les universités..... Non, sérieusement, écrivez quelque chose.

"Je ne suis pas sûr que ce soit une bonne solution" - ne pensez-vous pas que vous êtes un peu trop catégorique ? Il me semble que le développeur du logiciel est un peu plus perspicace quant à ce qu'il faut ajouter pour qu'il fonctionne comme prévu.

"C'est faux. Tout algorithme de bousillageconnu comporte au moins deux paramètres qu'il faut régler pour obtenir un meilleur résultat." - Quels sont les paramètres qui doivent être ajustés dans R ? Je prends des notes...

"Citation :"L'algorithme est virtuellement immunisé contre la tendance au surentraînement. "Faux énoncé....""- J'aime beaucoup vos affirmations :). Tout d'abord, il est écrit "pratiquement". En russe, cela signifie "presque". Mais s'il existe un modèle stable dans les données, par exemple, comme dans l'expérience de reconnaissance des plaques d'immatriculation des voitures, alors oui, l'algorithme n'est pas réentraîné. Sur l'échantillon d'entraînement, l'erreur est nulle et sur l'échantillon de test, l'erreur reste constante, de l'ordre de 1 %. Les questions ?

"Il ne s'agit pas d'une prouesse de cet algorithme. Aujourd'hui, presque tous les algorithmes d'apprentissage automatique agissent de la sorte. - Vous pouvez me dire que c'est un inconvénient. C'est un avantage par rapport à un classificateur binaire. Ou bien vous ne le pensez pas ?

"Je vais peut-être vous surprendre, mais tous les algorithmes ont cette caractéristique." - Lisez attentivement: "s'il y a des modèles dans les données, ils seront trouvés." C'est moi qui souligne. Le principal problème des algorithmes d'apprentissage automatique est de savoir combien de modèles seront trouvés. Mon programme s'en accommode. Selon votre logique, il s'avère qu'en ayant un MLP, les gens ne devraient pas développer d'autres algorithmes, parce qu'un perseptron multicouche est un algorithme d'apprentissage automatique, et vous dites que"tous les algorithmes ont cette caractéristique".

"Un algorithme obscur que vous proposez pour de l'argent" - Je ne propose pas un algorithme, mais un programme. Je n'ai rien contre le langage R. Mais vous voyez où je veux en venir : tout le monde ne peut pas et ne veut pas comprendre la logique et la syntaxe du langage de programmation, comprendre les paramètres des algorithmes, convertir certains fichiers et se connecter au terminal à l'aide de diverses béquilles pour utiliser le résultat des calculs. Si quelqu'un est capable de faire tout cela, je le félicite. Certaines personnes ont juste besoin que cela fonctionne "out of the box". On pourrait croire que je vous cours après et que je vous force à acheter notre logiciel. Utilisez R, je vous assure que cela ne m'énervera pas.

"Je ne vois pas d'inconvénient à ce que vous monnayiez votre dur labeur sous forme de logiciel." - Je suis désolé, j'ai oublié de vous demander votre avis sur ce point. Mais tant que vous n'y voyez pas d'inconvénient, je n'y vois pas d'inconvénient.

"Je m'oppose à ce que vous attribuiez des qualités inexistantes ou exagérées à un produit à des fins publicitaires." - et je m'oppose à ce que vous écriviez sur quelque chose que vous ne connaissez pas.

Je vous remercie. J'ai terminé. Comme le dit le classique.

P.S. : Je réponds simplement à l'agression. Sans vouloir vous offenser. Paix.

P.P.S. : Et oui, vous n'auriez pas dû commencer à discuter avec moi :))

 
Chaque valeur de zigzag est basée sur le prix futur de la monnaie, les résultats sont donc trop optimistes, je pense.
 

Я не понимаю содержание Скрежет обучение режим ? В частности, о том, как использовать платформу использовать платформу MT4 MQL предварительной подгото вки ?

 
Pouvez-vous donner un exemple d'utilisation d'un modèle entraîné dans MQL4 ? Merci d'avance !
 
Après quelques petites aventures, j'ai réussi à faire fonctionner la dernière version de Rattle 4.1.0 sur MacOS Sierra, mais le point de menu R Dataset ne permet pas de choisir un fichier, il reste grisé. Au lieu de cela, RData File pouvait choisir "TC.RData" comme Filename, et ensuite "TC" comme Data Name, et avec un Execute j'étais prêt à partir.
 
Je ne comprends même pas ce qui se passe.
 

Les gars, bonjour ! Votre énergie, dans la bonne direction !

Félicitations, vous avez une erreur stratégique !

Je cite la première ligne de votre article : "Initialement, l'objectif de la construction d'un système de trading est de prédire le comportement d'un instrument de marché, par exemple, une paire de devises".

Je n'ai même pas lu l'article plus avant. Il vaut mieux étudier TOUTES les méthodes de prévision !

Je vais vous révéler un secret : l'objectif de la construction d'un système de trading est de "créer un modèle de (votre) comportement".

L'important n'est pas ce que le marché (le leader) va faire, mais ce que vous allez faire : ET, OU, PAS.

Par exemple : ET - suivre le leader (répéter les actions du leader).

 

J'ai essayé d'installer rattle sur linux (Kubuntu), cela n'a pas fonctionné, il y a beaucoup de dépendances pour la compilation du code.

En analysant les erreurs d'installation, j'ai obtenu la liste suivante de paquets qui doivent être installés dans le système d'exploitation lui-même avant d'installer rattle dans R :

console -
$ sudo apt-get install libxml2-dev unixodbc-dev libssl-dev libgtk2.0-dev

Vous pouvez ensuite lancer l'installation dans R lui-même -
> install.packages("rattle", dependencies=TRUE)

Et s'il vous manque encore quelques fichiers *.h pour installer rattle, vous pouvez trouver le paquetage requis comme suit
$ sudo apt-get install apt-file
$ apt-file update
$ apt-file search /someheaderfile.h

Peut-être que cela aidera quelqu'un d'autre :)

 

Après la mise à jour du système d'exploitation, rattle a cessé de fonctionner, l'appel à rattle() donne une erreur
Error in method(obj, ...) : Invalid root element : 'requires' (erreur dans la méthode(obj, ...) : élément racine non valide)

La première solution qui a presque aidé a été d'exécuter rattle avec un paramètre supplémentaire
rattle(useGtkBuilder = TRUE)
la fenêtre du programme s'est ouverte, mais les boutons n'ont pas fonctionné, la méthode n'a pas aidé jusqu'au bout.

Il s'est avéré que la version de rattle installée à partir de cran est obsolète, vous devez réinstaller rattle en spécifiant le dépôt des développeurs pour obtenir une nouvelle version.
install.packages("rattle", repos="https://rattle.togaware.com", type="source")
Et après cela, tout a fonctionné correctement.