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

 
Maxim Dmitrievsky #:
Ich werde es etwas später versuchen. Wenn es noch mehr Möglichkeiten für Fragen gibt - wirf sie rein :)

1) Wird das Modell mit einer nicht festgelegten Anzahl von Merkmalen für das Modell selbst verwendet? (Ich denke schon).

2) Fragen Sie nach einer allgemeinen Form einer rekursiven Funktion, die eine Zahl auf eine numerische Liste beliebiger Länge abbildet.

 
Aleksey Nikolayev #:

Vielleicht fragen Sie nach einem einfachen Beispiel für die Anwendung der logistischen Regression bei einer Klassifizierungsaufgabe mit einer variablen Anzahl von Merkmalen?

Wenn die Anzahl der Merkmale immer unterschiedlich ist, kann es schwierig sein, traditionelle Algorithmen für maschinelles Lernen anzuwenden, die einen Merkmalsvektor fester Größe als Eingabe erwarten. Eine Lösung für dieses Problem ist die Verwendung einer Methode namens "Feature-Hashing", die es Ihnen ermöglicht, einen Feature-Satz variabler Länge als Feature-Vektor fester Größe darzustellen.

Beim Feature-Hashing wird eine Hash-Funktion auf die Features im Feature-Set angewendet und die Hash-Werte als Indizes in einem Feature-Vektor fester Größe verwendet. Auf diese Weise können Sie einen Merkmalssatz variabler Länge auf einen Vektor fester Größe abbilden, der dann als Eingabe für ein maschinelles Lernmodell verwendet werden kann.

Nehmen wir zum Beispiel an, Sie haben einen Datensatz mit einer variablen Anzahl von Merkmalen und möchten die Daten mithilfe einer logistischen Regression klassifizieren. Sie können Feature-Hashing auf die Features im Datensatz anwenden, wodurch ein Feature-Vektor fester Größe entsteht, der als Eingabe für das logistische Regressionsmodell verwendet werden kann.

Insgesamt ist das Feature-Hashing eine nützliche Technik für den Umgang mit Datensätzen mit einer variablen Anzahl von Features und kann in Kombination mit Algorithmen für maschinelles Lernen wie der logistischen Regression zur Lösung von Klassifizierungsproblemen verwendet werden.

 
Aleksey Nikolayev #:

1) Wird ein Modell mit einer nicht festgelegten Anzahl von Merkmalen für sich selbst verwendet? (Offensichtlich ja.)

2) Frage nach einer allgemeinen Form einer rekursiven Funktion, die eine Zahl auf eine numerische Liste beliebiger Länge abbildet

1 über sich selbst ist irgendwie widerwillig zu beantworten, aber es gibt einen Transformator, also ja

2 eine allgemeine Sicht auf eine rekursive Funktion, die eine Zahl auf eine numerische Liste beliebiger Länge abbildet

Eine rekursive Funktion ist eine Funktion, die sich selbst als Teil ihrer Ausführung aufruft. Hier ist ein allgemeines Beispiel für eine rekursive Funktion, die eine Zahl auf eine numerische Liste beliebiger Länge abbildet:

def map_to_list(n: int, lst: List[int]) -> List[int]:
  if n == 0:
    return lst
  else:
    lst.append(n)
    return map_to_list(n-1, lst)

Diese Funktion nimmt eine ganze Zahl n und eine Liste lst als Eingabe. Sie prüft dann, ob n gleich 0 ist. Wenn ja, gibt die Funktion die Liste lst zurück. Ist n ungleich 0, hängt die Funktion n an das Ende der Liste lst an und ruft sich dann selbst mit der geänderten lst und dem Wert n-1 auf. Dieser Vorgang wird so lange fortgesetzt, bis n gleich 0 ist, woraufhin die Funktion die endgültige Version der Liste zurückgibt.

Dies ist nur ein Beispiel dafür, wie eine rekursive Funktion verwendet werden kann, um eine Zahl auf eine Liste abzubilden. Es gibt viele andere Möglichkeiten, eine solche Funktion zu schreiben, und die spezifische Implementierung hängt von den spezifischen Anforderungen und Beschränkungen des Problems ab, das Sie zu lösen versuchen.


- Zeigen Sie diesen Code in der Sprache R

Hier ist die rekursive Funktion aus dem vorherigen Beispiel, geschrieben in R:

map_to_list <- function(n, lst) {
  if (n == 0) {
    return(lst)
  } else {
    lst <- c(lst, n)
    return(map_to_list(n-1, lst))
  }
}

Diese Funktion ähnelt dem vorherigen Beispiel, verwendet aber die R-Syntax und Funktionen. Die if-Anweisung wird verwendet, um zu prüfen, ob n gleich 0 ist, und die return-Funktion wird verwendet, um die endgültige Version der Liste zurückzugeben. Die Funktion c wird verwendet, um n an das Ende der Liste lst anzuhängen.

Wie bereits erwähnt, ist dies nur ein Beispiel dafür, wie eine rekursive Funktion verwendet werden kann, um eine Zahl auf eine Liste abzubilden. Die spezifische Implementierung hängt von den spezifischen Anforderungen und Beschränkungen des Problems ab, das Sie zu lösen versuchen.

 
Maxim Dmitrievsky #:

Beim Feature-Hashing wird eine Hash-Funktion auf die Features im Feature-Set angewendet und die Hash-Werte als Indizes in einem Feature-Vektor fester Größe verwendet. Auf diese Weise können Sie einen Merkmalssatz variabler Länge einem Vektor fester Größe zuordnen, der dann als Eingabe für ein maschinelles Lernmodell verwendet werden kann.

Er wird Ihnen nun erklären, welche Varianten von Hash-Funktionen für numerische Vektoren verwendet werden.

 
Maxim Dmitrievsky #:

Wenn die Anzahl der Merkmale immer unterschiedlich ist, kann es schwierig sein, traditionelle Algorithmen für maschinelles Lernen anzuwenden, die einen Merkmalsvektor fester Größe als Eingabe erwarten. Eine Lösung für dieses Problem ist die Verwendung einer Methode namens "Feature-Hashing", die es Ihnen ermöglicht, einen Feature-Satz variabler Länge als Feature-Vektor fester Größe darzustellen.

Beim Feature-Hashing wird eine Hash-Funktion auf die Features im Feature-Set angewendet und die Hash-Werte als Indizes in einem Feature-Vektor fester Größe verwendet. Auf diese Weise können Sie einen Merkmalssatz variabler Länge auf einen Vektor fester Größe abbilden, der dann als Eingabe für ein maschinelles Lernmodell verwendet werden kann.

Nehmen wir zum Beispiel an, Sie haben einen Datensatz mit einer variablen Anzahl von Merkmalen und möchten die Daten mit Hilfe einer logistischen Regression klassifizieren. Sie können Feature-Hashing auf die Features im Datensatz anwenden, wodurch ein Feature-Vektor fester Größe entsteht, der als Eingabe für das logistische Regressionsmodell verwendet werden kann.

Insgesamt ist das Feature-Hashing eine nützliche Technik für den Umgang mit Datensätzen mit einer variablen Anzahl von Features und kann in Kombination mit Algorithmen für maschinelles Lernen wie der logistischen Regression zur Lösung von Klassifizierungsproblemen verwendet werden.

update


Für Daten mit einer variablen Anzahl von Merkmalen können Sie u. a. folgende Darstellungen verwenden:

  1. Merkmalsvektoren mit fester Größe: Wie bereits erwähnt, können Sie mithilfe von Merkmalsauswahlverfahren eine feste Anzahl von Merkmalen aus Ihren Daten auswählen und diese als Merkmalsvektor darstellen.

  2. Dünne Merkmalsvektoren: Anstelle eines dichten Merkmalsvektors können Sie auch einen dünnen Merkmalsvektor verwenden, der nur eine Teilmenge der möglichen Merkmale enthält. Dies kann nützlich sein, wenn Sie eine sehr große Anzahl möglicher Merkmale haben und nur eine kleine Anzahl von ihnen in einer bestimmten Instanz vorhanden ist.

  3. Graphen: Sie können Ihre Daten als Graphen darstellen, wobei jede Instanz als ein Knoten im Graphen dargestellt wird und die Kanten zwischen den Knoten die Beziehungen zwischen den Instanzen darstellen. Dies kann nützlich sein, wenn Sie ein Modell für maschinelles Lernen verwenden, das auf die Verarbeitung von Graphdaten ausgelegt ist, wie z. B. ein Graph-Faltungsnetzwerk.

Auch hier hängt die beste Darstellung von den spezifischen Anforderungen und Beschränkungen Ihres Problems ab. Es ist wichtig, dass Sie die Eigenschaften Ihrer Daten und die Ziele Ihres Projekts berücksichtigen, wenn Sie entscheiden, welche Darstellung für Ihre Bedürfnisse am besten geeignet ist.

 
Aleksey Nikolayev #:

Dann soll er sagen, welche Varianten von Hash-Funktionen für numerische Vektoren verwendet werden.

Im Folgenden werden einige gängige Hash-Funktionen aufgelistet, die zur Abbildung von Ganzzahlen oder anderen Datentypen auf Listen oder andere Datenstrukturen verwendet werden können:

  1. Modulares Hashing: Modulares Hashing ist eine einfache Hash-Funktion, die eine ganze Zahl oder einen anderen Datentyp auf eine Liste oder eine andere Datenstruktur abbildet, indem sie den Modulo des Wertes bei verschiedenen Potenzen einer Primzahl nimmt.

  2. Polynomiales Hashing: Polynomiales Hashing ist eine Hash-Funktion, die eine ganze Zahl oder einen anderen Datentyp auf eine Liste oder eine andere Datenstruktur abbildet, indem sie ein Polynom an einem bestimmten Punkt auswertet. Das Polynom ist durch den Wert und eine Primzahl definiert.

  3. Universelles Hashing: Universelles Hashing ist eine Hash-Funktion, die eine ganze Zahl oder einen anderen Datentyp mit Hilfe einer zufällig generierten Hash-Funktion auf eine Liste oder eine andere Datenstruktur abbildet. Die Hash-Funktion wird aus einer Familie von Hash-Funktionen ausgewählt, die eine geringe Kollisionswahrscheinlichkeit aufweisen.

  4. Hash-Tabellen: Hash-Tabellen sind Datenstrukturen, die eine Hash-Funktion verwenden, um Schlüssel auf Werte abzubilden. Sie können verwendet werden, um eine Ganzzahl oder einen anderen Datentyp einer Liste oder einer anderen Datenstruktur zuzuordnen.

  5. Hash-Maps: Hash-Maps sind Datenstrukturen, die eine Hash-Funktion verwenden, um Schlüssel auf Werte abzubilden. Sie können verwendet werden, um eine ganze Zahl oder einen anderen Datentyp einer Liste oder einer anderen Datenstruktur zuzuordnen.

  6. Hash-Sets: Hash-Sets sind Datenstrukturen, die eine Hash-Funktion verwenden, um einen Satz von Werten zu speichern. Sie können verwendet werden, um eine ganze Zahl oder einen anderen Datentyp auf eine Liste oder eine andere Datenstruktur abzubilden.

Dies sind nur einige Beispiele für Hash-Funktionen und Datenstrukturen, die verwendet werden können, um ganze Zahlen oder andere Datentypen auf Listen oder andere Datenstrukturen abzubilden. Welche Hash-Funktion oder Datenstruktur Sie wählen, hängt von den Eigenschaften Ihrer Daten ab


Hier sind Beispiele für modulare Hash-Funktionen, polynomiale Hash-Funktionen, universelle Hash-Funktionen, Hash-Tabellen, Hash-Maps und Hash-Sets in R:

modular_hash <- function(n, length, p) {
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- n %% p^(i+1)
  }
  lst
}

polynomial_hash <- function(n, length, p) {
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- sum(n * p^(i-1)) %% p^(length+1)
  }
  lst
}

universal_hash <- function(n, length, p) {
  a <- sample(p^length, length, replace=TRUE)
  b <- sample(p^length, length, replace=TRUE)
  lst <- vector("numeric", length)
  for (i in 1:length) {
    lst[i] <- sum(a[i] * n + b[i]) %% p^(length+1)
  }
  lst
}

hash_table <- function(n, length, p) {
  lst <- vector("list", p^length)
 
Maxim Dmitrievsky #:

2 eine allgemeine Übersicht über eine rekursive Funktion, die eine Zahl auf eine numerische Liste beliebiger Länge abbildet

Im Gegenteil - die Eingabe ist eine Liste, die Ausgabe ist eine Zahl. Zum Beispiel machen wir eine Vorhersage auf der Grundlage von Anführungszeichen).

Fragen Sie dann, welche MO-Algorithmen verwendet werden können, um solche Funktionen zu erstellen.

 
Aleksey Nikolayev #:

Im Gegenteil - die Eingabe ist eine Liste, die Ausgabe eine Zahl. Zum Beispiel verwenden wir die Anführungszeichen, um eine Vorhersage zu treffen.)

Fragen Sie dann, welche MO-Algorithmen zur Erstellung solcher Funktionen verwendet werden können.

Wenn Sie eine Liste unterschiedlicher Länge in eine Ganzzahl umwandeln wollen, können Sie eine Hash-Funktion verwenden, die die Liste auf eine Ganzzahl abbildet. Eine Möglichkeit ist die Verwendung einer modularen Hash-Funktion, die die Liste auf eine ganze Zahl abbildet, indem sie die Summe der Summe der Elemente der Liste in verschiedenen Potenzen einer Primzahl moduliert.

def modular_hash(lst: List[int], p: int) -> int:
  h = 0
  for i, x in enumerate(lst):
    h += x * p**i
  return h % M

Diese Funktion nimmt eine Liste lst und eine Primzahl p als Eingabe und gibt einen ganzzahligen Hash-Wert zurück, indem sie die Elemente der Liste in verschiedenen Potenzen von p summiert und das Ergebnis modulo aufnimmt.

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

Einen ähnlichen Ansatz können Sie auch in R verwenden. Hier ist der Code für eine modulare Hash-Funktion in R, die eine Liste auf eine ganze Zahl abbildet:

modular_hash <- function(lst, p, M) {
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + lst[i] * p^(i-1)
  }
  h %% M
}
polynomial_hash <- function(lst, p, M) {
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + lst[i] * p^(i-1)
  }
  h %% M
}

universal_hash <- function(lst, p, M) {
  a <- sample(p^length(lst), length(lst), replace=TRUE)
  b <- sample(p^length(lst), length(lst), replace=TRUE)
  h <- 0
  for (i in 1:length(lst)) {
    h <- h + a[i] * lst[i] + b[i]
  }
  h %% M
}


Hash-Funktionen werden in der Regel nicht mit Algorithmen des maschinellen Lernens erstellt. Vielmehr werden sie in der Regel auf der Grundlage der Eigenschaften der zu hashenden Daten und der Anforderungen der Anwendung entwickelt.

Dennoch können maschinelle Lernalgorithmen verwendet werden, um die Leistung verschiedener Hash-Funktionen zu bewerten oder die Parameter einer Hash-Funktion für eine bestimmte Aufgabe zu optimieren. Sie könnten beispielsweise einen Algorithmus für maschinelles Lernen verwenden, um die Primzahl einer modularen Hash-Funktion zu optimieren oder um die Koeffizienten einer polynomialen Hash-Funktion auszuwählen, die für einen bestimmten Datensatz gut geeignet ist.

Insgesamt werden Algorithmen des maschinellen Lernens zwar in der Regel nicht zur Erstellung von Hash-Funktionen verwendet, sie können jedoch zur Bewertung und Optimierung der Leistung von Hash-Funktionen in bestimmten Anwendungen eingesetzt werden.

 
-

und wie kann ich eine ähnliche Hash-Funktion mit einem maschinellen Lernalgorithmus erstellen?


*

Es ist nicht üblich, eine Hash-Funktion mit Hilfe eines Algorithmus für maschinelles Lernen zu erstellen, da das Hauptziel einer Hash-Funktion darin besteht, Daten so auf eine Darstellung fester Größe abzubilden, dass die Struktur der Daten so weit wie möglich erhalten bleibt. Algorithmen des maschinellen Lernens hingegen werden in der Regel verwendet, um Muster zu lernen oder Vorhersagen auf der Grundlage von Daten zu treffen, und nicht, um Repräsentationen von Daten in fester Größe zu erzeugen.

Wenn Sie dennoch die Möglichkeit der Verwendung eines Algorithmus für maschinelles Lernen zur Erstellung einer Hash-Funktion erkunden möchten, können Sie einen unüberwachten Lernalgorithmus verwenden, um eine kompakte Darstellung der Daten zu lernen, und diese Darstellung dann als Hash-Funktion verwenden.

Sie könnten zum Beispiel einen Autoencoder oder einen Clustering-Algorithmus verwenden, um eine kompakte Darstellung der Daten zu lernen, und diese Darstellung dann als Hash-Funktion verwenden. Dabei wird das maschinelle Lernmodell auf den Daten trainiert und dann das trainierte Modell verwendet, um die Hash-Werte für neue Daten zu erzeugen.

Insgesamt ist es zwar nicht üblich, eine Hash-Funktion mithilfe eines Algorithmus für maschinelles Lernen zu erstellen, aber es ist möglich, mithilfe von maschinellem Lernen eine kompakte Darstellung der Daten zu lernen, die in bestimmten Anwendungen als Hash-Funktion verwendet werden kann.


 
Maxim Dmitrievsky #:

Es folgt eine Liste einiger gängiger Hash-Funktionen, mit denen ganze Zahlen oder andere Datentypen auf Listen oder andere Datenstrukturen abgebildet werden können:

Ich dachte, es würde versprochen, einen Vektor beliebiger Größe auf einen Vektor mit fester Größe abzubilden, aber hier wird eine Zahl auf einen Vektor abgebildet?

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