Ich nehme gerade an einem Wettbewerb teil. Ich weiß, dass es meine Aufgabe ist, das gut zu machen, aber vielleicht möchte jemand mein Problem und seine Lösung hier diskutieren, da dies auch für andere auf ihrem Gebiet hilfreich sein könnte.
Ich habe ein xgboost-Modell trainiert (ein baumbasiertes Modell und ein lineares Modell und ein Ensemble aus beiden). Wie bereits hier besprochen , war der mittlere absolute Fehler (MAE) auf dem Trainingssatz (wo ich eine Kreuzvalidierung durchgeführt habe) gering (ca. 0,3), dann lag der Fehler auf dem durchgehaltenen Testsatz bei etwa 2,4. Dann begann der Wettbewerb und der Fehler lag bei 8 (!) Und überraschenderweise lag die Prognose immer ca. 8-9 über dem wahren Wert !! Sehen Sie die gelb umkreiste Region im Bild:
Ich muss sagen, dass der Zeitraum der Trainingsdaten im Oktober '15 endete und der Wettbewerb jetzt begann (April '16 mit einem Testzeitraum von ca. 2 Wochen im März).
Heute habe ich gerade die konstanten Werte von 9 von meiner Prognose abgezogen und der Fehler ging auf 2 zurück und ich bekam die Nummer 3 auf dem Leadboard (für diesen einen Tag). ;) Dies ist der Teil rechts von der gelben Linie.
Also, was möchte ich diskutieren:
- Wie reagiert xgboost auf das Hinzufügen eines Intercept-Terms zur Modellgleichung? Könnte dies zu Verzerrungen führen, wenn sich das System zu stark ändert (wie in meinem Fall vom 15. Oktober bis 16. April)?
- Könnte ein xgboost-Modell ohne Achsenabschnitt robuster gegenüber parallelen Verschiebungen des Zielwerts sein?
Ich werde meine Voreingenommenheit von 9 weiter abziehen und wenn jemand interessiert ist, könnte ich Ihnen das Ergebnis zeigen. Es wäre einfach interessanter, hier mehr Einblick zu bekommen.
Antworten:
Ich werde mir selbst antworten und Sie über meine Ergebnisse informieren, falls jemand interessiert ist.
Zuerst die Tendenz: Ich habe mir die Zeit genommen, alle aktuellen Daten zu sammeln und sie korrekt zu formatieren und so weiter. Ich hätte das schon lange vorher tun sollen. Das Bild ist das folgende:
Sie sehen die Daten von Ende 2015 und dann vom 16. April. Das Preisniveau ist völlig anders. Ein Modell, das auf Daten von 2015 trainiert wurde, kann diese Änderung in keiner Weise erhalten.
Zweitens: Die Passform von xgboost. Das folgende Setup hat mir sehr gut gefallen. Zug- und Testfehler sind jetzt sehr nahe und immer noch gut:
Daher benutze ich viele Bäume und alle sind höchstens 3 Spalten tief (wie hier empfohlen ). Auf diese Weise ist die Berechnung schnell (die Baumgröße wächst mit jedem Split um den Faktor 2) und die Überanpassung scheint verringert zu sein.
Meine Zusammenfassung: Verwenden Sie Bäume mit einer kleinen Anzahl von Blättern, aber vielen, und suchen Sie nach aktuellen Daten. Für den Wettbewerb war das Pech für mich ...
quelle
caret
zumlr
gewechselt? Für mich scheinen sie sich ziemlich zu überschneiden, vielleicht verpasse ich etwas anderes.