niedziela, 4 lutego 2024

Analiza sentymentów danych giełdowych - dalsze omawianie warstw

Ten wpis jest kontynuacją: https://kamilkondrat.blogspot.com/2024/02/analiza-sentymentow-danych-giedowych.html

Ta praca odzwierciedla zainteresowanie autora analizą finansową i wykorzystaniem narzędzi informatycznych w jej realizacji. Niniejszy blog nie ma na celu dostarczania porad finansowych, lecz stanowi konstruktywne podejście autora do dzielenia się wiedzą. Autor widzi w tym sposobność do rozwijania swoich umiejętności i zachęcania do wzajemnej dyskusji. Należy pamiętać, że wnioski wynikające z analiz prezentowanych na tym blogu nie powinny być bezpośrednio stosowane do podejmowania decyzji finansowych. Nawet jeśli analizy są dokładne, stanowią one tylko fragment potrzebnych informacji do podjęcia w pełni świadomej decyzji. Brak szerszego kontekstu, w którym znajduje się potencjalny inwestor lub decydent, może prowadzić do niepełnych wniosków.

import tensorflow as tf
from tensorflow.keras.layers import Bidirectional, Conv1D, Dense, 
	Dropout, Embedding, Flatten, Input, LSTM, MaxPool1D
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.preprocessing.text import one_hot, Tokenizer
from tensorflow.keras.utils import to_categorical

"Embedding" - służy do zamiany słów na wektory numeryczne. Prościej mówiąc tekst jest prezentowany jako liczba, to pozwala na wydajniejszą analizę danych. To jest bardzo ważny element, gdyż jak wiemy moc komputerów i sztucznej inteligencji łączy się przede wszystkim ze zdolnością obliczeniową. Przekształcanie tekstu na liczby otwiera nas na skorzystanie z tego dobrodziejstwa.

"Flatten" - przekształca dane wielowymiarowe na dane jednowymiarowe. A dokładnie tensory wielowymiarowe na przykład trójwymiarowe jak obrazy (3 wymiary obrazu: wysokość, szerokość, barwa piksela), na tensory jednowymiarowe, czyli wektory numeryczne. W Pythonie wektor numeryczny może być reprezentowany listą liczb całkowitych array z modułu numpy: vector = np.array([1, 2, 3, 4, 5]). To raczej nic skomplikowanego.

Celem jest uzyskanie takiej reprezentacji danych, która najlepiej wpasuje się jako dane wejściowe do trenowanego modelu, zapewniając najbardziej satysfakcjonujące wyniki przy wykorzystaniu struktury sieci neuronowych.

"Input" - obiekt pozwalający na definiowanie kształtu i typu danych wejściowych. W kontekście NLP przykładem będą trzy zdania o 3, 5 i 7 słowach. Optymalizacją przy użyciu "Input" będzie przełożenie tych trzech zdań na stałą strukturę sekwencji 7 słów.

LSTM - w kontekście NLP, warstwa "LSTM " umożliwia zapamiętywanie i analizę sekwencji danych, co jest kluczowe przy przetwarzaniu dłuższych tekstów. Dzięki "LSTM", sztuczna inteligencja może efektywnie przetwarzać informacje zdanie po zdaniu, zachowując przy tym kluczowe informacje z poprzednich fragmentów tekstu. 

To pozwala na głębsze zrozumienie kontekstu i wyłapywanie zależności między elementami tekstu, nawet jeśli są one od siebie oddalone. Takie możliwości LSTM sprawiają, że sieci te są wyjątkowo przydatne w analizie długich tekstów, gdzie konieczne jest uchwycenie szerszego kontekstu.

MaxPool1D - pozwala na ograniczenie liczby cezów/tokenów/słów w analizie sekwencji zdań do tych, które są najistotniejsze z punktu widzenia wyników analizy danych, dzięki czemu możemy zwiększyć generalizację i zapobiec przeuczeniu modelu.

Tym krótkim wpisem zamknę kwestię warstw. Kolejny wpis zacznę od odniesienia się do obiekty "Model."

Brak komentarzy:

Prześlij komentarz

Analiza sentymentów - wpisy na mediach społecznościowych (podział danych)

Ten wpis zaczniemy od stworzenia DataFrame z danymi treningowymi train_df = pd.read_csv('train.csv', encoding='ISO-8859-1')....