Commit 09f2f768 authored by ukmwn's avatar ukmwn
Browse files

Update README.md

parent f6dc368f
......@@ -27,7 +27,7 @@ Mithilfe der Daten soll ein effizienteres leeren der Container ermöglicht werde
Bei den Daten handelt es sich um Zeitreihen, die aus der Beobachtung einzelner Variablen über einen Zeitraum entstehen. Die entscheide Variable **Höhe** wird dabei unterschiedlich oft beobachten allerdings im Schnitt mehrmals pro Tag. Da es sich dabei allerdings um EDGE Geräte handelt, sind einzelne Messungen nicht immer akkurat und zusätzlich sind häufig fehlende Daten zu beobachten. So können die Messungen für unterschiedliche Container stark varieren. Im folgenden Bild ist die Füllhöhe eines Containers über den bereitgestellten Zeitraum zu beobachten.
![Untitled%20dc564a8fe174488583651b8e230af1de/brauchbar.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/brauchbar.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/brauchbar.png](doku_ressources/brauchbar.png)
Um Einflüsse auf den Füllstand besser zu verstehen, haben wir uns unterschiedliche Datenquellen aus dem Internet besorgt und diese mithilfe einer Korrelationsanalyse auf ihren Einfluss überprüft.
......@@ -45,9 +45,9 @@ Da Qualität der Vorhersagen des Modells direkt mit der Qualität der Trainingsd
Nachdem alle Containerfüllstände visualisiert wurden, wurden Container, deren Datenqualität extrem fragwürdig waren über eine deskriptive Analyse aussortiert. In den folgenden Plots sind jeweils ein Beispiel für einen Aussortierten (unten) und einen Weiterverwendeten (oben) zu sehen.
![Untitled%20dc564a8fe174488583651b8e230af1de/brauchbar%201.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/brauchbar%201.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/brauchbar%201.png](doku_ressources/brauchbar%201.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/unbrauchbar.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/unbrauchbar.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/unbrauchbar.png](doku_ressources/unbrauchbar.png)
In den weiteren Schritten wurden offensichtliche Messfehler in den Container entfernt z. B. Höhe > 190. Da in den Daten weiterhin sehr viel Noise enthalten ist galt es, denn unterliegenden Trend zu extrahieren. Hierbei wurden unterschiedliche Smoothing Verfahren angewandt. Im Code Snippet sowie in der Grafik unten wurde jeweils das Smoothing Verfahren des Rolling Average mit einer Fenstergröße von 30 visualisiert.
......@@ -55,7 +55,7 @@ In den weiteren Schritten wurden offensichtliche Messfehler in den Container ent
df['mov_avg'] = df['Height'].rolling(30).mean()
```
![Untitled%20dc564a8fe174488583651b8e230af1de/plot.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/plot.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/plot.png](doku_ressources/plot.png)
Außerdem haben wir die Daten, nach dem erste Modellierungsversuche scheiterten, auf Tagesniveau mithilfe mean(), min() und max() Operators aggregiert. Dabei waren die Ergebnisse des mean() näher am Rohverlauf als die anderen, weshalb für das weitere Vorgehen diese Daten verwendet wurden.
Da bei den meisten Containern nicht für jeden Tag Messwerte existierten, haben wir fehlende Messwerte mithilfe von Interpolationsverfahren aufgefüllt.
......@@ -66,9 +66,9 @@ Da sich bei der deskriptiven Analyse zeigte, dass es visuelle Ähnlichkeiten zwi
Dafür wurde Dynamic Time Warping in Kombination mit K-means Clustering eingesetzt. Dafür wurde die Bibliothek [tslearn](https://tslearn.readthedocs.io/en/stable/gen_modules/clustering/tslearn.clustering.TimeSeriesKMeans.html) verwendet. Dabei hat sich **k = 3** als effektivste Anzahl für die Cluster herauskristallisiert.
![Untitled%20dc564a8fe174488583651b8e230af1de/clusters.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/clusters.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/clusters.png](doku_ressources/clusters.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/Screenshot_2021-07-24_at_04.05.14.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/Screenshot_2021-07-24_at_04.05.14.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/Screenshot_2021-07-24_at_04.05.14.png](doku_ressources/Screenshot_2021-07-24_at_04.05.14.png)
## 🤖 Modelling
......@@ -80,9 +80,9 @@ Dabei macht es keinen Sinn die eigentlichen Kurven mit ihren jeweiligen Leerungs
Als Baseline haben wir versucht dies mithilfe einer einfachen linearen Regression zu modellieren. Dabei wurde jeweils aus einer Zeitreihe pro Cluster ein Füllintervall extrahiert und darauf die Steigung berechnet. Dies führte für diese recht einfache Methode auch zu sehr vielversprechenden Ergebnissen. Um die Ergebnisse zu evaluieren, haben wir versucht, die jeweiligen Leerungen mithilfe einer Schwellwertfunktion zu berechnen. Dies funktioniert auf unterschiedlichen Zeitreihen mit stark schwankendem Erfolg.
![Untitled%20dc564a8fe174488583651b8e230af1de/Screenshot_2021-07-24_at_17.14.01.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/Screenshot_2021-07-24_at_17.14.01.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/Screenshot_2021-07-24_at_17.14.01.png](doku_ressources/Screenshot_2021-07-24_at_17.14.01.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/Untitled.png](doku_ressources/Untitled%20dc564a8fe174488583651b8e230af1de/Untitled.png)
![Untitled%20dc564a8fe174488583651b8e230af1de/Untitled.png](doku_ressources/Untitled.png)
Das Verfahren sieht auf den ersten Blick tatsächlich sehr vielsprechend aus, kann aber nicht optimal evaluiert werden, da in den Daten die Zeitpunkte der Leerung garnicht, bis sehr schlecht angegeben sind.
......@@ -132,6 +132,3 @@ the processed is visualized. The whole functionality can be found in the src fol
```
# Untitled
❗Linear Regression
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment