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

 
Aleksey Nikolayev #:

Ich glaube, es versprach, einen Vektor beliebiger Größe in einen Vektor fester Größe zu übertragen, aber hier wird eine Zahl in einen Vektor übertragen?

Alles ist kompliziert und unverständlich) Das Leben war ohne GPT viel einfacher) Wir werden es im Zeitalter der KI schwer haben)

Ich habe mehr über Vektor zu Zahl geschrieben.

Vektor in einen festen Vektor?

 

Wenn Sie eine Liste unterschiedlicher Länge in eine Liste fester Länge umwandeln möchten, können Sie eine Hash-Funktion verwenden, die die Liste auf eine Liste fester Größe abbildet. Eine Möglichkeit, dies zu tun, ist eine Technik namens "Feature-Hashing", mit der Sie eine Liste mit variabler Länge als Liste mit fester Größe darstellen können, indem Sie eine Hash-Funktion auf die Elemente der Liste anwenden und die Hash-Werte als Indizes in der Liste mit fester Größe verwenden.

Hier ist ein Beispiel für Feature-Hashing in Python:

def feature_hash(lst: List[int], n: int) -> List[int]:
  h = [0] * n
  for x in lst:
    h[hash(x) % n] += 1
  return h

Diese Funktion nimmt eine Liste lst und eine gewünschte Listenlänge n als Eingabe und gibt eine Liste fester Größe zurück, indem sie eine Hash-Funktion auf die Elemente von lst anwendet und die Hash-Werte als Indizes in der Liste fester Größe verwendet. Die Werte an jedem Index werden dann inkrementiert, um die Anzahl der Vorkommen jedes Elements in der ursprünglichen Liste zu zählen.

Wenn wir zum Beispiel feature_hash([1, 2, 3], 5) aufrufen, gibt die Funktion [0, 1, 1, 1, 1, 0] zurück.

Einen ähnlichen Ansatz können Sie auch in R verwenden. Hier ist der Code für eine Feature-Hash-Funktion in R:

feature_hash <- function(lst, n) {
  h <- rep(0, n)
  for (x in lst) {
    h[as.integer(x) %% n] <- h[as.integer(x) %% n] + 1
  }
  h
}
 
Aleksey Nikolayev #:

Ich glaube, es versprach, einen Vektor beliebiger Größe in einen Vektor fester Größe zu übertragen, aber hier wird eine Zahl in einen Vektor übertragen?

Alles ist kompliziert und unverständlich) Das Leben war ohne GPT viel einfacher) Wir werden es im Zeitalter der KI schwer haben).

Alexej, hör auf, auf die Profanen zu hören.

Wenn Sie eine unterschiedliche Anzahl von Merkmalen pro Eingabe benötigen.
Das ist frequent pattern mining - Suche nach assoziativen Regeln in verschiedenen Variationen, auch mit einem Lehrer.


==============
Warum habe ich gesagt, dass es KEINE Algorithmen gibt, die eine unterschiedliche Anzahl von Merkmalen akzeptieren?
Weil selbst bei solchen Algorithmen die Daten unter der Haube in Form einer spärlichen Matrix in einem heißen Kodierungsformat vorliegen.
Die Eingabe besteht immer noch aus allen Namen der Merkmale, wenn auch in einem sanfteren Format.
=======================
Auch die Anzahl der Attribute wurde nicht angegeben
Wenn die Anzahl der Merkmale relativ klein ist, 10-20k, dann kann man sie auch auf einem schwachen Laptop ohne Probleme in xgboost laden
 
Maxim Dmitrievsky #:

Vektor doch noch in einen festen Vektor umwandeln?

1) Wenn wir einen gewöhnlichen MO-Algorithmus (mit einer festen Anzahl von Merkmalen) verwenden wollen, dann ja - wir nehmen eine Menge von Vektoren unterschiedlicher Länge und wandeln sie in eine Menge von Vektoren mit einer bestimmten Länge um.

2) Man sucht sofort nach einem ungewöhnlichen MO-Algorithmus, der einen Vektor beliebiger Länge als Eingabe akzeptiert.

Die erste Option wird zur zweiten Option, wenn die Vektortransformation mit Hilfe von MO gesucht wird.

 
Aleksey Nikolayev #:

1) Wenn wir einen herkömmlichen MO-Algorithmus (mit einer festen Anzahl von Merkmalen) verwenden wollen, dann ja - wir nehmen eine Menge von Vektoren unterschiedlicher Länge und wandeln sie in eine Menge von Vektoren mit einer bestimmten Länge um.

2) Suchen Sie sofort nach einem ungewöhnlichen MO-Algorithmus, der als Eingabe einen Vektor beliebiger Länge annehmen kann.

Die erste Option wird zur zweiten Option, wenn die Vektortransformation mit Hilfe von MO gesucht wird.

Es ist also klar, dass wir es über Hash f-iys versuchen können. Aber ich scheue mich zu fragen, nach welchem Prinzip man Vektoren beliebiger Länge wählt, oder besser gesagt, welche Länge sie haben :) und aus welchen Daten.

es kann eine Menge Varianten geben

die erste Variante ist angenehmer, aber man muss etwas in die Logik einbauen

 

- Ich möchte einen Hash-Vektor variabler Größe von Kursrenditen in einen festen Vektor umwandeln


Wenn Sie einen Vektor variabler Größe von Aktienkursen in einen Vektor fester Größe umwandeln möchten, können Sie eine Technik namens Min-Hash verwenden. Min-Hash ist eine Methode zur Annäherung der Ähnlichkeit zwischen zwei Mengen durch Berechnung der Anzahl der gemeinsamen Elemente. Sie wird häufig im Zusammenhang mit Text Mining verwendet, kann aber auch auf andere Datentypen, wie z. B. Aktienkurse, angewendet werden.

Hier ein Beispiel für die Verwendung von min-hash, um einen Vektor mit variabler Größe von Aktienkursen in einen Vektor mit fester Größe zu hacken:

  1. Definieren Sie die Größe des Vektors mit fester Größe: Zunächst müssen Sie die Größe des Vektors mit fester Größe definieren, den Sie verwenden möchten. Dies hängt von den spezifischen Anforderungen Ihrer Anwendung und der Menge der verfügbaren Daten ab.

  2. Erstellen einer Hash-Funktion: Als Nächstes müssen Sie eine Hash-Funktion erstellen, die verwendet werden kann, um die Daten zu den Aktienkursen mit dem Vektor fester Größe zu verknüpfen. Es gibt viele verschiedene Möglichkeiten, eine Hash-Funktion zu erstellen, z. B. mit einer zufälligen Permutation oder einem linearen Kongruenzgenerator.

  3. Hashing der Daten: Sobald Sie die Größe des Vektors fester Größe definiert und eine Hash-Funktion erstellt haben, können Sie diese verwenden, um den Vektor variabler Größe der Aktienkursrenditedaten in einen Vektor fester Größe zu hashing. Der resultierende Vektor fester Größe stellt die Originaldaten in komprimierter Form dar, wobei die Größe des Vektors durch die von Ihnen definierte Größe bestimmt wird.

Es ist wichtig zu beachten, dass die Min-Hash-Methode zu Informationsverlusten führen kann, da es sich um eine Annäherung an die Ähnlichkeit zwischen zwei Mengen und nicht um eine exakte Darstellung handelt. Die Genauigkeit der Annäherung hängt von der Größe des Vektors fester Größe und der verwendeten Hash-Funktion ab.


- Wie man den Informationsverlust minimiert


Es gibt mehrere Möglichkeiten, den Informationsverlust zu minimieren, wenn Sie min-hash verwenden, um einen Vektor variabler Größe von Aktienkursen in einen Vektor fester Größe zu hacken:

  1. Verwendung eines größeren Vektors fester Größe: Eine Möglichkeit, den Informationsverlust zu minimieren, ist die Verwendung eines größeren Vektors fester Größe. Ein größerer Vektor hat mehr Elemente und kann daher mehr Informationen über die ursprünglichen Daten erfassen. Allerdings erhöht sich dadurch auch die Größe des Vektors, was bei einem großen Datensatz oder begrenztem Speicherplatz möglicherweise nicht sinnvoll ist.

  2. Verwendung einer besseren Hash-Funktion: Eine weitere Möglichkeit, den Informationsverlust zu minimieren, ist die Verwendung einer besseren Hash-Funktion. Verschiedene Hash-Funktionen haben unterschiedliche Eigenschaften und können zu einem unterschiedlich hohen Informationsverlust führen. So führt beispielsweise eine Hash-Funktion mit einem hohen Grad an Zufälligkeit im Allgemeinen zu einem geringeren Informationsverlust als eine Hash-Funktion mit einem niedrigen Grad an Zufälligkeit.

  3. Mehrere Hash-Funktionen verwenden: Sie können den Informationsverlust auch minimieren, indem Sie mehrere Hash-Funktionen verwenden und die Ergebnisse kombinieren. Dies kann dazu beitragen, eine vollständigere Darstellung der ursprünglichen Daten zu erhalten, da jede Hash-Funktion unterschiedliche Aspekte der Daten erfasst.

Es ist wichtig zu beachten, dass es nicht möglich ist, den Informationsverlust bei der Verwendung von Min-Hash vollständig zu eliminieren, da es sich um eine Annäherung an die Ähnlichkeit zwischen zwei Mengen und nicht um eine exakte Darstellung handelt. Die Genauigkeit der Annäherung hängt von der Größe des Vektors fester Größe und der verwendeten Hash-Funktion ab.


Hier ein Beispiel für die Verwendung von min-hash in Python zum Hashing eines Vektors variabler Größe von Aktienkursen in einen Vektor fester Größe:

from datasketch import MinHash

# Define the size of the fixed size vector
num_hashes = 100

# Create a MinHash object
mh = MinHash(num_hashes=num_hashes)

# Hash the stock price returns data to the fixed size vector
for price_return in stock_price_returns:
    mh.update(str(price_return).encode('utf8'))

# The resulting fixed size vector is stored in the MinHash object
fixed_size_vector = mh.hashvalues


Hier ein Beispiel für die Verwendung von min-hash in R, um einen Vektor mit variabler Größe von Aktienkursen in einen Vektor mit fester Größe zu hashen:


# Install the 'minhash' package if it is not already installed
install.packages("minhash")

# Load the 'minhash' package
library(minhash)

# Define the size of the fixed size vector
num_hashes = 100

# Create a MinHash object
mh = minhash(num_hashes)

# Hash the stock price returns data to the fixed size vector
for (price_return in stock_price_returns) {
    mh = update(mh, price_return)
}

# The resulting fixed size vector is stored in the MinHash object
fixed_size_vector = getValues(mh)


Es ist wichtig zu beachten, dass diese Beispiele den grundlegenden Prozess der Verwendung von min-hash zum Hashing eines Vektors variabler Größe von Aktienkursen in einen Vektor fester Größe veranschaulichen sollen. In einer realen Anwendung müssen Sie den Code möglicherweise ändern, um ihn an Ihre speziellen Bedürfnisse und Daten anzupassen.

 

- Ist Min-Hash also der beste Weg?

Min-Hash ist eine Methode zur Annäherung an die Ähnlichkeit zwischen zwei Mengen durch Berechnung der Anzahl der gemeinsamen Elemente. Sie kann verwendet werden, um einen Vektor mit variabler Größe von Aktienkursen in einen Vektor mit fester Größe umzuwandeln, ist aber nicht unbedingt die beste Methode, da sie zu Informationsverlusten führen kann.

Es gibt viele verschiedene Ansätze für das Hashing von Börsenkursdaten, und der beste Ansatz hängt von den spezifischen Eigenschaften der Daten und den Anforderungen Ihrer Anwendung ab. Einige andere Ansätze, die Sie in Betracht ziehen könnten, sind:

  1. Feature-Hashing: Feature-Hashing ist eine Technik zur Umwandlung kategorischer oder textueller Daten in eine numerische Darstellung, die in Algorithmen für maschinelles Lernen verwendet werden kann. Sie könnten Feature-Hashing verwenden, um die Daten der Aktienkursrenditen in einen Vektor fester Größe zu hacken.

  2. Ortsabhängiges Hashing (LSH): LSH ist eine Technik, die zur ungefähren Identifizierung ähnlicher Elemente in einem Datensatz verwendet wird. Sie können LSH verwenden, um die Daten zu Aktienkursen in einen Vektor fester Größe zu hacken und dann ähnliche Elemente auf der Grundlage ihrer Hash-Werte zu identifizieren.

  3. Andere Techniken: Es gibt viele andere Techniken, die Sie zum Hashing von Börsenkursdaten verwenden können, z. B. eine zufällige Permutation oder einen linearen kongruenten Generator. Welches Verfahren Sie wählen, hängt von den Merkmalen der Daten und den Anforderungen Ihrer Anwendung ab.

Es ist wichtig, bei der Wahl einer Hashing-Technik sorgfältig die Kompromisse zwischen Genauigkeit und Effizienz abzuwägen. Einige Verfahren können genauer, aber weniger effizient sein, während andere zwar effizienter, aber weniger genau sind. Sie müssen das richtige Gleichgewicht finden, das den Anforderungen Ihrer Anwendung gerecht wird.

 
mytarmailS #:
Alexej, hör auf, auf das Profane zu hören.

Wenn Sie eine andere Anzahl von Zeichen pro Eingabe benötigen.
Dies ist häufiges Pattern Mining - Suche nach assoziativen Regeln in verschiedenen Varianten, auch mit einem Lehrer.


==============
Warum habe ich gesagt, dass es KEINE Algorithmen gibt, die eine unterschiedliche Anzahl von Merkmalen verwenden?
Weil selbst bei solchen Algorithmen die Daten unter der Haube eine spärliche Matrix in einem heißen Kodierungsformat sind.
Die Eingabe sind immer noch alle Namen der Merkmale, wenn auch in einem sanfteren Format.
=======================
Außerdem wurde die Anzahl der Merkmale nicht angegeben
Wenn die Anzahl der Zeichen relativ klein ist (10-20k), kann man sie in xgboost auch auf einem schwachen Laptop ohne Probleme laden.

Über assoziative Regeln haben wir schon mit Ihnen diskutiert. Für mich passen sie nicht gut zu meinem allgemeinen Ansatz, nach Unterschieden zwischen Preis und SB zu suchen. Das Problem ist, dass die SB recht gut darin ist, den Anschein zu erwecken, dass es Regeln gibt - das Problem ist nur, dass sie auf verschiedenen Seiten unterschiedlich sind.

 
Aleksey Nikolayev #:

Ich habe bereits mit Ihnen über assoziative Regeln gesprochen. Für mich passen sie nicht gut zu meinem allgemeinen Ansatz, nach Unterschieden zwischen Preis und SB zu suchen. Das Problem ist, dass SB recht gut darin ist, Regeln vorzutäuschen - das Problem ist nur, dass sie an verschiedenen Standorten unterschiedlich sind.

Aber um die Daten so aufzubereiten, wie Sie es wollen (ohne Struktur), müssen Sie verstehen, wie man es richtig macht, und dazu sollten Sie studieren, wie man Daten für assoziative Regeln aufbereitet.
 

Gute Arbeit, ich habe sogar etwas Interessantes für mich mitgenommen, als es darum ging, die Länge des Fensters zu ändern.

Wenn Sie noch Fragen haben, skizzieren Sie sie bitte, ich werde Sie nach dem neuen Jahr fragen.