Jak przewidzieć cenę akcji za pomocą SVM

Jak przewidzieć cenę akcji za pomocą SVM
Uczenie maszynowe to aplikacja sztucznej inteligencji, która poprawia sposób, w jaki świat działa w każdej dziedzinie. U podstaw jest algorytm lub model, który obserwuje wzorce w danym zestawie danych, a następnie przewiduje wyuczone wzorce danych ogólnych. W kategoriach Laymana jest to pomysł, że maszyny uczą się wzoru i dostosowują się poprzez doświadczenie w podejmowaniu dokładnych i powtarzalnych decyzji. Wektorowa maszyna wsparcia jest popularnym algorytmem ML, którego użyjemy dzisiaj do przewidywania cen akcji. Istnieje kilka zalet tego modelu, który omówimy i przejdziemy przez wdrożenie podejścia.

Co to jest rozrost?

Rozrost w przestrzeni N-wymiarowej jest podprzestrzenią (N-1)-wymiarową; Jeśli przestrzeń jest trójwymiarowa, wówczas jego przerost są dwuparazowymi płaszczyznami. Przestrzeń n-wymiarowa jest zawsze rozciągana przez zestaw n liniowo niezależnych wektorów i zawsze można znaleźć n wzajemnie ortogonalne wektory obejmujące przestrzeń. Które mogą, ale nie muszą być w definicji skończonej przestrzeni wektorowej, ale jest to fakt, dla którego dowód można znaleźć w prawie każdym podręczniku algebry liniowej.

W rezultacie rozrost w przestrzeni N jest rozpowszechniany przez liniowe wektory niezależne N-1 i ma wektor nth (nie w płaszczyźnie) ortogonalny.

Co to jest maszyna wektorowa wsparcia?

Maszyna wektorowa wsparcia (SVM) to nadzorowany algorytm klasyfikacji binarnej uczenia maszynowego. Biorąc pod uwagę zestaw dwóch rodzajów punktów w wymiarach N, SVM generuje rozrost wymiarowy (N-1), aby podzielić te punkty na dwie grupy, jak pokazano poniżej:

Na powyższym rysunku SVM wybierze czerwoną linię jako najlepszy rozrost oddzielający klasy niebieskie i zielone.

Załóżmy, że masz dwa rodzaje punktów w płaszczyźnie, które są liniowo rozdzielone. SVM znajdzie linię prostą, która dzieli te punkty na dwa typy i jest jak najdalej od nich wszystkich. Ta linia jest znana jako przerost i został wybrany, aby wartości odstające nie były ignorowane, a punkty różnych klas są tak daleko, jak to możliwe. Jeśli nie można oddzielić punktów, SVM używa transformacji jądra w celu zwiększenia wymiarów punktów.

Przypadek omówiony powyżej był dość prosty, ponieważ dane były oddzielne liniowo - jak widzieliśmy, mogliśmy narysować linię prostą, aby oddzielić czerwone i niebieskie typy punktów.

Co jeśli dane nie są liniowo rozdzielone? Nie będziemy w stanie oddzielić klas, rysując prosty hiperplan. Aby rozwiązać to wyzwanie, dodamy trzeci wymiar do zestawu danych. Do tej pory mieliśmy dwa wymiary: x i y. Tworzymy nowy wymiar i nakazujemy, aby obliczał go w sposób wygodny dla nas: Z = x2 + y2.

To stworzy trójwymiarową przestrzeń z poprzednich punktów. Możemy wywnioskować z poniższej rysunku, że początkowo punkty nie były liniowo rozdzielne, ale po zastosowaniu funkcji jądra łatwo oddzieliliśmy punkty danych. Dostępnych jest wiele funkcji jądra, które możesz wybrać zgodnie z przypadkiem użycia.

Zalety SVM

  1. Dobry do danych, w których liczba wymiarów jest większa niż liczba punktów danych.
  2. Dobry zarówno do klasyfikacji, jak i regresji.
  3. Jest zoptymalizowany w kosmosie.
  4. Obsługuje wartości odstające.

Wady SVM

  1. Trudno jest wybrać „dobre” funkcję jądra.
  2. Duże zestawy danych wymagają długiego czasu treningu.
  3. Ostateczny model jest trudny do zrozumienia i interpretacji, o zmiennych wagach i indywidualnym uderzeniu.
  4. Nie możemy wykonywać małych kalibracji do modelu, ponieważ ostateczny model nie jest łatwo widoczny, co utrudnia włączenie naszej logiki biznesowej.

Kierunki ceny akcji prognozy za pomocą SVM

Prognozy rynku akcji są dokonywane przez przewidywanie przyszłej wartości akcji spółki lub innego instrumentu finansowego obrotu na giełdzie przy użyciu analizy podstawowej lub technicznej.

Zaletą prognozowania giełdowego jest to, że pozwala on mądrze i zyskujesz.

Pierwszym zadaniem tej implementacji jest import wszystkich bibliotek i modułów w naszym skrypcie. Sklearn zostanie wykorzystany do budowy modelu, pandy będą używane do obsługi ramek danych, a Numpy jest przeznaczona na algebrę liniową. Poniżej znajduje się wymagany import:

ze Sklearn.SVM Import SVC
ze Sklearn.Metryki importowe dokładność_score
importować pandy jako PD
importować Numpy jako NP

Następnym zadaniem jest odczytanie zestawu danych z pliku. Plik będzie w pamięci zewnętrznej i możesz pobrać zestaw danych stąd.

# Odczytanie pliku CSV z zewnętrznej pamięci
df = pd.read_csv („Reliance.CSV ')

Przypisz DATETIME jako indeks ramki danych i upuść kolumnę „Data”

# Data tworzenia jako kolumna indeksu
df.indeks = pd.To_DateTime (df ['data'])
# Upuść kolumnę o nazwie „Data”
df = df.upuść (['data'], axis = 'kolumny')

Przypisz funkcje wejściowe do zmiennej

# Utwórz zmienne predykcyjne
df [„Open-close”] = df.Otwarte - DF.Zamknąć
df ['high-low'] = df.High - DF.Niski
# Przechowuj wszystkie zmienne predykcyjne w zmiennej x
X = df [[„Open-Close”, „wysoko niski”]]
Drukuj (x.głowa())

Przypisz kolumnę docelową do innej zmiennej

# Zmienne docelowe
y = np.gdzie (df [„blisko”].Shift (-1)> df [„zamknij”], 1, 0)
Drukuj (y)

Podziel zestaw danych na próbki pociągu i testu. Próbki pociągów zbudują model, a próbki testowe zidentyfikują dokładność modelu.

split = int (0.9*Len (DF))
# Zestaw danych pociągu
X_train = x [: split]
y_train = y [: split]
# Zestaw danych testowych
X_test = x [split:]
y_test = y [split:]

Utwórz teraz model SVM

# Wsparcie klasyfikator wektorowy
model = svc ().fit (x_train, y_train)

Dokładność tego modelu można znaleźć za pomocą różnych wskaźników.

Aby przewidzieć sygnał zapasów, użyj poniższej metody.

DF ['sig'] = model.Przewiduj (x)

Wniosek

W tym artykule przeprowadzono dyskusję, zalety i przypadki użycia maszyn wektorowych wsparcia. Jest to popularny i efektywny kosmiczny algorytm zarówno dla zadań klasyfikacyjnych, jak i regresji, i wykorzystuje zasady geometryczne do rozwiązywania naszych problemów. Później wdrożyliśmy również prognozę kierunku ceny akcji za pomocą algorytmu SVM. Prognozowanie cen akcji jest niezwykle pomocne w świecie biznesu, a kiedy stosujemy automatyzację do tego, tworzy więcej szumu dla tego problemu.