Ich verwende die Support-Vektor-Regression, um einige ziemlich verzerrte Daten (mit hoher Kurtosis) zu modellieren. Ich habe versucht, die Daten direkt zu modellieren, aber ich erhalte falsche Vorhersagen, die meiner Meinung nach hauptsächlich auf die Verteilung der Daten zurückzuführen sind, die mit sehr fetten Schwänzen verzerrt ist. Ich bin mir ziemlich sicher, dass einige Ausreißer (die legitime Datenpunkte sind) das SVR-Training beeinflussen, und vielleicht auch die Kreuzvalidierung, bei der ich derzeit die Hyperparameter durch Minimierung des mittleren quadratischen Fehlers optimiere.
Ich habe versucht, meine Daten vor dem Anwenden von SVR zu skalieren (z. B. mithilfe einer sqrt-Funktion, um die Ausreißer zu reduzieren) sowie eine andere Funktion zur Minimierung von Hyperparametern (z. B. absoluter Fehler) zu verwenden, die bessere Ergebnisse zu liefern scheint, aber immer noch nicht sehr gut ist. Ich bin gespannt, ob jemand auf ähnliche Probleme gestoßen ist und wie er damit umgegangen ist. Vorschläge und / oder alternative Methoden sind herzlich willkommen.
Antworten:
Sie können verzerrte oder schwerfällige Lambert W-Distributionen verwenden, um Ihre Daten in etwas Besseres umzuwandeln (Haftungsausschluss: Ich bin der Autor beider Artikel und des LambertW R-Pakets). Der Vorteil gegenüber der Box-Cox-Transformation besteht darin, dass sie keine positive Einschränkung aufweisen, die optimalen Parameter der Transformation aus den Daten geschätzt werden können (MLE) und Sie die Transformation auch vergessen und Ihre Daten als Lambert W x modellieren können F Verteilung direkt.
Das LambertW R-Paket bietet verschiedene Schätzer, Transformationen, Methoden usw. Ich empfehle insbesondere einen Blick darauf
Die verzerrte Lambert W x F-Verteilung ist ein allgemeiner Rahmen, um eine verzerrte Version einer beliebigen Verteilung F zu erstellen. Umgekehrt können Sie dann Ihre verzerrten Daten wieder symmetrisch machen. Die Verteilung dieser symmetrisierten Daten bestimmt im Wesentlichen, welche Art von Lambert W x F Sie haben. Wenn die Daten nur ein bisschen asymmetrisch sind, haben Sie möglicherweise einen verzerrten Lambert W x Gaußschen Wert. Wenn Ihre Daten zusätzlich schwerfällig sind, können Sie möglicherweise einen verzerrten Lambert W x t ausprobieren.
Heavy-tailed Lambert W x F sind eine Verallgemeinerung der Tukey-h-Verteilung und bieten eine inverse Transformation, um Daten Gauß'sch (auch asymmetrisch) zu machen. In der Arbeit zeige ich, dass sogar ein Cauchy auf ein Niveau gaußianisiert werden kann, das Sie - und auch mehrere Normalitätstests - nicht von einer normalen Stichprobe unterscheiden können.
quelle
Eine Möglichkeit, mit negativen Werten umzugehen, besteht darin, Variablen in den positiven Bereich zu verschieben (z. B. größer oder gleich 0,1), die Box-Cox-Transformation anzuwenden (oder nur log () für einen schnellen Test) und dann zu standardisieren. Die Standardisierung kann für SVR wichtig sein, da SVR auf einer quadratischen Strafe beruht, die einheitlich auf alle Koeffizienten angewendet wird (SVR ist also nicht skalierungsinvariant und kann von einer variablen Standardisierung profitieren). Stellen Sie sicher, dass Sie die resultierenden Variablenverteilungen überprüfen - sie sollten nicht stark verzerrt sein (idealerweise sollten sie Gaußsch aussehen).
Eine andere Technik, die man versuchen könnte, besteht darin, eine "räumliche Vorzeichen" -Transformation auf die Eingabevektoren
x <- x / norm(x)
gemäß "Vorzeichenverarbeitung für räumliche Vorzeichen: eine einfache Möglichkeit, multivariaten Schätzern eine moderate Robustheit zu verleihen " anzuwenden . J. Chem. Inf. Model (2006) vol. 46 (3) S. 1402–1409 Ich hatte zwar nicht viel Glück mit dieser Technik, aber der Kilometerstand kann variieren.quelle
Eine Möglichkeit, sich der Lösung zu nähern, besteht darin, zwei Modelle zu erstellen: eines für die Werte, die mit der Verteilung übereinstimmen, und eines für die Ausreißer. Mein diesbezüglicher Vorschlag wäre, eine binäre Antwortvariable (0,1) zu erstellen, wobei 0 der Wert ist, wenn der Datenpunkt innerhalb der Grenzen Ihrer Verteilung liegt, und 1, wenn er außerhalb liegt. Für die Fälle der Ausreißer, die Sie in Ihren Daten behalten möchten, haben Sie 1 in Ihrer Zielvariablen und den Rest als 0. Führen Sie nun eine logistische Regression aus, um die Wahrscheinlichkeiten der Ausreißer vorherzusagen, und Sie können den Durchschnittswert multiplizieren für die Gruppe von Ausreißern mit den einzelnen Wahrscheinlichkeiten, um die Vorhersagen zu erhalten. Für den Rest der Daten können Sie Ihre SVM ausführen, um die Werte vorherzusagen.
Da es sich bei den Werten um Ausreißer handelt, sind ihnen niedrige Wahrscheinlichkeiten zugeordnet, und selbst wenn Sie den Mittelwert der Ausreißer nehmen, die verzerrt werden, wird der erwartete Wert der Ausreißer durch die damit verbundenen niedrigen Wahrscheinlichkeiten herabgesetzt und dort erhöht vernünftige Vorhersage.
Hatte ein ähnliches Szenario bei der Vorhersage des Schadenbetrags für einen Versicherungsdienstleister erlebt. Ich hatte die oben erwähnte Technik verwendet, um die Leistung meines Modells drastisch zu steigern.
Eine andere Möglichkeit besteht darin, eine Protokolltransformation Ihrer Zielvariablen durchzuführen. Dies ist möglich, wenn Ihre Zielvariable nur einen positiven Wert enthält. Stellen Sie jedoch sicher, dass Sie eine Protokolltransformation Ihrer Zielvariablen durchführen und gleichzeitig die Variable vorhersagen, die Sie benötigen, um auch die Fehlerkomponente einzuschließen.
Sie können einen Blick auf den folgenden Link für die Protokolltransformation werfen: http://www.vims.edu/people/newman_mc/pubs/Newman1993.pdf
quelle