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

 
Aleksey Vyazmikin:

Bitte helfen Sie bei der Lösung eines Kombinatorik-Problems!

Es gibt N verschiedene nicht wiederholbare Elemente, aus denen jeweils X Elemente entnommen werden müssen, wobei der Eingabewert die Zahl der Kombination aller möglichen Elemente ist.

Gibt es dafür eine Formel oder Funktion?

Die Eingabefunktion sollte ein Array mit Elementen, Anzahl der Elemente in Kombination und Anzahl der Kombinationen erhalten, und die Ausgabe sollte ein Array mit Indizes der Elemente sein.

Bitte um Hilfe!

Vielleicht ist es einfacher, nach X zufälligen aus N zu suchen?
Wenn Sie mit einer Anzahl von Kombinationen arbeiten, müssen Sie diese Kombinationen intern aus Zahlen aufbauen.

Und es kann eine große Anzahl von Zahlenkombinationen geben. Wenn man zum Beispiel 10 aus 100 auswählt, sind das Millionen oder Milliarden (in gewissem Umfang). Wie werden Sie entscheiden, welche Kombination Sie nehmen? 1,2, 158451, oder 5454554 ?

Random Unique ist einfacher zu finden, wählen Sie einfach zufällig 1 aus N., dann die zweite und so weiter bis zu X.
Wenn ein Element bereits ausgewählt ist, überspringen Sie das Duplikat und wählen es erneut aus. D.h. es wird mehr Versuche geben als X. Nimmt man beispielsweise 90 von 100, gibt es eine Menge doppelter Versuche.

Um schneller zu sein, können Sie das ausgewählte Element aus dem N-Array verwerfen und aus den N-1 verbleibenden Elementen wählen. (Vertauschen Sie das ausgewählte Element mit dem letzten und kürzen Sie das Feld um 1.) Auf diese Weise finden Sie X zufällige Elemente in genau X Versuchen. Wenn N > 3000 Elemente ist, sollten Sie einen komplizierteren Zufallsgenerator als den eingebauten verwenden. Vergleich von Randoms hier.

Как MathRand() генерирует значения?
Как MathRand() генерирует значения?
  • 2010.08.06
  • www.mql5.com
Общее обсуждение: Как MathRand() генерирует значения?
 
Aleksey Nikolayev:

Das könnte funktionieren.

Oder Sie können einen Blick auf den Abschnitt "Kombinationen" in Okulovs Lehrbuch "Programming in Algorithms" werfen

Sicherlich gibt es eine Formel, um die Kombination aus dem Index zu ermitteln? Können Sie es bitte schreiben?

 
Valeriy Yastremskiy:

Optimierbare Parameter und Gleichgewichtsrückgang Wachstumsbereiche. Die Idee ist nicht zu optimieren, sondern wesentliche Merkmale für die Wachstumszonen des Falles ins Gleichgewicht zu bringen, aber die Wissenschaft sagt, dass es schwierig oder unmöglich ist, durch irgendwelche Merkmale von BP in Gegenwart von SB. Es ist schwierig, mathematische Modelle zu finden, die die Reihen mit ausreichender Genauigkeit beschreiben, und es ist nicht klar, welche Größe BP benötigt wird.

Symmetrische Bedingungen scheinen mir korrekter zu sein. Die Reihe kann auch umgekehrt werden. ))))

Die Wissenschaft kann viele Dinge sagen, aber man muss versuchen, das Potenzial zu prüfen, vielleicht ist es unmöglich, es zu perfektionieren, und eine nicht ideale Version wird ausreichen, um die Leistung im Allgemeinen zu verbessern.

 
elibrarius:

Wäre es nicht einfacher, X zufällige aus N zu suchen?
Wenn Sie mit der Zahl der Kombination arbeiten, müssen Sie diese Kombination intern aus der Zahl aufbauen.

Und es kann eine große Anzahl von Zahlenkombinationen geben. Zum Beispiel, um 10 aus 100 auszuwählen. Es werden Millionen oder Milliarden sein (irgendetwas in der Art). Wie werden Sie entscheiden, welche Kombination Sie nehmen? 1,2, 158451, oder 5454554 ?

Random Unique ist einfacher zu finden, wählen Sie einfach zufällig 1 aus N., dann die zweite und so weiter bis zu X.
Wenn ein Element bereits ausgewählt ist, überspringen Sie das Duplikat und wählen es erneut aus. D.h. es wird mehr Versuche geben als X. Nimmt man beispielsweise 90 von 100, gibt es eine Menge doppelter Versuche.

Um schneller zu sein, können Sie das ausgewählte Element aus dem N-Array löschen und aus den N-1 verbleibenden Elementen auswählen. (Vertauschen Sie das ausgewählte Element mit dem letzten und kürzen Sie das Feld um 1.) Auf diese Weise finden Sie X zufällige Elemente in genau X Versuchen. Wenn N > 3000 Elemente ist, sollten Sie einen komplizierteren Zufallsgenerator als den eingebauten verwenden. Klicken Sie hier, um Randoms zu vergleichen.

Das Ziel ist genau der Overkill. Aus 250.000 Blättern werden 15.000 einzigartige Splits gewonnen. Eine vollständige Aufzählung von Blättern mit 3 Splits würde nach meiner Schätzung für einen Zielwert etwa 250 Tage in Anspruch nehmen. Ich denke, die Splits sollten gruppiert werden, indem man die Anfangssplits auswählt und nach Splits sucht, die in ihren Bereichen aktiviert werden, und dann jede Gruppe einzeln ausprobiert. Auf diese Weise wird die Zahl der Kombinationen erheblich reduziert.

 
Aleksey Vyazmikin:

Gibt es eine bestimmte Formel, um die Kombination aus dem Index zu ermitteln? Können Sie das bitte aufschreiben?

Es ist keine Formel, es ist ein Algorithmus. Schauen Sie sich das von Okulov an, es ist nicht viel, und es ist nicht kompliziert.

 
Aleksey Nikolayev:

Es ist keine Formel, es ist ein Algorithmus. Schlagen Sie Okulov nach, es ist nicht viel und nicht kompliziert.

Ich habe es heruntergeladen und nachgeschlagen - vielen Dank!

Wenn Sie es mit "leicht" bewertet haben, haben Sie es wohl verstanden, aber ich nicht - ich verstehe die Programmiersprache nicht, die Textbeschreibung ist unklar, kann ich Ihnen Fragen zum Material stellen?

 
Aleksey Vyazmikin:

Ich habe sie heruntergeladen und mir angesehen - vielen Dank!

Wenn Sie es als "unkompliziert" eingestuft haben, müssen Sie es verstanden haben, aber ich habe es nicht verstanden - ich verstehe die Programmiersprache dort nicht, die Textbeschreibung ist unklar, kann ich Ihnen Fragen zum Material stellen?

Wenn es genug ist, können Sie fragen. Die Idee ist einfach: Erstellen Sie ein (zweidimensionales) Array mit allen Kombinationen und nehmen Sie dann eine Zeile (oder Spalte) nach Nummer. Sie haben zwei Möglichkeiten - entweder Sie speichern das Array oder Sie berechnen es jedes Mal neu (was Speicher und Zeit spart).

Hier ist ein Beispiel in R:

#  i - номер, n - элементов исходно, k - сколько выбираем из n
i2c <- function (i,n,k) {m <- combn(n,k); m[,i]}

> i2c(3,10,5)
[1] 1 2 3 4 7
 
Aleksey Nikolayev:

Wenn es sich um eine Maßnahme handelt, dann setzen Sie sie fest. Die Idee ist einfach: Erstellen Sie ein (zweidimensionales) Array mit allen Kombinationen und nehmen Sie dann eine Zeile (oder eine Spalte) nach Nummer. Sie haben zwei Möglichkeiten - entweder Sie speichern das Array oder Sie berechnen es jedes Mal neu (was Speicher und Zeit spart).

Hier ist ein Beispiel in R:

Das Array wird durch Schleifen aufgebaut, was eine Zeitverschwendung ist, nicht sehr geeignet. Interessant ist die Variante, den Wert rechnerisch zu ermitteln, ohne vorher eine vollständige Tabelle zu erstellen.

 
Aleksey Vyazmikin:

Das Array wird über Schleifen aufgebaut, und das ist eine Zeitverschwendung, nicht sehr geeignet. Interessant ist die Möglichkeit, einen Wert rechnerisch zu ermitteln, ohne vorher eine vollständige Tabelle zu erstellen.

Ich bin nicht sicher, ob es eine solche Formel gibt.

 
Aleksey Nikolayev:

Ich bin nicht sicher, ob es eine solche Formel gibt.

Es muss einen Algorithmus geben, denn es stellt sich heraus, dass wir für 15000 Elemente in 3 Kombinationen 4 Terabyte Speicherplatz benötigen! Ich rechne sogar noch mehr, wenn man 8 Bits pro 1 Element benötigt.

Grund der Beschwerde: