2016-08-01 4 views
3

Ich habe historische Kaufdaten für einige 10k Kunden für 3 Monate, ich möchte diese Daten für Vorhersagen über ihren Kauf in den nächsten 3 Monaten verwenden. Ich verwende Kunden-ID als Eingabevariable, wie ich möchte, dass xgboost für einzelne Ausgaben zwischen verschiedenen Kategorien lernt. Gibt es eine Möglichkeit, zu optimieren, so dass es wichtig ist, basierend auf jedem einzelnen Kauf mehr zu lernen? Oder besser, dieses Problem anzugehen?Wie kann ich xgboost optimieren, um einer Variablen mehr Gewicht zuzuweisen?

Antwort

1

Sie können den Gewichtsvektor verwenden, den Sie übergeben können in weight Argument in xgboost; ein Vektor mit der Größe nrow(trainingData). Dies wird jedoch im Allgemeinen verwendet, um Fehler in der Klassifizierung Fehler zu bestrafen (denken Sie an spärliche Daten mit Artikeln, die Verkauf nur sagen, einmal im Monat oder so; Sie wollen die Verkäufe lernen dann müssen Sie mehr Umsatz Verkaufsinstanz geben oder sonst alle Vorhersage wird Null). Anscheinend versuchen Sie tweak Gewicht der unabhängigen Variable, die ich nicht gut verstehen kann.

Lernen Sie das Verhalten der abhängigen Variable (Verkauf in Ihrem Fall) ist was Machine Learning-Modell tun, sollten Sie es seine Arbeit machen lassen. Sie sollten es nicht zwicken, um zu erzwingen, nur von einigen Funktionen zu lernen. Für das Lernen von Kaufverhalten Clustering Art von unbeaufsichtigten Techniken werden mehr nützlich sein.

Um ein benutzerspezifisches Verhalten einzubeziehen, wird zunächst ein Clustering durchgeführt und die Kategorien für jeden Benutzer in den Kategorien "indiziert" und "überindiziert" identifiziert. Dann können Sie mithilfe dieser Flags ein kategorisches Feature erstellen.

PS: Einige Daten zur Erklärung Ihres Problems können anderen helfen, Ihnen besser zu helfen.

+1

Ich denke, die Anfrage ist, Merkmale nicht Einzelpersonen zu gewichten, dh sicherzustellen, Modelle enthalten leichter einige Variablen im Zusammenhang mit Mengen anstelle von anderen Variablen wie Anzahl der Käufe oder einfachen Produktbesitz zum Beispiel. –

+0

Wie Eric oben erwähnt, das Ziel ist, ich möchte den Benutzern ein gewisses Gewicht geben, so dass die Funktionen xgboost lernt, hat auch einige sagen, der individuelle Trend, anstatt alle generalisierten Trend über die Gruppe von Benutzern. – muni

+0

ja .. Ich habe versucht, beide Fragen zu beantworten ... Gewichte möglich auf Rekord, aber nicht auf Feature .. ein wenig Gewicht der Funktion wird das Modell weniger leistungsfähig, dh. wenn Sie die erste Bruchstelle des Baumes kennen (am meisten imp); das Teilen von Daten durch sie und das Lernen wird gut sein. Bäume sind da, um hohe Varianz von einzelnen Bäumen wie CART zu entfernen. Forcing-Variable wird hohe Varianz induzieren. Man kann die Skalierung nicht machen und eine Variable imp machen als andere in Regressionsform Hier, weil Bäume maßstabsunabhängig sind ... Ich habe versucht, zu sagen, dass ich nicht an Feature Imps denke. – abhiieor

Verwandte Themen