Wie man den Aktienkurs mit SVM vorhersagt

Wie man den Aktienkurs mit SVM vorhersagt
Maschinelles Lernen ist eine Anwendung für künstliche Intelligenz, die die Art und Weise verbessert, wie die Welt in jedem Bereich arbeitet. Im Kern ist es ein Algorithmus oder Modell, das Muster in einem bestimmten Datensatz beobachtet und dann die gelernten Muster von allgemeinen Daten vorhersagt. In Laiens Begriffen ist es die Idee, dass Maschinen ein Muster lernen und sich durch Erfahrung anpassen, um genaue und wiederholbare Entscheidungen zu treffen. Die Support Vector Machine ist ein beliebter ML -Algorithmus, den wir heute verwenden werden, um die Aktienkurse vorherzusagen. Dieses Modell hat mehrere Vorteile, die wir diskutieren und durch die Implementierung des Ansatzes gehen werden.

Was ist eine Hyperebene?

Eine Hyperebene im n-dimensionalen Raum ist ein (N-1) -Dimensionaler Unterraum; Wenn der Raum dreidimensional ist, sind seine Hyperebenen die zweidimensionalen Ebenen. Ein n-dimensionaler Raum wird immer von einer Reihe von n linear unabhängigen Vektoren überspannt, und es ist immer möglich, n gegenseitig orthogonale Vektoren zu finden, die den Raum überspannen. Dies kann in der Definition eines endlich-dimensionalen Vektorraums liegen oder nicht, aber es ist eine Tatsache, für die Beweise in nahezu jedem linearen Bachelor-Algebra-Lehrbuch zu finden sind.

Infolgedessen wird eine Hyperebene im N-Raum von n-1 linear unabhängigen Vektoren überspannt und verfügt über einen n-ten Vektor (nicht in der Ebene) orthogonal dazu.

Was ist eine Stützvektormaschine?

Die Support Vector Machine (SVM) ist ein überwachtes Binärklassifizierungsalgorithmus für maschinelles Lernen. Bei einer Reihe von zwei Arten von Punkten in N-Dimensionen erzeugt SVM ein (n-1) dimensionales Hyperplane, um diese Punkte in zwei Gruppen zu unterteilen, wie unten gezeigt:

In der obigen Abbildung wählt SVM die rote Linie als die beste Hyperebene, die die blauen und grünen Klassen trennt.

Nehmen wir an, Sie haben zwei Arten von Punkten in einer Ebene, die linear trennbar sind. SVM findet eine gerade Linie, die diese Punkte in zwei Arten unterteilt und so weit wie möglich von allen entfernt ist. Diese Linie ist als Hyperebene bekannt und wurde ausgewählt, damit Ausreißer nicht ignoriert werden und Punkte verschiedener Klassen so weit wie möglich voneinander entfernt sind. Wenn die Punkte nicht getrennt werden können, verwendet SVM eine Kernel -Transformation, um die Dimensionen der Punkte zu erhöhen.

Der oben diskutierte Fall war ziemlich einfach, da die Daten linear trennbar waren - wie wir sahen, konnten wir eine gerade Linie zeichnen, um rote und blaue Arten von Punkten zu trennen.

Was ist, wenn die Daten nicht linear trennbar sind? Wir können die Klassen nicht trennen, indem wir eine gerade Hyperebene zeichnen. Um diese Herausforderung anzugehen, werden wir dem Datensatz eine dritte Dimension hinzufügen. Bis jetzt hatten wir zwei Dimensionen: x und y. Wir erstellen eine neue Dimension und das Mandat, dass sie auf eine Weise berechnet wird, die für uns bequem ist: z = x2 + y2.

Dies erzeugt einen dreidimensionalen Raum aus den vorherigen Punkten. Wir können aus der folgenden Abbildung schließen, dass die Punkte zunächst nicht linear trennbar waren, aber nachdem wir die Kernelfunktion angewendet hatten, haben wir die Datenpunkte leicht getrennt. Es gibt viele Kernelfunktionen, die Sie entsprechend Ihrem Anwendungsfall auswählen können.

Vorteile von SVM

  1. Gut für Daten, bei denen die Anzahl der Dimensionen mehr als die Anzahl der Datenpunkte ist.
  2. Gut für Klassifizierung und Regression.
  3. Es ist räumlich optimiert.
  4. Es kümmert sich um Ausreißer.

Nachteile von SVM

  1. Es ist schwierig, eine „gute“ Kernelfunktion auszuwählen.
  2. Große Datensätze erfordern eine lange Trainingszeit.
  3. Das endgültige Modell ist schwer zu verstehen und zu interpretieren, mit variablen Gewichten und individuellen Auswirkungen.
  4. Wir können das Modell nicht kleine Kalibrierungen durchführen, da das endgültige Modell nicht leicht sichtbar ist, was es schwierig macht, unsere Geschäftslogik zu integrieren.

Aktienkursanweisungen Vorhersage mit SVM

Vorhersagen von Aktienmarkt.

Der Vorteil der Vorhersage der Aktienmarkt.

Die erste Aufgabe für diese Implementierung besteht darin, alle Bibliotheken und Module in unserem Skript zu importieren. Sklearn wird verwendet, um das Modell zu erstellen, Pandas werden zum Umgang mit Datenrahmen verwendet, und Numpy ist für lineare Algebra. Im Folgenden finden Sie die erforderlichen Importe, die wir tun:

von Sklearn.SVM Import SVC
von Sklearn.Metriken importieren Genauigkeit_Score
Pandas als PD importieren
Numph als NP importieren

Die nächste Aufgabe besteht darin, den Datensatz aus der Datei zu lesen. Die Datei befindet sich im externen Speicher und Sie können den Datensatz hier herunterladen.

# Lesen Sie die CSV -Datei aus dem externen Speicher
df = pd.Read_csv ('Reliance.CSV ')

Weisen Sie die DateTime als Index des Datenrahmens zu und lassen Sie die Spalte „Datum“ fallen

# Datum als Indexspalte machen
df.INDEX = PD.to_datetime (df ['Datum'])
# Die Spalte mit dem Namen "Date" fallen lassen
df = df.Drop (['Datum'], Axis = 'Spalten')

Weisen Sie die Eingangsfunktionen einer Variablen zu

# Prädiktorvariablen erstellen
df ['Open-close'] = df.Offen - df.Schließen
df ['High-Low'] = df.Hoch - df.Niedrig
# Alle Prädiktorvariablen in einer Variablen x speichern
X = df [['Open-close', 'High-Low']]]
Druck (x.Kopf())

Weisen Sie einer anderen Variablen eine Zielspalte zu

# Zielvariablen
y = np.Wo (df ['nah'].Shift (-1)> df ['close'], 1, 0)
Druck (y)

Teilen Sie den Datensatz in Zug- und Testproben auf. Die Zugproben bauen das Modell auf, während die Testproben die Genauigkeit des Modells identifizieren.

split = int (0.9*len (df))
# Zugdatensatz
X_train = x [: split]
y_train = y [: split]
# Testdatensatz
X_test = x [Split:]
y_test = y [Split:]

Erstellen Sie jetzt das SVM -Modell

# Support Vector -Klassifikator
Modell = SVC ().fit (x_train, y_train)

Sie können die Genauigkeit dieses Modells anhand verschiedener Metriken finden.

Verwenden Sie die folgende Methode, um das Signal der Aktie vorherzusagen, um die folgende Methode zu verwenden.

df ['sig'] = Modell.vorhersagen (x)

Abschluss

Dieser Artikel wurde durch die Diskussion, Vorteile und Anwendungsfälle von Support -Vektormaschinen durchgeführt. Es ist ein beliebter und platzeffizienter Algorithmus für Klassifizierungs- und Regressionsaufgaben und verwendet geometrische Prinzipien, um unsere Probleme zu lösen. Später haben wir auch die Vorhersage der Aktienkursanleitung mit dem SVM -Algorithmus implementiert. Aktienkursvorhersage ist in der Geschäftswelt äußerst hilfreich. Wenn wir dafür Automatisierung einsetzen, schafft es mehr Hype für dieses Problem.