Feature-Engineering ist eines der wichtigsten Werkzeuge, um die Leistung von maschinellen Lernalgorithmen zu steigern. In der Praxis ist es eine der effektivsten Methoden, um neue unabhängie Merkmale (Featues) zu erzeugen, um die bestmöglichen Ergebnisse zu erzielen und bessere Vorhersagemodelle schneller zu erstellen.
In der Regel erfordert es das Fachwissen von Experten mit den notwendigen domänenspezifischen Fachkenntnissen, um den Feature-Engineering-Prozess zu unterstützen. Für bestimmte Bereiche funktioniert das automatisierte Feature-Engineering besonders gut. Eine dieser als "Zeitreihendaten" bezeichneten Bereiche hat starke saisonale Effekte. Das prominenteste Beispiel sind sicherlich die Verkaufsdaten.
Der gewählte Framework, um die besten Ergebnisse für das automatisierte Feature-Engineering zu erzielen, ist Prophet. Prophet ist eine Open-Source-Software, die vom Core Data Science Team von Facebook veröffentlicht ist. Es handelt sich um ein Prognoseverfahren für Zeitreihendaten, das auf einem additiven Regressionsmodell basiert, das auf nichtlineare Trends mit Jahres-, Wochen- und Tagessaisonalität sowie Ferieneffekten angepasst wird.
Um die Leistungsfähigkeit des automatisierten Feature-Engineering zu demonstrieren, haben wir einen tieferen Einblick in das Prophet Framework genommen und es auf einen Beispieldatensatz mit Verkaufsdaten anhand praktischer Code-Beispiele in R. angewendet. Unser Fokus: Wie man nützliche Features mit Prophet extrahiert. Die Ausführung des Codes ist recht rechenintensiv (erhebliche Menge an verschiedenen Ressourcen, z.B. Rechenleistung, Speicher, Zeit), aber die Ergebnisse zeigen deutlich, dass es sich lohnt.
Eine kurze Einführung in Prophet
Wir haben bereits erklärt, dass Prophet eine Open-Source-Software ist, die vom Facebook Core Data Science team veröffentlicht wurde, und dass das Verfahren ein additives Regressionsmodell ist, das am besten mit saisonalen Zeitreihendaten über mehrere historische Perioden funktioniert. Kurz gefasst und genauer gesagt, liefert Prophet ein Modell für saisonale Daten, das präzisere Prognosen generiert und liefert.
Prophet zerlegt Zeitreihendaten in drei Hauptkomponenten des Modells: Trend, Saisonalität und Feiertage. Sie werden in der folgenden Formel zusammengefasst:
y(t)=g(t)+s(t)+h(t)+ϵt.
Wenn g(t) die Trendfunktion darstellt, die nicht-periodische Veränderungen des Wertes der Zeitreihe modelliert, ist s(t) der periodisch wechselnde Teil, wie z.B.: wöchentliche und jährliche Saisonalität, und h(t) stellt die Auswirkungen von Feiertagen dar, die möglicherweise in unregelmäßigen Abständen über einen oder mehrere Tage auftreten. Der Fehlerterm ϵt stellt alle idiosynkratischen Änderungen dar, die vom Modell nicht unterstützt werden.
Explorative Datenanalyse
Beginnen wir unsere Analyse. Zum besseren Verständnis werfen wir einen genaueren Blick auf zwei verschiedene Filialen. Die Filiale A ist nur an Werktagen geöffnet, während die Filiale B auch an Wochenenden und Feiertagen geöffnet ist.
Ausgehend von der Umsatzhistorie von Filiale A haben wir um Weihnachten einen deutlichen Anstieg und vor Jahreswechsel einen Tiefpunkt festgestellt. Um weitere Trends zu ermitteln, haben wir einen gleitenden Durchschnitt hinzugefügt. Nun können wir die Saisonalität deutlicher beobachten. Im Frühjahr gibt es einen kleinen Anstieg. Im Sommer sinken die Umsätze, aber zu Beginn des Herbstes beginnen sie zu steigen, dies hält bis zum Neujahr.
Wir haben die jährliche Umsatz-Saisonalität bereits festgestellt, welche andere Saisonalität könnte sie haben? Vielleicht wöchentlich? Zur Überprüfung müssen wir zunächst den durchschnittlichen Umsatz für jeden Wochentag berechnen. Es ist offensichtlich, dass es am Montag einen Umsatzspitzenwert und am Donnerstag einen Einbruch gibt. Da der Filiale am Sonntag nicht geöffnet ist, ist es sinnvoll, mehr Verkäufe am Samstag und Montag zu erwarten. Dies wiederum bestätigt, dass die Filiale eine wöchentliche Saisonalität hat.
Wie sieht es mit den Feiertagseffekten aus? Haben die gesetzlichen und schulischen Feiertage auch Auswirkungen auf den Umsatz? Ähnlich wie bei der wöchentlichen Saisonalität können wir den durchschnittlichen Umsatz für Ferien und Nicht-Ferienzeiten berechnen. Da Filiale A an Feiertagen nicht geöffnet ist, werden wir Filiale B zur weiteren Auswertung nutzen. Zweifellos haben die gesetzlichen Feiertage einen großen Einfluss auf den Umsatz. Zu Ostern stieg der Umsatz um fast 50%. Die Auswirkungen der Schulferien sind jedoch im Vergleich zu den gesetzlichen Feiertagen relativ gering.
Ebenso können wir Aktionstage auch als eine Art Feiertag behandeln.
Detaillierte Analysen, einschließlich Grafiken zur Darstellung von Trends und Ergebnissen, finden Sie in unserem Kaggle Artikel (Artikel ist auf Englisch).
Feature-Engineering mit Prophet
Da wir festgestellt haben, dass es saisonale Effekte gibt und Feiertage die Verkaufsdaten beeinflussen, werden wir Prophet verwenden, um diese Effekte in einzelne Kompenenten zu zerlegen.
Was können wir davon erwarten? Lassen Sie uns noch einmal zurückgehen und die Filiale B als Beispiel verwenden. Wir haben die Zeitreihe von Filiale B in 4 Komponenten zerlegt. Die Zerlegung der ersten Komponente ist der Trend, der zeigt, wie sich der Umsatz erhöht hat und wie er voraussichtlich weiter wachsen wird. Diese Zahlen können für Umsatzprognosen und Geschäftsanalysen von Vorteil sein. So ist es beispielsweise nicht einfach, die Leistung eines Unternehmens im August und Dezember zu vergleichen, denn August ist in der Regel die Nachsaison, während Dezember das Gegenteil ist, die Hauptsaison. Dennoch, durch den Vergleich des Trends können wir unser Ziel leicht erreichen, scheinbar ist der Filiale B gewachsen und neigt dazu, gesättigt zu sein.
Die zweite Komponente behandelt die Urlaubs- und Promotion-Effekte. Dazu gehören normale Ferienzeiten wie Ostern und Weihnachten sowie Schulferien und Werbeveranstaltungen für alle Filialen. Diese Komponente ermöglicht es uns, große Rückgänge bei Feiertagen und Werbeveranstaltungen bis hin zum Umsatz vorherzusagen.
Schließlich haben wir wöchentliche und jährliche Saisonalitäten. Sie sind periodisch, wiederholend und umfassen im Allgemeinen regelmäßige und vorhersehbare Muster in der Höhe der Geschäftstätigkeit. Wenn Sie die wöchentlichen und jährlichen Saisonalitäten mit den durchschnittlichen Umsätzen für Wochentage und Monate vergleichen, werden Sie feststellen, dass sie konsistent sind.
Ergebnisvergleich
Jetzt können wir unsere generierten Features nutzen, um die Prognose durchzuführen und zu überprüfen, ob es eine Verbesserung gibt. Der von uns verwendete Maßstab ist ein einfaches Modell mit einigen einfachen erzeugten Features. In unserem Regressionsbeispiel wird die Log-Transformation für den Verkaufzahlen verwendet. Jahr, Monat und Woche werden als Features benutzt und die Filiale-ID als Faktor für das Modell verwendet, zusätzlich durchschnittlichen Kunden pro Monat und zum durchschnittlichen Umsatz für jeden Wochentag.
Mit diesem Basismodell können wir eine Punktzahl von 0,11668 für das Public Leader Board und 0,12561 für das Private Leader Board erreichen, was in den oberen 40% liegt. Das Basismodell zeigt deutlich, wie mächtig Prophet ist. Wenn man die erzeugten Features zum Basismodell hinzufügt, erhöhen sie die Punktzahl 6,57% bzw. 7,29% für das private bzw. öffentlichen Leader Board, was unsere Platzierung erheblich verbessert und uns in die Top 10% bringt.
Detaillierte Analysen, einschließlich Grafiken zur Darstellung von Trends und Ergebnissen, finden Sie in unserem Kaggle Artikel (Artikel ist auf Englisch).
Wir finden eine passende Lösung für dein Problem.