Inhaltsverzeichnis
Einführung
Daten
Explorative Datenanalyse (EDA)
Modellierung
SARIMA
XGBoost
CNN-LSTM
结果对比
总结
Heim Technologie-Peripheriegeräte KI Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Apr 24, 2023 am 08:40 AM
机器学习 时间序列预测

Verwendung statistischer Tests und maschinellen Lernens zur Analyse und Vorhersage von Leistungstests und -vergleichen bei der Solarstromerzeugung.

In diesem Artikel werden Techniken zur Erzielung greifbarer Werte aus Datensätzen mithilfe von Hypothesentests, Feature-Engineering, Zeitreihenmodellierungsmethoden und mehr erörtert. Ich werde mich auch mit Themen wie Datenlecks und Datenaufbereitung für verschiedene Zeitreihenmodelle befassen und Vergleichstests von drei gängigen Zeitreihenprognosen durchführen.

Einführung

Zeitreihenvorhersage ist ein häufig untersuchtes Thema. Hier verwenden wir die Daten von zwei Solarkraftwerken, um deren Gesetze zu untersuchen und Modellierungen durchzuführen. Gehen Sie diese Probleme an, indem Sie sie zunächst in zwei Fragen zusammenfassen:

  1. Ist es möglich, leistungsschwache Solarmodule zu identifizieren?
  2. Ist es möglich, die Solarstromerzeugung für zwei Tage vorherzusagen?

Bevor wir mit der Beantwortung dieser Fragen fortfahren, wollen wir zunächst verstehen, wie Solarkraftwerke Strom erzeugen.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Das obige Diagramm beschreibt den Erzeugungsprozess von Solarmodulen bis zum Netz. Durch den photoelektrischen Effekt wird Sonnenenergie direkt in elektrische Energie umgewandelt. Wenn Materialien wie Silizium (das häufigste Halbleitermaterial in Solarpaneelen) Licht ausgesetzt werden, werden Photonen (subatomare Teilchen elektromagnetischer Energie) absorbiert und freie Elektronen freigesetzt, wodurch Gleichstrom (DC) entsteht. Mithilfe eines Wechselrichters wird Gleichstrom in Wechselstrom (AC) umgewandelt und ins Netz eingespeist, wo er an Haushalte verteilt werden kann.

Daten

Die Rohdaten bestehen aus zwei durch Kommas getrennten Wertdateien (CSV) für jedes Solarkraftwerk. Ein Dokument zeigt den Stromerzeugungsprozess und das andere die von den Sensoren des Solarparks aufgezeichneten Messungen. Die beiden Datensätze für jedes Solarkraftwerk wurden in einem Pandas-DF organisiert.

Daten von Solarkraftwerk 1 (SP1) und Solarkraftwerk 2 (SP2) wurden vom 15. Mai 2020 bis 18. Juni 2020 alle 15 Minuten erfasst. Sowohl SP1- als auch SP2-Datensätze enthalten dieselben Variablen.

  • Datum Uhrzeit – ein Intervall von 15 Minuten
  • Umgebungstemperatur – die Temperatur der Luft um das Modul herum
  • Modultemperatur – die Temperatur des Moduls
  • Bestrahlung – die Strahlung auf dem Modul
  • DC-Leistung (kW) - DC
  • AC Leistung (kW) - AC
  • Tagesertrag – Gesamte tägliche Stromerzeugung
  • Gesamtertrag – Kumulierte Leistung des Wechselrichters
  • Anlagen-ID – Eindeutige Identifikation des Solarkraftwerks
  • Modul-ID – Eindeutige Identifikation von Jedes Modul

Wettersensoren werden verwendet, um Umgebungstemperatur, Modultemperatur und Strahlung an jeder Solaranlage zu erfassen.

Für diesen Datensatz ist die Gleichstromleistung die abhängige Variable (Zielvariable). Unser Ziel ist es, leistungsschwache Solarmodule zu finden.

Zwei unabhängige DFS für Analyse und Vorhersage. Der einzige Unterschied besteht darin, dass die für die Prognose verwendeten Daten auf stündliche Intervalle umgerechnet werden, während der für die Analyse verwendete Datenrahmen 15-Minuten-Intervalle enthält.

Zuerst entfernen wir die Pflanzen-ID, da sie keinen Mehrwert für den Versuch bietet, die obige Frage zu beantworten. Modul-IDs werden ebenfalls aus dem Vorhersagedatensatz entfernt. Die Tabellen 1 und 2 zeigen Datenbeispiele.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Bevor wir die Daten weiter analysierten, haben wir einige Annahmen über das Solarkraftwerk getroffen, darunter:

  • Das Datenerfassungsinstrument ist fehlerfrei
  • Das Modul wird regelmäßig gereinigt (ohne Berücksichtigung der Auswirkungen von Wartung)
  • Zwei Solaranlagen. Es gibt keine Okklusionsprobleme rund um das Kraftwerk

Explorative Datenanalyse (EDA)

Für Neulinge in der Datenwissenschaft ist EDA ein entscheidender Schritt zum Verständnis der Daten durch die Darstellung von Visualisierungen und die Durchführung statistischer Tests. Wir können zunächst die Leistung jedes Solarkraftwerks beobachten, indem wir Gleich- und Wechselstrom für SP1 und SP2 grafisch darstellen.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

SP1 zeigt eine um eine Größenordnung höhere Gleichstromleistung als sp2. Unter der Annahme, dass die von SP1 gesammelten Daten korrekt sind und das zum Aufzeichnen der Daten verwendete Instrument nicht fehlerhaft ist, deutet dies darauf hin, dass der Wechselrichter in SP1 eingehender untersucht werden muss

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

durch Aggregieren von Wechsel- und Gleichstrom durch die tägliche Häufigkeit von Für jedes Modul zeigt Abbildung 3 den Wechselrichterwirkungsgrad aller Module in SP1. Der Wirkungsgrad von Solarwechselrichtern sollte nach Fachkenntnissen zwischen 93 und 96 % liegen. Da der Wirkungsgradbereich für alle Module zwischen 9,76 % und 9,79 % liegt, verdeutlicht dies die Notwendigkeit, die Leistung des Wechselrichters zu untersuchen und festzustellen, ob er ausgetauscht werden muss.

Da bei SP1 Probleme mit dem Wechselrichter auftraten, erfolgte eine weitere Analyse nur zu SP2.

Obwohl diese kurze Analyse das Ergebnis einer längeren Untersuchung des Wechselrichters ist, beantwortet sie nicht die Hauptfrage der Bestimmung der Leistung von Solarmodulen.

Da der Wechselrichter des SP2 ordnungsgemäß funktioniert, können etwaige Anomalien identifiziert und untersucht werden, indem tiefer in die Daten eingetaucht wird.

Abbildung 4 zeigt den Zusammenhang zwischen Modultemperatur und Umgebungstemperatur. Es gibt Fälle, in denen die Modultemperatur extrem hoch ist.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Das scheint zwar unserem Wissen zu widersprechen, aber es zeigt sich, dass hohe Temperaturen einen negativen Einfluss auf Solarmodule haben. Wenn Photonen mit Elektronen in einer Solarzelle in Kontakt kommen, setzen sie freie Elektronen frei. Bei höheren Temperaturen befinden sich jedoch bereits mehr Elektronen in einem angeregten Zustand, was die Spannung verringert, die die Module erzeugen können, und damit die Effizienz verringert.

Unter Berücksichtigung dieses Phänomens zeigt Abbildung 5 unten die Modultemperatur und die Gleichstromleistung für SP2 (Datenpunkte, bei denen die Umgebungstemperatur niedriger als die Modultemperatur ist, und Tageszeiten, zu denen das Modul mit einer niedrigeren Zahl läuft, wurden gefiltert Datenverzerrung verhindern).

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

In Abbildung 5 stellt die rote Linie die Durchschnittstemperatur dar. Hier sehen Sie, dass es einen klaren Wendepunkt und Anzeichen einer Stagnation der Gleichstromversorgung gibt. Beginnt bei ~52°C ein Plateau zu erreichen. Um Solarmodule mit suboptimaler Leistung zu finden, wurden alle Zeilen entfernt, in denen Modultemperaturen über 52 °C auftraten.

Abbildung 6 unten zeigt die Gleichstromleistung jedes Moduls in SP2 im Laufe eines Tages. Dies entspricht grundsätzlich den Erwartungen und die Stromerzeugung ist zur Mittagszeit größer. Doch es gibt noch ein weiteres Problem: In Spitzenbetriebszeiten ist die Stromerzeugung gering. Es fällt uns schwer, die Gründe für diese Situation zusammenzufassen, da die Wetterbedingungen an diesem Tag möglicherweise schlecht sind oder der SP2 möglicherweise routinemäßig gewartet werden muss usw.

In Abbildung 6 gibt es auch Anzeichen für Module mit geringer Leistung. Sie können im Diagramm als Module (einzelne Datenpunkte) identifiziert werden, die vom nächstgelegenen Cluster abweichen.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Um festzustellen, welche Module leistungsschwach sind, können wir statistische Tests durchführen und dabei die Leistung jedes Moduls mit der anderer Module vergleichen, um die Leistung zu ermitteln.

Alle 15 Minuten ist die Verteilung der Gleichstromversorgungen verschiedener Module gleichzeitig eine Normalverteilung. Durch Hypothesentests kann festgestellt werden, welche Module eine schlechte Leistung erbringen. Die Anzahl gibt an, wie oft ein Modul mit einem p-Wert

Abbildung 7 zeigt in absteigender Reihenfolge, wie oft jedes Modul im gleichen Zeitraum statistisch signifikant niedriger war als andere Module.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Aus Abbildung 7 wird deutlich, dass das Modul „Quc1TzYxW2pYoWX“ problematisch ist. Diese Informationen können den zuständigen SP2-Mitarbeitern zur Untersuchung der Ursache zur Verfügung gestellt werden.

Modellierung

Nachfolgend beginnen wir mit der Modellierung und dem Vergleich mithilfe von drei verschiedenen Zeitreihenalgorithmen: SARIMA, XGBoost und CNN-LSTM.

Für alle drei Modelle können Sie den nächsten Datenpunkt mit Predict vorhersagen. Die Walk-Forward-Validierung ist eine Technik, die bei der Zeitreihenmodellierung verwendet wird, da Vorhersagen mit der Zeit ungenauer werden. Ein praktischerer Ansatz besteht daher darin, das Modell mit tatsächlichen Daten neu zu trainieren, sobald diese verfügbar sind.

Die Daten müssen vor der Modellierung genauer untersucht werden. Abbildung 8 zeigt die Korrelations-Heatmap für alle Features im SP2-Datensatz. Die Heatmap zeigt die starke Korrelation der abhängigen Größe DC-Leistung mit Modultemperatur, Einstrahlung und Umgebungstemperatur. Diese Eigenschaften können bei der Vorhersage eine wichtige Rolle spielen.

In der Wärmekarte unten weist Wechselstrom einen Pearson-Korrelationskoeffizienten von 1 auf. Um Datenlecks vorzubeugen, trennen wir die Daten von der Gleichstromversorgung.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

SARIMA

Seasonal Autoregressive Integrated Moving Average (SARIMA) ist eine univariate Zeitreihen-Prognosemethode. Da die Zielvariable Anzeichen eines 24-Stunden-Zyklus aufweist, ist SARIMA eine effiziente Modellierungsoption, da es saisonale Effekte berücksichtigt. Dies kann in der saisonalen Aufschlüsselungstabelle unten beobachtet werden.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Der SARIMA-Algorithmus erfordert, dass die Daten stationär sind. Es gibt verschiedene Methoden, um zu testen, ob Daten stationär sind, z. B. statistische Tests (erweiterter Dickey-Fowler-Test), zusammenfassende Statistiken (Vergleich von Mittelwerten/Varianzen verschiedener Teile der Daten) und die visuelle Analyse der Daten. Es ist wichtig, vor der Modellierung mehrere Tests durchzuführen.

Der Augmented Dickey-Fuller (ADF)-Test ist ein „Einheitswurzeltest“, der verwendet wird, um zu bestimmen, ob eine Zeitreihe stationär ist. Im Grunde handelt es sich um einen statistischen Signifikanztest, bei dem eine Nullhypothese und eine Alternativhypothese vorliegen und auf der Grundlage des resultierenden p-Werts eine Schlussfolgerung gezogen wird.

Nullhypothese: Zeitreihendaten sind instationär.

Alternativhypothese: Zeitreihendaten sind stationär.

Wenn in unserem Beispiel der p-Wert ≤ 0,05 ist, können wir die Nullhypothese ablehnen und bestätigen, dass die Daten keine Einheitswurzel haben.

 from statsmodels.tsa.stattools import adfuller
 
 result = adfuller(plant2_dcpower.values)
 
 print('ADF Statistic: %f' % result[0])
 print('p-value: %f' % result[1])
 print('Critical Values:')
 for key, value in result[4].items():
print('t%s: %.3f' % (key, value))
Nach dem Login kopieren

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Aus dem ADF-Test beträgt der p-Wert 0,000553, < 0,05. Basierend auf dieser Statistik können die Daten als stabil angesehen werden. Ein Blick auf Abbildung 2 (oberes Diagramm) zeigt jedoch deutliche Anzeichen von Saisonalität (bei Zeitreihendaten, die als stationär gelten, sollte es keine Anzeichen von Saisonalität und Trend geben), was darauf hindeutet, dass die Daten instationär sind. Daher ist es wichtig, mehrere Tests durchzuführen. < 0.05。根据这一统计数据,可以认为该数据是稳定的。然而,查看图2(最上面的图),有明显的季节性迹象(对于被认为是平稳的时间序列数据,不应该有季节性和趋势的迹象),这说明数据是非平稳的。因此,运行多个测试非常重要。

Um die abhängige Variable mit SARIMA zu modellieren, muss die Zeitreihe stationär sein. Wie in Abbildung 9 (erstes und drittes Diagramm) dargestellt, weist Gleichstrom deutliche Anzeichen von Saisonalität auf. Nehmen Sie die erste Differenz [t-(t-1)], um die saisonale Komponente zu entfernen, wie in Abbildung 10 dargestellt, da sie einer Normalverteilung ähnelt. Die Daten sind nun stationär und für den SARIMA-Algorithmus geeignet.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

SARIMAs Hyperparameter umfassen p (autoregressive Ordnung), d (Differenzordnung), q (gleitende Durchschnittsordnung), p (saisonale autoregressive Ordnung), d (saisonale Differenzordnung), q (saisonale gleitende Durchschnittsordnung), m (Zeitschritt des saisonalen Zyklus), Trend (deterministischer Trend).

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Abbildung 11 zeigt die Diagramme der Autokorrelation (ACF), der partiellen Autokorrelation (PACF) und der saisonalen ACF/PACF. Das ACF-Diagramm zeigt die Korrelation zwischen einer Zeitreihe und ihrer verzögerten Version. PACF zeigt eine direkte Korrelation zwischen einer Zeitreihe und ihrer verzögerten Version. Der blau schattierte Bereich stellt das Konfidenzintervall dar. SACF und SPACF können berechnet werden, indem die saisonale Differenz (m) aus den Originaldaten herangezogen wird, in diesem Fall 24, da es im ACF-Diagramm einen offensichtlichen 24-Stunden-Saisoneffekt gibt.

Nach unserer Intuition kann der Startpunkt der Hyperparameter aus den ACF- und PACF-Diagrammen abgeleitet werden. Beispielsweise zeigen sowohl ACF als auch PACF einen allmählichen Abwärtstrend, d. h. die autoregressive Ordnung (p) und die Ordnung des gleitenden Durchschnitts (q) sind beide größer als 0. p und p können bestimmt werden, indem man sich die PCF- bzw. SPCF-Diagramme ansieht und die Anzahl der Verzögerungen zählt, die statistisch signifikant werden, bevor der Verzögerungswert unbedeutend wird. Ebenso sind q und q in ACF- und SACF-Diagrammen zu finden.

Die Differenzordnung (d) kann durch die Anzahl der Differenzen bestimmt werden, die die Daten stationär machen. Die Reihenfolge der saisonalen Differenz (D) wird anhand der Anzahl der Differenzen geschätzt, die erforderlich sind, um die saisonale Komponente aus der Zeitreihe zu entfernen.

Sie können diesen Artikel für diese Hyperparameterauswahl lesen: https://arauto.readthedocs.io/en/latest/how_to_choose_terms.html

Sie können auch die Rastersuchmethode zur Hyperparameteroptimierung verwenden, basierend auf dem minimalen mittleren quadratischen Fehler (MSE) ) Wählen Sie die optimalen Hyperparameter aus, einschließlich p = 2, d = 0, q = 4, p = 2, d = 1, q = 6, m = 24, Trend = 'n' (kein Trend).

from time import time
 from sklearn.metrics import mean_squared_error
 from statsmodels.tsa.statespace.sarimax import SARIMAX
 
 configg = [(2, 1, 4), (2, 1, 6, 24), 'n']
 
 def train_test_split(data, test_len=48):
"""
Split data into training and testing.
"""
train, test = data[:-test_len], data[-test_len:]
return train, test
 
 def sarima_model(data, cfg, test_len, i):
"""
SARIMA model which outputs prediction and model.
"""
order, s_order, t = cfg[0], cfg[1], cfg[2]
model = SARIMAX(data, order=order, seasonal_order=s_order, trend=t,
enforce_stationarity=False, enfore_invertibility=False)
model_fit = model.fit(disp=False)
yhat = model_fit.predict(len(data))
 
if i + 1 == test_len:
return yhat, model_fit
else:
return yhat
 
 def walk_forward_val(data, cfg):
"""
A walk forward validation technique used for time series data. Takes current value of x_test and predicts
value. x_test is then fed back into history for the next prediction.
"""
train, test = train_test_split(data)
pred = []
history = [i for i in train]
test_len = len(test)
 
for i in range(test_len):
if i + 1 == test_len:
yhat, s_model = sarima_model(history, cfg, test_len, i)
pred.append(yhat)
mse = mean_squared_error(test, pred)
return pred, mse, s_model
else:
yhat = sarima_model(history, cfg, test_len, i)
pred.append(yhat)
history.append(test[i])
pass
 
 if __name__ == '__main__':
start_time = time()
sarima_pred_plant2, sarima_mse, s_model = walk_forward_val(plant2_dcpower, configg)
time_len = time() - start_time
 
print(f'SARIMA runtime: {round(time_len/60,2)} mins')
Nach dem Login kopieren

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Abbildung 12 zeigt den Vergleich der vorhergesagten Werte des SARIMA-Modells mit der über 2 Tage in SP2 aufgezeichneten Gleichstromleistung.

Um die Leistung des Modells zu analysieren, zeigt Abbildung 13 die Modelldiagnose. Das Korrelationsdiagramm zeigt nach der ersten Verzögerung fast keine Korrelation und das Histogramm unten zeigt eine Normalverteilung um den Mittelwert Null. Daraus können wir schließen, dass das Modell keine weiteren Informationen aus den Daten gewinnen kann.

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

XGBoost

XGBoost (eXtreme Gradient Boosting) ist ein Entscheidungsbaumalgorithmus zur Gradientenverstärkung. Es verwendet einen Ensemble-Ansatz, bei dem neue Entscheidungsbaummodelle hinzugefügt werden, um vorhandene Entscheidungsbaumbewertungen zu ändern. Im Gegensatz zu SARIMA ist XGBoost ein multivariater Algorithmus für maschinelles Lernen, was bedeutet, dass das Modell mehrere Funktionen übernehmen kann, um die Modellleistung zu verbessern.

Wir nutzen Feature Engineering, um die Modellgenauigkeit zu verbessern. Außerdem wurden drei zusätzliche Merkmale erstellt, darunter nacheilende Versionen der AC- und DC-Leistung, S1_AC_POWER bzw. S1_DC_POWER, und der Gesamtwirkungsgrad EFF, bei dem es sich um die AC-Leistung dividiert durch die DC-Leistung handelt. Und entfernen Sie AC_POWER und MODULE_TEMPERATURE aus den Daten. Abbildung 14 zeigt die Feature-Wichtigkeitsstufe nach Verstärkung (durchschnittliche Verstärkung der Aufteilung mithilfe einer Funktion) und Gewichtung (Häufigkeit, wie oft eine Funktion im Baum erscheint).

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

Bestimmen Sie die bei der Modellierung verwendeten Hyperparameter durch Rastersuche. Die Ergebnisse sind: *Lernrate = 0,01, Anzahl der Schätzer = 1200, Unterstichprobe = 0,8, Kolsample nach Baum = 1, Kolsample nach Ebene = 1, minimales Kindergewicht = 20 und maximale Tiefe = 10

Wir verwenden MinMaxScaler, um die Trainingsdaten auf einen Wert zwischen 0 und 1 zu skalieren (Sie können je nach Verteilung der Daten auch mit anderen Skalierern wie Log-Transformation und Standardskalierer experimentieren). Wandeln Sie die Daten in einen überwachten Lerndatensatz um, indem Sie alle unabhängigen Variablen um eine bestimmte Zeitspanne nach hinten verschieben.

 import numpy as np
 import pandas as pd
 import xgboost as xgb
 from sklearn.preprocessing import MinMaxScaler
 from time import time
 
 def train_test_split(df, test_len=48):
"""
split data into training and testing.
"""
train, test = df[:-test_len], df[-test_len:]
return train, test
 
 def data_to_supervised(df, shift_by=1, target_var='DC_POWER'):
"""
Convert data into a supervised learning problem.
"""
target = df[target_var][shift_by:].values
dep = df.drop(target_var, axis=1).shift(-shift_by).dropna().values
data = np.column_stack((dep, target))
return data
 
 
 def xgb_forecast(train, x_test):
"""
XGBOOST model which outputs prediction and model.
"""
x_train, y_train = train[:,:-1], train[:,-1]
xgb_model = xgb.XGBRegressor(learning_rate=0.01, n_estimators=1500, subsample=0.8,
colsample_bytree=1, colsample_bylevel=1,
min_child_weight=20, max_depth=14, objective='reg:squarederror')
xgb_model.fit(x_train, y_train)
yhat = xgb_model.predict([x_test])
return yhat[0], xgb_model
 
 def walk_forward_validation(df):
"""
A walk forward validation approach by scaling the data and changing into a supervised learning problem.
"""
preds = []
train, test = train_test_split(df)
 
scaler = MinMaxScaler(feature_range=(0,1))
train_scaled = scaler.fit_transform(train)
test_scaled = scaler.transform(test)
 
train_scaled_df = pd.DataFrame(train_scaled, columns = train.columns, index=train.index)
test_scaled_df = pd.DataFrame(test_scaled, columns = test.columns, index=test.index)
 
train_scaled_sup, test_scaled_sup = data_to_supervised(train_scaled_df), data_to_supervised(test_scaled_df)
history = np.array([x for x in train_scaled_sup])
 
for i in range(len(test_scaled_sup)):
test_x, test_y = test_scaled_sup[i][:-1], test_scaled_sup[i][-1]
yhat, xgb_model = xgb_forecast(history, test_x)
preds.append(yhat)
np.append(history,[test_scaled_sup[i]], axis=0)
 
pred_array = test_scaled_df.drop("DC_POWER", axis=1).to_numpy()
pred_num = np.array([pred])
pred_array = np.concatenate((pred_array, pred_num.T), axis=1)
result = scaler.inverse_transform(pred_array)
 
return result, test, xgb_model
 
 if __name__ == '__main__':
start_time = time()
xgb_pred, actual, xgb_model = walk_forward_validation(dropped_df_cat)
time_len = time() - start_time
 
print(f'XGBOOST runtime: {round(time_len/60,2)} mins')
Nach dem Login kopieren

图15显示了XGBoost模型的预测值与SP2 2天内记录的直流功率的比较。

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

CNN-LSTM

CNN-LSTM (convolutional Neural Network Long - Short-Term Memory)是两种神经网络模型的混合模型。CNN是一种前馈神经网络,在图像处理和自然语言处理方面表现出了良好的性能。它还可以有效地应用于时间序列数据的预测。LSTM是一种序列到序列的神经网络模型,旨在解决长期存在的梯度爆炸/消失问题,使用内部存储系统,允许它在输入序列上积累状态。

在本例中,使用CNN-LSTM作为编码器-解码器体系结构。由于CNN不直接支持序列输入,所以我们通过1D CNN读取序列输入并自动学习重要特征。然后LSTM进行解码。与XGBoost模型类似,使用scikitlearn的MinMaxScaler使用相同的数据并进行缩放,但范围在-1到1之间。对于CNN-LSTM,需要将数据重新整理为所需的结构:[samples, subsequences, timesteps, features],以便可以将其作为输入传递给模型。

由于我们希望为每个子序列重用相同的CNN模型,因此使用timedidistributedwrapper对每个输入子序列应用一次整个模型。在下面的图16中可以看到最终模型中使用的不同层的模型摘要。

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

在将数据分解为训练数据和测试数据之后,将训练数据分解为训练数据和验证数据集。在所有训练数据(包括验证数据)的每次迭代之后,模型可以进一步使用这一点来评估模型的性能。

学习曲线是深度学习中使用的一个很好的诊断工具,它显示了模型在每个阶段之后的表现。下面的图17显示了模型如何从数据中学习,并显示了验证数据与训练数据的收敛。这是良好模特训练的标志。

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

import pandas as pd
 import numpy as np
 from sklearn.metrics import mean_squared_error
 from sklearn.preprocessing import MinMaxScaler
 import keras
 from keras.models import Sequential
 from keras.layers.convolutional import Conv1D, MaxPooling1D
 from keras.layers import LSTM, TimeDistributed, RepeatVector, Dense, Flatten
 from keras.optimizers import Adam
 
 n_steps = 1
 subseq = 1
 
 def train_test_split(df, test_len=48):
"""
Split data in training and testing. Use 48 hours as testing.
"""
train, test = df[:-test_len], df[-test_len:]
return train, test
 
 def split_data(sequences, n_steps):
"""
Preprocess data returning two arrays.
"""
x, y = [], []
for i in range(len(sequences)):
end_x = i + n_steps
 
if end_x > len(sequences):
break
x.append(sequences[i:end_x, :-1])
y.append(sequences[end_x-1, -1])
 
return np.array(x), np.array(y)
 
def CNN_LSTM(x, y, x_val, y_val):
"""
CNN-LSTM model.
"""
model = Sequential()
model.add(TimeDistributed(Conv1D(filters=14, kernel_size=1, activation="sigmoid",
input_shape=(None, x.shape[2], x.shape[3]))))
model.add(TimeDistributed(MaxPooling1D(pool_size=1)))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(21, activation="tanh", return_sequences=True))
model.add(LSTM(14, activation="tanh", return_sequences=True))
model.add(LSTM(7, activation="tanh"))
model.add(Dense(3, activation="sigmoid"))
model.add(Dense(1))
 
model.compile(optimizer=Adam(learning_rate=0.001), loss="mse", metrics=['mse'])
history = model.fit(x, y, epochs=250, batch_size=36,
verbose=0, validation_data=(x_val, y_val))
 
return model, history
 
 # split and resahpe data
 train, test = train_test_split(dropped_df_cat)
 
 train_x = train.drop(columns="DC_POWER", axis=1).to_numpy()
 train_y = train["DC_POWER"].to_numpy().reshape(len(train), 1)
 
 test_x = test.drop(columns="DC_POWER", axis=1).to_numpy()
 test_y = test["DC_POWER"].to_numpy().reshape(len(test), 1)
 
 #scale data
 scaler_x = MinMaxScaler(feature_range=(-1,1))
 scaler_y = MinMaxScaler(feature_range=(-1,1))
 
 train_x = scaler_x.fit_transform(train_x)
 train_y = scaler_y.fit_transform(train_y)
 
 test_x = scaler_x.transform(test_x)
 test_y = scaler_y.transform(test_y)
 
 
 # shape data into CNN-LSTM format [samples, subsequences, timesteps, features] ORIGINAL
 train_data_np = np.hstack((train_x, train_y))
 x, y = split_data(train_data_np, n_steps)
 x_subseq = x.reshape(x.shape[0], subseq, x.shape[1], x.shape[2])
 
 # create validation set
 x_val, y_val = x_subseq[-24:], y[-24:]
 x_train, y_train = x_subseq[:-24], y[:-24]
 
 n_features = x.shape[2]
 actual = scaler_y.inverse_transform(test_y)
 
 # run CNN-LSTM model
 if __name__ == '__main__':
start_time = time()
 
model, history = CNN_LSTM(x_train, y_train, x_val, y_val)
prediction = []
 
for i in range(len(test_x)):
test_input = test_x[i].reshape(1, subseq, n_steps, n_features)
yhat = model.predict(test_input, verbose=0)
yhat_IT = scaler_y.inverse_transform(yhat)
prediction.append(yhat_IT[0][0])
 
time_len = time() - start_time
mse = mean_squared_error(actual.flatten(), prediction)
 
print(f'CNN-LSTM runtime: {round(time_len/60,2)} mins')
print(f"CNN-LSTM MSE: {round(mse,2)}")
Nach dem Login kopieren

图18显示了CNN-LSTM模型的预测值与SP2 2天内记录的直流功率的对比。

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

由于CNN-LSTM的随机性,该模型运行10次,并记录一个平均MSE值作为最终值,以判断模型的性能。图19显示了为所有模型运行记录的mse的范围。

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

结果对比

下表显示了每个模型的MSE (CNN-LSTM的平均MSE)和每个模型的运行时间(以分钟为单位)。

Vergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.

从表中可以看出,XGBoost的MSE最低、运行时第二快,并且与所有其他模型相比具有最佳性能。由于该模型显示了一个可以接受的每小时预测的运行时,它可以成为帮助运营经理决策过程的强大工具。

总结

在本文中我们分析了SP1和SP2,确定SP1性能较低。所以对SP2的进一步调查显示,并且查看了SP2中那些模块性能可能有问题,并使用假设检验来计算每个模块在统计上明显表现不佳的次数,' Quc1TzYxW2pYoWX '模块显示了约850次低性能计数。

我们使用数据训练三个模型:SARIMA、XGBoost和CNN-LSTM。SARIMA表现最差,XGBOOST表现最好,MSE为16.9,运行时间为1.43 min。所以可以说XGBoost在表格数据中还是最优先得选择。

Das obige ist der detaillierte Inhalt vonVergleichen Sie Zeitreihenvorhersagemethoden basierend auf SARIMA, XGBoost und CNN-LSTM.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

15 empfohlene kostenlose Open-Source-Bildanmerkungstools 15 empfohlene kostenlose Open-Source-Bildanmerkungstools Mar 28, 2024 pm 01:21 PM

Bei der Bildanmerkung handelt es sich um das Verknüpfen von Beschriftungen oder beschreibenden Informationen mit Bildern, um dem Bildinhalt eine tiefere Bedeutung und Erklärung zu verleihen. Dieser Prozess ist entscheidend für maschinelles Lernen, das dabei hilft, Sehmodelle zu trainieren, um einzelne Elemente in Bildern genauer zu identifizieren. Durch das Hinzufügen von Anmerkungen zu Bildern kann der Computer die Semantik und den Kontext hinter den Bildern verstehen und so den Bildinhalt besser verstehen und analysieren. Die Bildanmerkung hat ein breites Anwendungsspektrum und deckt viele Bereiche ab, z. B. Computer Vision, Verarbeitung natürlicher Sprache und Diagramm-Vision-Modelle. Sie verfügt über ein breites Anwendungsspektrum, z. B. zur Unterstützung von Fahrzeugen bei der Identifizierung von Hindernissen auf der Straße und bei der Erkennung und Diagnose von Krankheiten durch medizinische Bilderkennung. In diesem Artikel werden hauptsächlich einige bessere Open-Source- und kostenlose Bildanmerkungstools empfohlen. 1.Makesens

In diesem Artikel erfahren Sie mehr über SHAP: Modellerklärung für maschinelles Lernen In diesem Artikel erfahren Sie mehr über SHAP: Modellerklärung für maschinelles Lernen Jun 01, 2024 am 10:58 AM

In den Bereichen maschinelles Lernen und Datenwissenschaft stand die Interpretierbarkeit von Modellen schon immer im Fokus von Forschern und Praktikern. Mit der weit verbreiteten Anwendung komplexer Modelle wie Deep Learning und Ensemble-Methoden ist das Verständnis des Entscheidungsprozesses des Modells besonders wichtig geworden. Explainable AI|XAI trägt dazu bei, Vertrauen in maschinelle Lernmodelle aufzubauen, indem es die Transparenz des Modells erhöht. Eine Verbesserung der Modelltransparenz kann durch Methoden wie den weit verbreiteten Einsatz mehrerer komplexer Modelle sowie der Entscheidungsprozesse zur Erläuterung der Modelle erreicht werden. Zu diesen Methoden gehören die Analyse der Merkmalsbedeutung, die Schätzung des Modellvorhersageintervalls, lokale Interpretierbarkeitsalgorithmen usw. Die Merkmalswichtigkeitsanalyse kann den Entscheidungsprozess des Modells erklären, indem sie den Grad des Einflusses des Modells auf die Eingabemerkmale bewertet. Schätzung des Modellvorhersageintervalls

Transparent! Eine ausführliche Analyse der Prinzipien der wichtigsten Modelle des maschinellen Lernens! Transparent! Eine ausführliche Analyse der Prinzipien der wichtigsten Modelle des maschinellen Lernens! Apr 12, 2024 pm 05:55 PM

Laienhaft ausgedrückt ist ein Modell für maschinelles Lernen eine mathematische Funktion, die Eingabedaten einer vorhergesagten Ausgabe zuordnet. Genauer gesagt ist ein Modell für maschinelles Lernen eine mathematische Funktion, die Modellparameter anpasst, indem sie aus Trainingsdaten lernt, um den Fehler zwischen der vorhergesagten Ausgabe und der wahren Bezeichnung zu minimieren. Beim maschinellen Lernen gibt es viele Modelle, z. B. logistische Regressionsmodelle, Entscheidungsbaummodelle, Support-Vektor-Maschinenmodelle usw. Jedes Modell verfügt über seine anwendbaren Datentypen und Problemtypen. Gleichzeitig gibt es viele Gemeinsamkeiten zwischen verschiedenen Modellen oder es gibt einen verborgenen Weg für die Modellentwicklung. Am Beispiel des konnektionistischen Perzeptrons können wir es durch Erhöhen der Anzahl verborgener Schichten des Perzeptrons in ein tiefes neuronales Netzwerk umwandeln. Wenn dem Perzeptron eine Kernelfunktion hinzugefügt wird, kann es in eine SVM umgewandelt werden. Dieses hier

Identifizieren Sie Über- und Unteranpassung anhand von Lernkurven Identifizieren Sie Über- und Unteranpassung anhand von Lernkurven Apr 29, 2024 pm 06:50 PM

In diesem Artikel wird vorgestellt, wie Überanpassung und Unteranpassung in Modellen für maschinelles Lernen mithilfe von Lernkurven effektiv identifiziert werden können. Unteranpassung und Überanpassung 1. Überanpassung Wenn ein Modell mit den Daten übertrainiert ist, sodass es daraus Rauschen lernt, spricht man von einer Überanpassung des Modells. Ein überangepasstes Modell lernt jedes Beispiel so perfekt, dass es ein unsichtbares/neues Beispiel falsch klassifiziert. Für ein überangepasstes Modell erhalten wir einen perfekten/nahezu perfekten Trainingssatzwert und einen schrecklichen Validierungssatz-/Testwert. Leicht geändert: „Ursache der Überanpassung: Verwenden Sie ein komplexes Modell, um ein einfaches Problem zu lösen und Rauschen aus den Daten zu extrahieren. Weil ein kleiner Datensatz als Trainingssatz möglicherweise nicht die korrekte Darstellung aller Daten darstellt. 2. Unteranpassung Heru.“

Die Entwicklung der künstlichen Intelligenz in der Weltraumforschung und der Siedlungstechnik Die Entwicklung der künstlichen Intelligenz in der Weltraumforschung und der Siedlungstechnik Apr 29, 2024 pm 03:25 PM

In den 1950er Jahren wurde die künstliche Intelligenz (KI) geboren. Damals entdeckten Forscher, dass Maschinen menschenähnliche Aufgaben wie das Denken ausführen können. Später, in den 1960er Jahren, finanzierte das US-Verteidigungsministerium künstliche Intelligenz und richtete Labore für die weitere Entwicklung ein. Forscher finden Anwendungen für künstliche Intelligenz in vielen Bereichen, etwa bei der Erforschung des Weltraums und beim Überleben in extremen Umgebungen. Unter Weltraumforschung versteht man die Erforschung des Universums, das das gesamte Universum außerhalb der Erde umfasst. Der Weltraum wird als extreme Umgebung eingestuft, da sich seine Bedingungen von denen auf der Erde unterscheiden. Um im Weltraum zu überleben, müssen viele Faktoren berücksichtigt und Vorkehrungen getroffen werden. Wissenschaftler und Forscher glauben, dass die Erforschung des Weltraums und das Verständnis des aktuellen Zustands aller Dinge dazu beitragen können, die Funktionsweise des Universums zu verstehen und sich auf mögliche Umweltkrisen vorzubereiten

Implementierung von Algorithmen für maschinelles Lernen in C++: Häufige Herausforderungen und Lösungen Implementierung von Algorithmen für maschinelles Lernen in C++: Häufige Herausforderungen und Lösungen Jun 03, 2024 pm 01:25 PM

Zu den häufigsten Herausforderungen, mit denen Algorithmen für maschinelles Lernen in C++ konfrontiert sind, gehören Speicherverwaltung, Multithreading, Leistungsoptimierung und Wartbarkeit. Zu den Lösungen gehören die Verwendung intelligenter Zeiger, moderner Threading-Bibliotheken, SIMD-Anweisungen und Bibliotheken von Drittanbietern sowie die Einhaltung von Codierungsstilrichtlinien und die Verwendung von Automatisierungstools. Praktische Fälle zeigen, wie man die Eigen-Bibliothek nutzt, um lineare Regressionsalgorithmen zu implementieren, den Speicher effektiv zu verwalten und leistungsstarke Matrixoperationen zu nutzen.

Erklärbare KI: Erklären komplexer KI/ML-Modelle Erklärbare KI: Erklären komplexer KI/ML-Modelle Jun 03, 2024 pm 10:08 PM

Übersetzer |. Rezensiert von Li Rui |. Chonglou Modelle für künstliche Intelligenz (KI) und maschinelles Lernen (ML) werden heutzutage immer komplexer, und die von diesen Modellen erzeugten Ergebnisse sind eine Blackbox, die den Stakeholdern nicht erklärt werden kann. Explainable AI (XAI) zielt darauf ab, dieses Problem zu lösen, indem es Stakeholdern ermöglicht, die Funktionsweise dieser Modelle zu verstehen, sicherzustellen, dass sie verstehen, wie diese Modelle tatsächlich Entscheidungen treffen, und Transparenz in KI-Systemen, Vertrauen und Verantwortlichkeit zur Lösung dieses Problems gewährleistet. In diesem Artikel werden verschiedene Techniken der erklärbaren künstlichen Intelligenz (XAI) untersucht, um ihre zugrunde liegenden Prinzipien zu veranschaulichen. Mehrere Gründe, warum erklärbare KI von entscheidender Bedeutung ist. Vertrauen und Transparenz: Damit KI-Systeme allgemein akzeptiert und vertrauenswürdig sind, müssen Benutzer verstehen, wie Entscheidungen getroffen werden

Fünf Schulen des maschinellen Lernens, die Sie nicht kennen Fünf Schulen des maschinellen Lernens, die Sie nicht kennen Jun 05, 2024 pm 08:51 PM

Maschinelles Lernen ist ein wichtiger Zweig der künstlichen Intelligenz, der Computern die Möglichkeit gibt, aus Daten zu lernen und ihre Fähigkeiten zu verbessern, ohne explizit programmiert zu werden. Maschinelles Lernen hat ein breites Anwendungsspektrum in verschiedenen Bereichen, von der Bilderkennung und der Verarbeitung natürlicher Sprache bis hin zu Empfehlungssystemen und Betrugserkennung, und es verändert unsere Lebensweise. Im Bereich des maschinellen Lernens gibt es viele verschiedene Methoden und Theorien, von denen die fünf einflussreichsten Methoden als „Fünf Schulen des maschinellen Lernens“ bezeichnet werden. Die fünf Hauptschulen sind die symbolische Schule, die konnektionistische Schule, die evolutionäre Schule, die Bayes'sche Schule und die Analogieschule. 1. Der Symbolismus, auch Symbolismus genannt, betont die Verwendung von Symbolen zum logischen Denken und zum Ausdruck von Wissen. Diese Denkrichtung glaubt, dass Lernen ein Prozess der umgekehrten Schlussfolgerung durch das Vorhandene ist

See all articles