L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 532

 
anonyme:

et transposer si nécessaire en fonction de la dimension de la matrice

Utilisez simplement les deux fonctions kohonen::classvec2classmat, kohonen::classmat2classvec. Vous pouvez simplement copier ces fonctions sur vous-même et les utiliser selon vos besoins.

> classvec2classmat
function (yvec) 
{
    if (!is.factor(yvec)) 
        yvec <- factor(yvec)
    nclasses <- nlevels(yvec)
    outmat <- matrix(0, length(yvec), nclasses)
    dimnames(outmat) <- list(NULL, levels(yvec))
    for (i in 1:nclasses) outmat[which(as.integer(yvec) == i), 
        i] <- 1
    outmat
}
> classmat2classvec
function (ymat, threshold = 0) 
{
    class.names <- dimnames(ymat)[[2]]
    if (is.null(class.names)) 
        class.names <- 1:ncol(ymat)
    classes <- apply(ymat, 1, function(x) which(x == max(x))[1])
    classes[apply(ymat, 1, max) < threshold] <- NA
    factor(class.names[classes], levels = class.names)
}

Bonne chance

 
elibrarius:

Un autre problème avec R.

Sur un ordinateur, tout va bien, mais sur l'autre, il y a des exigences accrues en matière d'exactitude du code.

Par exemple

darch.unitFunction = linearUnit - provoque un crash de Rterm.exe

changé en

darch.unitFunction ="linearUnit" (unité linéaire)

ce point a commencé à passer avant la prochaine erreur.

Il a également fallu remplacer library(darch) par require(darch).

Maintenant, c'est l'apprentissage lui-même qui est une déception.

R_NN <- darch(
darch = NULL,
x = MatrixLearnX ,
y = MatrixLearnY ,
paramsList = params
)

J'ai essayé plusieurs variantes, Rterm.exe se plante toujours.

Est-ce que R a une sorte de contrôle du niveau d'erreur ? Peut-être que sur le deuxième PC, je me suis retrouvé avec un niveau d'erreur à résoudre en m'arrêtant à chaque avertissement ?

Sur les deux ordinateurs, j'ai installé R avec les paramètres par défaut, j'ai installé tous les paquets.
Comment puis-je le réparer ?

Prenez un instantané de la session sur l'un et l'autre PC et comparez-les. Par exemple

> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils    
[5] datasets  methods   base     

other attached packages:
[1] kohonen_3.0.4        RevoUtils_10.0.6    
[3] RevoUtilsMath_10.0.1

loaded via a namespace (and not attached):
[1] MASS_7.3-47    compiler_3.4.2
[3] tools_3.4.2    Rcpp_0.12.13  

bonne chance

 
Vladimir Perervenko:

Prenez un instantané de la session sur l'un et l'autre ordinateur et comparez-les. Par exemple

bonne chance

Pas par cette méthode, mais j'y suis arrivé - plutôt par essais et erreurs.
Merci.

 

Au fait, j'ai déjà vu l'expression "coder en dur" un réseau.
Apparemment, il s'agit d'obtenir une fonction avec des poids et des décalages et de calculer des sorties.

Par exemple, comment obtenir les poids de darch pour la première couche : print(NN@layers[[1]]$weights)

Existe-t-il un script prêt à l'emploi pour créer une telle fonction codée en dur ?

 

Réalisation d'une fonctionnalité de base pour le trading de crypto-monnaies via R. Crypto échange est bittrex, une fois passé tous les contrôles là-bas, donc maintenant je pouvais vérifier le code en action à la fois.
Dans le code, vous devez modifier les valeurs API_KEY et API_SECRET en fonction de ce que l'échange vous donnera personnellement dans les paramètres du profil.

Moins de cet échangeur - leur api n'a pas de fonction pour obtenir des valeurs ohlc, les ticks doivent être collectés eux-mêmes et par eux pour construire des barres ohlc (ou les télécharger depuis une ressource externe). Et pour accéder à l'api et troller à travers elle (et à travers R) il faut passer la vérification d'identité, et activer 2fa.

Vous devriez probablement trouver un échange qui donne des ohlc via api, et ne nécessite pas de vérification d'identité pour échanger, tous les échanges fonctionnent avec api en général est similaire, ce script peut être facilement refait pour un autre.

 
Maxim Dmitrievsky:

Mais oui, 90 % du travail consiste en l'exploration de données et 10 % en la sélection de modèles.

+100 !
 
Yuriy Asaulenko:

Vous devrez donc bientôt disposer d'une ferme minière pour mettre en place des stratégies minières.


Eh bien, maintenant la situation est la suivante : le bot que j'ai fait avant est très cool optiquement sur une petite distance, sur le côté avant il fonctionne 50/50, c'est-à-dire que si le marché n'a pas changé, il est +, s'il a changé, il est -. Il peut être modifié, plus de neurones de Reshetov peuvent être insérés, ou il y a une version basée sur la logique floue, elle est encore plus abrupte, mais elle augmente les poids optimisables ... donc, en gros, si je l'entraîne dans le nuage pendant une journée et que je paie environ ... je ne sais pas ... 100 livres pour cela, il devrait probablement durer longtemps et apporter un bon profit, mais je ne suis pas mentalement prêt pour des entraînements aussi longs. La deuxième variante est un système auto-optimisant, il n'est pas encore prêt, il peut se recycler sans optimiseur. Je préfère cette variante, mais ce n'est pas encore clair :)

 
Maxim Dmitrievsky:

Eh bien, maintenant la situation est la suivante : le bot que j'ai fait avant est très cool optimum sur une petite distance, sur le marché à terme il fonctionne 50/50, c'est-à-dire que si le marché n'a pas changé il monte, s'il a changé il descend. Il peut être modifié, plus de neurones de Reshetov peuvent être intégrés, ou il y a une version basée sur la logique floue, elle est encore plus abrupte, mais elle augmente les poids optimisables ... donc en gros, si je l'entraîne dans le nuage pendant une journée et que je paie environ ... je ne sais pas ... 100 livres pour cela, il devrait probablement durer longtemps et apporter un bon profit, mais je ne suis pas mentalement prêt pour des entraînements aussi longs. La deuxième option est un système auto-optimisant, ce n'est pas encore prêt, il se recyclera sans l'optimiseur ... Je préfère cette variante, mais ce n'est pas encore clair :)

Je ne comprends pas ce qu'est l'optimiseur ?

Quand j'entends optimiseur, j'ai de mauvaises associations avec un testeur-optimiseur MT.

 
Yuriy Asaulenko:

Je ne comprends pas, qu'est-ce qu'un optimiseur ?

Quand j'entends optimiseur, j'ai une mauvaise association avec un testeur-optimiseur MT.


oui, pourquoi pas bon ? Le MO est en fait l'optimisation avant l'invention de l'IA.

La génétique est également un MO

 
Maxim Dmitrievsky:

oui, pourquoi pas bien ? Le MO est essentiellement une optimisation jusqu'à ce que l'IA soit inventée.

La génétique fait également partie de l'IA.

L'optimisation est une question de critères. L'optimisation en fonction du profit maximal n'est pas un très bon critère. En même temps, il n'y a aucune raison de croire que cela fonctionnera d'une manière ou d'une autre à l'avenir, ce que nous voyons souvent dans la pratique, sur le forum en particulier.