Recherche dans les paquets matriciels - page 3

 
Alexey Volchanskiy:

Super, c'est mon premier jour d'apprentissage de R, répondez à mes questions s'il vous plaît, je veux comparer les possibilités de R et Matlab. Mais ne soyez pas hostile, soyez raisonnable et calme :).

  1. R est-il un langage avec des capacités de POO ?
  2. Puis-je créer dans R une dll 32 bits et 64 bits pour une utilisation directe depuis MQL4/5 ? Si oui, quelle taille de paquet dois-je installer pour utiliser une telle dll sur l'ordinateur d'un utilisateur ?
  3. Puis-je connecter des dlls communes pour un accès direct depuis R ?
  4. Existe-t-il un analogue de Simulink en R ?
  5. Pourquoi toutes les critiques insistent-elles sur le fait que R est un programme de statistiques ? Je suis intéressé par le DSP, est-ce que R a des paquets pour le traitement du signal numérique ?
  6. R dispose-t-il d'un format compact intégré pour le stockage des données, similaire aux fichiers .mat de Matlab ?

1. Oui. Comparer différents langages de programmation n'est pas une tâche facile, car utiliser certains outils et ne pas en utiliser d'autres est souvent une question de goût du programmeur.

Je ne suis pas un expert en R mais je vais mentionner ceci :

R n'a pas de concept de "scalaire". C'est un vecteur de longueur 1. C'est-à-dire que l'arithmétique est basée sur des opérations matricielles. Une ligne de code C= A+B peut appeler une opération matricielle

dans R, la notion d'"objet" est poussée jusqu'à sa conclusion logique : il peut s'agir d'un vecteur, d'une matrice, d'une matrice de programmes et en général de l'environnement dans lequel un programme utilisateur est exécuté.

En R, il est assez facile d'écrire des programmes qui chargent non seulement les processeurs et les cœurs de l'ordinateur d'exécution, mais aussi les ordinateurs voisins du réseau local.

...

2. Mes connaissances sont insuffisantes pour une réponse. Apparemment, tu ne peux pas. Cela provient des spécificités de la construction de R lui-même, qui est un interpréteur lorsqu'il est rencontré pour la première fois. Mais il s'agit d'une vision superficielle. Le fait que R soit une symbiose avec une interface bien documentée avec le C. La principale puissance de R réside dans les paquets (plus de 7000 mille, contenant environ 120 000 fonctions), et ces paquets sont généralement des références à des programmes en C ou Fortran. Le fait est que R utilise les bibliothèques C et Fortran pour toutes les opérations à forte intensité de calcul.

Une grande attention à R est accordée aux API, mais au-delà de mes qualifications

3. Oui

4. Je ne pense pas. Il existe un certain nombre d'outils (autres que ceux du commerce) pour créer des interfaces graphiques, mais ce n'est pas tout. Dans ce paragraphe, je veux mentionner des outils largement développés dans R, qui sont absents des langages de programmation habituels : il s'agit de méthodes de tests de modèles statistiques. Les outils permettant de traiter les résultats des tests statistiques sont très développés et avancés. En R, vous pouvez facilement répondre à la question suivante : "De combien la moyenne diffère-t-elle de l'espérance mathématique pour un échantillon de 100 observations ?"

5. Les statistiques, au sens large du terme, sont une fonctionnalité de R. N'oubliez pas les outils graphiques, qui sont fondamentaux pour travailler avec les statistiques. Pour avoir un aperçu des outils R ouverts sur le site, il existe des compilations thématiques de paquets.

6. On ne peut pas faire de comparaison. Mais il y a le "bytecode". Mais le point est différent. Un programme en R qui contient plusieurs milliers de lignes de code est exotique. Un programme R ordinaire est un appel de fonction de package.

 
Alexey Volchanskiy:
Je dois essayer de traduire certains de mes programmes de Matlab en R, pour comparer la vitesse. Si j'ai le temps de trouver une solution pendant le week-end, je le ferai et j'en rendrai compte. Matlab est assez lent, je fais beaucoup de choses en C# ou C++ et je les intègre dans une DLL pour plus de rapidité.

R lui-même est trois fois plus retardé. Il s'agit d'un interprète. Pas de problème de débogage du tout, au début j'ai commencé à utiliser le débogueur, puis j'ai découvert qu'il ne sert à rien.

En ce qui concerne la vitesse R, il y a plusieurs points à prendre en compte.

1. Vous pouvez le traduire en byte-code, mais c'est un cataplasme.

2. n'oublions pas que les paquets destinés à des opérations à forte intensité de calcul utilisent des bibliothèques, qui ont été choisies dans un souci de rapidité.

3. une bibliothèque est utilisée pour les opérations matricielles

4. Les opérateurs de boucle ne sont pas nécessaires pour les opérations matricielles

5. Chargement de tous les cœurs. Standard et très simple partout où l'algorithme le permet.

En général, la comparaison de programmes par simple réécriture d'une langue à l'autre fonctionne si votre connaissance des deux langues est la même.

 
Alexey Volchanskiy:
Je dois essayer de traduire certains de mes programmes en R dans Matlab, pour comparer la vitesse. Si j'arrive à trouver une solution d'ici le week-end, je le ferai et je ferai un rapport. Matlab est assez lent, je fais beaucoup de choses en C# ou C++ et je le branche en tant que DLL pour plus de rapidité.

Vous voyez, si vous devez compter quelque chose de non trivial, ce sera en utilisant un paquet. Si le paquet est rédigé en termes de "plus", il s'envolera. Sinon, il pourrait ramper.

Vérifié par l'expérience : si vous essayez de boucler à travers les éléments de data.frame (qui est un tableau qui peut contenir un mélange de types de données) et de calculer quelque chose sur eux, cela peut être extrêmement long. R est très lent pour effectuer des calculs sur de grands tableaux, à moins d'utiliser des paquets spéciaux.

Mais il y a toujours une bibliothèque, où le calcul dont j'ai besoin est déjà implémenté, et je peux appeler, par exemple, rollapply(x$V1, mean) et calculer des moyennes mobiles sur tous les éléments, au lieu de la fastidieuse conversion élément par élément du tableau.

 
СанСаныч Фоменко:


5. Chargez tous les cœurs. Standard et très simple partout où l'algorithme le permet.


SanSanych, pouvez-vous clarifier ceci ? Nous étions en train de sonder le parallélisme dans R et nous sommes arrivés à la conclusion claire qu'il charge un cœur (il semble que 25% de charge sur les 4 cœurs), sauf disposition contraire dans le paquet spécial.
 
СанСаныч Фоменко:

R lui-même est trois fois plus attardé...


Alors quelle est la portée de ce logiciel ? Analyser un assortiment efficace pour une boutique vendant des biens de consommation chinois ?
 
СанСаныч Фоменко:

... La principale puissance de R réside dans les paquets (plus de 7000 milliers, contenant environ 120 000 fonctions)...

Et combien de paquets et de fonctions sont nécessaires et suffisants pour obtenir un bénéfice stable ?

Quel sera le prochain logiciel que nous maîtriserons, si R ne peut pas le faire ?

 
Alexey Burnakov:
SanSanych, pouvez-vous clarifier ceci ? Nous avons ressenti le parallélisme dans R et sommes arrivés à la conclusion claire qu'il charge un cœur (il semble que 25% de charge sur les 4 cœurs), sauf indication contraire dans le paquet spécial.
Lecalcul parallèle est une chose très avancée et fait l'objet de nombreuses publications, par exemple attac.
Dossiers :
parallel.zip  387 kb
 
Dmitry Fedoseev:

Quelle est donc la portée de ce logiciel ? Analyser un assortiment efficace pour une boutique vendant des biens de consommation chinois ?

Veuillez lire mon message dans son intégralité.

A ajouter.

Lorsque j'ai écrit sur R lui-même, il ne faut pas oublier que le véritable code R ne consiste qu'en une petite partie du texte R lui-même.

L'exemple le plus simple.

Renvoi : A=B.

Si A et B sont des scalaires, il est probable que le code en MKL sera plus rapide.

Mais il n'y a pas de scalaires dans R : A et B sont au moins des vecteurs. Dans MCL, il s'agit de cycles, dans R, il est écrit sans aucun cycle et mis en œuvre dans le cadre d'un paquet, le calcul matriciel d'aujourd'hui, qui est au top de l'efficacité. Et si vous comparez R et MCL en termes de calculs matriciels, R est fondamentalement plus efficace.

C'est un principe général de R que d'utiliser des morceaux de code efficace sur étagère qui n'ont pas été écrits en R - généralement en C, si aucune bibliothèque spécialisée sur étagère n'était disponible.

Conclusion : R est efficace du point de vue du calcul grâce à l'utilisation de sous-routines internes et du calcul parallèle.

 
Event:

Et combien de paquets et de fonctions sont nécessaires et suffisants pour réaliser un bénéfice stable ?

Quel logiciel maîtriserons-nous ensuite, si R ne suffit pas ?

Pour les besoins d'un trader individuel, nous disposons d'un logiciel redondant.

Aujourd'hui, R est le logiciel le plus utilisé dans le domaine des statistiques au sens large. Par exemple, les méthodes d'apprentissage automatique, traditionnellement attribuées à l'intelligence artificielle, sont largement représentées dans R.

Il y a une autre nuance.

La dernière nouveauté dans le domaine se présente sous la forme du paquet R. Et voici pourquoi. Aujourd'hui, les publications scientifiques dans le domaine des statistiques, outre les formules, contiennent généralement du code en R, un signe de bon ton, en quelque sorte. Et du code R dans un article à un paquet à part entière dans R, il n'y a qu'un pas.

De plus, tout ce qui est lié à R est un lieu de rencontre dans le monde entier. Le fait de placer un paquet dans les dépôts de R fait de son auteur une célébrité mondiale. R est un système gratuit, à code source ouvert, sans aucune restriction d'utilisation. C'est précisément cette propriété de R qui lui permet de ravir le leadership mondial aux précédents leaders payants - SAS, SPSS, ainsi qu'au langage déroutant de Python.

Ce n'est pas pour rien qu'il y a environ un an, Microsoft s'est lancé dans R en acquérant une variante payante de R - revolution analytics - et qu'il en fait maintenant une promotion active.

 
СанСаныч Фоменко:
Le calcul parallèle est une chose très avancée, qui a fait l'objet de nombreuses publications, par exemple attac.
Grand merci.