Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 531

 
elibrarius:

Frage an R-Experten.

Wie kann eine Matrix mit absoluten Werten in eine Softmax-Klassenmatrix umgewandelt werden?

apply(matr, 1, function (rowvec) { result <- rep(0, length(rowvec)); result[which.max(rowvec)] <- 1; result } )

und je nach Dimensionalität der Matrix nach Bedarf transponieren

 
Maxim Dmitrievsky:

Ah, na ja, es gibt noch keine Bibliotheken... Ich kann sie nicht selbst schreiben.)


Ich denke, ich werde ihnen schreiben und sie bitten, mir ein Neuronet zu leihen, und wenn es funktioniert, werde ich es ihnen mit % zurückzahlen :)

Übrigens sind sie dem Original ein wenig näher gekommen, zumindest haben sie Mediatoren hinzugefügt, aber es ist immer noch keine KI, da sich neue Synapsen nicht von selbst bilden und rekonstruieren, soweit ich weiß.

 
Maxim Dmitrievsky:

Ich denke daran, ihnen zu schreiben und sie zu bitten, mir ein neuronales Netz zu leihen, und wenn es funktioniert, werde ich es ihnen mit Zinsen zurückzahlen :)

Ich denke, wenn es bei einfachen MLPs keine Fortschritte bei den Lösungen gibt, wird es auch keine bei komplexen NSs geben. Und selbst wenn man MLP durch einen komplexeren NS ersetzt, ist es keineswegs sicher, dass sich das Ergebnis irgendwie verbessern wird. Denn ein anderes Instrument erfordert eine andere Behandlung, eine andere Formulierung des Problems.

Im Moment werde ich mich auf einfache MLP- und alte BP-basierte Lernalgorithmen beschränken, und ich werde sehen, ob ein echter Bedarf besteht.

 
anonym:

und je nach Dimensionalität der Matrix zu transponieren

Wow, viel kürzer! Danke!

Ich habe es ein wenig geändert, ich erstelle eine neue Matrix, indem ich die alte kopiere, so dass die Spalten- und Zeilennamen erhalten bleiben. Das ist universeller, für den Fall, dass ich sie weiter verwenden muss. Und ich drehe die Matrix sofort um. So wie ich es verstehe, spiegelt apply(x,1,f) die Matrix immer! um, weil es die Daten zeilenweise verarbeitet und zu Spalten zusammenfasst.

get_softmax <- function(m){
    t(apply(m, 1, function (row) {r <- row;  r [1:length(row)] <-0 ; r[which.max(row)] <- 1;  r } ))
}

 
Yuriy Asaulenko:

Ich denke, wenn es bei einfachen MLPs keine Verschiebung der Lösungen gibt, wird es auch keine bei komplexen NSs geben. Und selbst wenn man den MLP durch einen komplexeren NS ersetzt, ist es keineswegs sicher, dass sich das Ergebnis irgendwie verbessern wird. Denn ein anderes Instrument erfordert eine andere Behandlung, eine andere Formulierung des Problems.

Im Moment werde ich mich auf einfache MLP- und alte BP-Trainingsalgorithmen beschränken, und wir werden sehen, ob sich ein echter Bedarf ergibt.


Ich mag es einfach, wenn alles schnell gezählt wird und man viele Strategien ausprobieren kann.

Wenn ich ein produktiveres Analogon hätte, würde ich darauf umsteigen... Aber jetzt ist es 90% Data Mining und 10% Modellauswahl.

 
Maxim Dmitrievsky:

Ich mag es einfach, wenn alles schnell gezählt wird, man kann viele Strategien durchgehen.

Wenn ich ein produktiveres Analogon hätte, würde ich darauf umsteigen... bis jetzt ist es zu 90% nur Datensuche und zu 10% Modellauswahl.

Was die Leistung betrifft, so beträgt die Reaktionszeit eines trainierten MLP mit 6 Schichten (~60 Neuronen) 0,005 s. Es reicht für fast alles aus.

Was die lange Lernzeit anbelangt, so ist das überhaupt kein Problem, denn es dauert viel länger, bis man das nächste Experiment durchdacht hat - eine Woche oder sogar länger.

Nun, eine Umschulung alle paar Monate, sagen wir, für ein paar Tage - ich denke nicht, dass das ein Problem ist. Die Umstellung des Systems auf Logik dauert viel länger. Ja, und ein normales Training funktioniert nicht - man braucht einen langen Tamburintanz zwischen den Epochen. Während das Standardtraining (ohne Tanzen) gute Ergebnisse liefert, aber nur bei einer Trainingsstichprobe).

 

Ein weiteres Problem mit R.

Auf dem einen Computer ist das in Ordnung, auf dem anderen Computer gibt es erhöhte Anforderungen an die Korrektheit des Codes.

Zum Beispiel

darch.unitFunction = linearUnit - führte zum Absturz von Rterm.exe

geändert in

darch.unitFunction ="linearUnit"

dieser Punkt begann vor dem nächsten Fehler zu vergehen.

Außerdem musste ich library(darch) in require(darch) ändern

Jetzt ist es das Lernen selbst, das ein Manko ist.

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

Ich habe viele Varianten ausprobiert, Rterm.exe stürzt immer ab

Verfügt R über eine Art Fehlerkontrolle? Vielleicht habe ich auf dem zweiten PC eine Fehlerebene, die ich ausarbeiten muss, wenn ich bei jeder Warnung anhalte?

Auf beiden Computern habe ich R mit den Standardeinstellungen installiert, ich habe alle Pakete installiert.
Wie kann ich es reparieren?

 

Wenn die Darch-Bibliothek nicht installiert ist, führt library(darch) zu einem Fehler und die Ausführung des Codes wird gestoppt, und require(darch) führt nur zu einem Warp und der Code funktioniert weiter, aber da die Darch-Bibliothek nicht installiert ist, können ihre Funktionen nicht aufgerufen werden.

Der nächste Schritt ist die Ausführung von
install.packages("darch", dependencies=TRUE) zur automatischen Installation der Bibliothek

 
Yuriy Asaulenko:

Was die Leistung betrifft, so beträgt die Reaktionszeit eines trainierten MLP mit 6 Schichten (~60 Neuronen) 0,005 s. Es reicht für fast alles.

Was die lange Lernzeit angeht, so stört sie überhaupt nicht, denn es dauert viel länger, allein über das nächste Experiment nachzudenken - eine Woche oder sogar mehr.

Nun, eine Umschulung alle paar Monate, sagen wir, für ein paar Tage - ich denke nicht, dass das ein Problem ist. Die Umstellung des Systems auf Logik dauert viel länger. Ja, und ein normales Training funktioniert nicht - man braucht einen langen Tamburintanz zwischen den Epochen. Und das Standardtraining (ohne Tanzen) liefert großartige Ergebnisse - allerdings nur bei einer Trainingsstichprobe).


Ich mache es ein wenig falsch - ich benutze den Optimierer aktiv genau für die Suche nach Strategien, d.h. ich probiere Chips, Kombinationen von TS-Blöcken, irgendetwas anderes... Denn manchmal übersehe ich sogar eine Kleinigkeit, die ich im System übersehen habe. Und selbst hundert Optionen durchzugehen, erfordert eine beträchtliche Lerngeschwindigkeit (und 100 Optionen sind sehr wenig) ... Nun, jeder hat seinen eigenen Ansatz, ich sage nicht, dass meiner besser ist. Natürlich kann man sagen, dass NS selbst ein Optimierer ist, aber es gibt immer einige Hyperparameter, die in der Anfangsphase gewählt werden können

 
Maxim Dmitrievsky:

Ich benutze den Optimierer aktiv, um nach Strategien zu suchen, d.h. um Chips, Kombinationen von TS-Blöcken oder etwas anderes zu durchsuchen... denn manchmal gibt es sogar eine Kleinigkeit, die ich nicht bedacht habe, die aber im System fehlt. Und selbst hundert Optionen durchzugehen, erfordert eine beträchtliche Lerngeschwindigkeit (und 100 Optionen sind sehr wenig) ... Nun, jeder hat seinen eigenen Ansatz, ich sage nicht, dass meiner besser ist. Natürlich kann man sagen, dass NS an sich ein Optimierer ist, aber es gibt immer eine Reihe von Hyperparametern, die man in der Anfangsphase auswählen kann.

Sie werden also bald eine Minenfarm für Minenstrategien benötigen.