Zmodyfikowany zestaw danych MFire_Database.xls zawiera czternaście niezależnych zmiennych wejściowych – takich jak temperatura, wiatr, opady, FFMC, ISI, BUI czy DC – oraz jedną zmienną zależną, FWI (Fire Weather Index), stanowiącą wartość wyjściową. Łącznie zestaw zawiera 518 wierszy danych, które są następnie wykorzystywane w procesie uczenia, testowania i walidacji modelu regresji liniowej. Całość operacji realizowana jest za pomocą narzędzia Regression Learner w środowisku MATLAB R2023a lub nowszym.
Proces rozpoczyna się od uruchomienia aplikacji Regression Learner, dostępnej w zakładce App, w kategorii Machine Learning and Deep Learning. Po otwarciu aplikacji należy utworzyć nową sesję, wybierając opcję „From File” i wskazując plik MFire_Database.xls. Po zaimportowaniu danych użytkownik ma możliwość konfiguracji zestawu – ustalenia zmiennej zależnej (FWI) i predyktorów – oraz wybrania odpowiedniej metody walidacji. Preferowaną metodą jest walidacja krzyżowa (cross-validation), która automatycznie dzieli dane na foldery treningowe, weryfikacyjne i testowe, zapewniając realistyczną ocenę wydajności modelu na nieznanych danych.
MATLAB oferuje dwa tryby trenowania modeli regresji: automatyczny i manualny. Tryb automatyczny pozwala użytkownikowi na szybkie przetestowanie różnych algorytmów, gdzie system sam identyfikuje optymalne rozwiązanie na podstawie miar błędu, takich jak Root Mean Square Error (RMSE). W kontekście danych pożarowych, po przeszkoleniu modeli szybkiego trenowania (All Quick-To-Train), algorytm Tree mapping uzyskał najniższy RMSE, jednak w analizie pozostajemy przy modelu regresji liniowej dla celów ilustracyjnych.
Po zakończeniu procesu trenowania można wygenerować wykres Predicted vs. Actual, który wizualizuje zgodność wartości przewidywanych z rzeczywistymi. Im bliżej punkty danych leżą względem linii regresji, tym lepsze dopasowanie modelu. Dodatkowo, dostępne są wykresy reszt (Residuals), które pokazują różnice między wartościami przewidywanymi a rzeczywistymi, umożliwiając ocenę jakości dopasowania modelu. W analizie reszt warto zwrócić uwagę na ewentualne systematyczne odchylenia, które mogą świadczyć o niespełnieniu założeń regresji liniowej.
Po uzyskaniu satysfakcjonujących wyników, sesję można zapisać do pliku .mat, np. jako MLR_Fire_Session, lub wyeksportować sam model do przestrzeni roboczej MATLABa pod nazwą MLR_Fire_Model. Taki zapis pozwala na ponowne wykorzystanie modelu w przyszłości bez konieczności ponownego przechodzenia przez proces trenowania.
Warto jednak pamiętać, że skuteczność regresji liniowej zależy od spełnienia kilku założeń: liniowości relacji między zmiennymi, braku wielokolinearności, homoskedastyczności reszt oraz ich normalności. Niedopasowanie modelu może wynikać z nieliniowego charakteru zjawiska lub z obecności interakcji między zmiennymi, które nie są uchwycone przez prosty model liniowy. W przypadku analiz takich jak modelowanie wskaźnika FWI, który zależy od wielu czynników atmosferycznych i środowiskowych, może być celowe rozważenie bardziej złożonych metod, np. regresji wielomianowej, modeli drzew decyzyjnych lub technik opartych na uczeniu głębokim, szczególnie gdy zauważalne są systematyczne błędy w prognozach modelu liniowego.
Jak skutecznie przeprowadzić predykcję przy użyciu modeli ensemble w MATLABie?
W procesie przewidywania wyników za pomocą modeli ensemble w środowisku MATLAB kluczowe jest zachowanie pełnej spójności nazw i formatów danych między etapem trenowania modelu a etapem jego wykorzystania. W momencie tworzenia nowego wektora wejściowego — przykładowo inputVol — należy zadbać o to, by jego nazwa była identyczna jak ta użyta podczas trenowania modelu. W przeciwnym wypadku MATLAB nie rozpozna danych i zgłosi błąd wykonania.
Co więcej, nawet jeśli nowy wektor wejściowy istnieje jako zwykły wektor numeryczny, powinien on zostać przekonwertowany do formatu tabeli. Tylko wtedy może zostać poprawnie użyty jako argument funkcji predykcyjnej przypisanej do wytrenowanego modelu. Tabela ta zostaje przypisana do zmiennej lokalnej X. Model eksportowany z narzędzia Regression Learner, np. begged_motor_model, przypisywany jest do zmiennej B, a funkcja predykcyjna — predictFcn() — jest wywoływana z X jako argumentem.
Warto tu podkreślić, że predictFcn() to nie to samo co funkcja predict(). W przypadku modeli wytrenowanych przy pomocy aplikacji Regression Learner, predykcja możliwa jest wyłącznie poprzez predictFcn(), która zostaje automatycznie dołączona do struktury modelu. Funkcja predict() jest stosowana wyłącznie wtedy, gdy model został wytrenowany programistycznie, bez użycia GUI.
Po wygenerowaniu predykcji możliwe jest porównanie wyników oryginalnych i przewidywanych. Należy w tym celu narysować wykres bazowy danych wejściowych i wyjściowych wraz z dopasowaną krzywą. Następnie, po użyciu polecenia hold on, nakładamy na wykres przewidywane punkty danych i zaznaczamy je znakiem „+”. Po zakończeniu rysowania wykresu, polecenie hold off kończy tryb wielowarstwowy rysowania, a polecenie grid dodaje siatkę do wykresu. Funkcje label() i legend() umożliwiają oznaczenie osi i wprowadzenie legendy, co czyni wykres bardziej czytelnym.
Podczas analizy efektywności można przeprowadzić ten sam proces, ale z użyciem innego modelu, np. ensemble_motor_model wytrenowanego z użyciem Boosted Trees. Po podstawieniu nowej instancji modelu do zmiennej B i ponownym uruchomieniu projektu, uzyskujemy wykres porównawczy.
Na dalszym etapie warto sięgnąć po funkcje takie jak fitrensemble() i TreeBagger(), które umożliwiają trenowanie modeli regresyjnych opartych na metodzie random forest. Funkcja fitrensemble() jest zoptymalizowana do regresji i domyślnie wykorzystuje strategię baggingu z losowym wyborem predyktorów przy każdym podziale (klasyczny random forest). Pozwala na tworzenie obiektów typu RegressionEnsemble lub RegressionBaggedEnsemble w zależności od konfiguracji.
Aby stworzyć model regresyjny, należy przygotować dane predykcyjne X i odpowiedzi Y, a następnie skorzystać z wywołania:
X to macierz wejściowa, gdzie wiersze reprezentują obserwacje, a kolumny zmienne predykcyjne. Y to wektor odpowiedzi o tej samej liczbie obserwacji. Argumenty Name-Value umożliwiają konfigurację takich elementów jak metoda agregacji (‘Method’), liczba iteracji (‘NumLearningCycles’) czy rodzaj uczonych bazowych (‘Learners’).
Alternatywnie można wykorzystać inne składnie, np.:
W tych wersjach dane mogą być przekazywane jako tabela (Tbl), a odpowiedź jako osobna zmienna bądź też ujęta w formule opisującej zależność regresyjną. Umożliwia to bardziej elastyczne podejście do struktury danych, szczególnie w przypadku złożonych zbiorów.
TreeBagger(), choć również stosowany do budowy modeli ensemble, jest bardziej uniwersalny, bo obsługuje zarówno regresję, jak i klasyfikację. Aby używać go do regresji, należy jawnie określić parę argumentów Name-Value z metodą ‘regression’. Obie funkcje – fitrensemble() i TreeBagger() – pozwalają na realizację strategii random forest, jednak różnią się w implementacji i wynikowej strukturze modelu.
Z punktu widzenia użytkownika MATLABa istotne jest nie tylko zrozumienie różnicy między predict a predictFcn, ale również świadomość, że aplikacje takie jak Regression Learner dodają dodatkowe warstwy abstrakcji. Model eksportowany z takiej aplikacji to nie tylko struktura danych, ale również zestaw funkcji, które muszą być odpowiednio wykorzystywane. Również poprawne przygotowanie danych – w formie tabeli, o właściwych nazwach zmiennych – jest kluczowe dla uniknięcia błędów wykonania.
W kontekście analizy złożonych zjawisk fizycznych czy systemów technicznych, takich jak silniki czy zjawiska
Jak algorytmy Brahmagupdy prowadzą do rozwiązań równań Pell'a?
Jak Ku Klux Klan wpłynął na amerykańską politykę i rasizm w XX wieku?
Jak zoptymalizować koszty i wydajność podczas trenowania dużych modeli językowych?
Jak stworzyć mapę drogową do sukcesu w implementacji Microsoft Dynamics 365 Business Central?
Jak wizerunki bohaterów Ninjago odzwierciedlają ich charakter i umiejętności

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский