Ja, es scheint an einigen verschiedenen Stellen beschrieben zu werden, ohne dass ein Link zu irgendwelchen Papieren besteht.
Die Klassendokumentation fasst den Algorithmus wie folgt zusammen:
Die Transformation wird unabhängig auf jedes Feature angewendet. Die kumulative Dichtefunktion eines Features wird verwendet, um die ursprünglichen Werte zu projizieren. Merkmalswerte von neuen / unsichtbaren Daten, die unter oder über dem angepassten Bereich liegen, werden den Grenzen der Ausgabeverteilung zugeordnet. Beachten Sie, dass diese Transformation nicht linear ist. Es kann lineare Korrelationen zwischen Variablen verzerren, die auf derselben Skala gemessen wurden, macht jedoch Variablen, die auf verschiedenen Skalen gemessen wurden, direkter vergleichbar.
Und das Benutzerhandbuch fügt einige neue Informationen hinzu:
Durch die Durchführung einer Rangtransformation werden jedoch ungewöhnliche Verteilungen geglättet und weniger von Ausreißern beeinflusst als von Skalierungsmethoden. Es verzerrt jedoch Korrelationen und Abstände innerhalb und zwischen Merkmalen.
Speziell für eine normale Transformation:
Somit wird der Median der Eingabe zum Mittelwert der Ausgabe, zentriert auf 0. Die normale Ausgabe wird abgeschnitten, so dass das Minimum und Maximum der Eingabe - entsprechend den Quantilen 1e-7 bzw. 1 - 1e-7 - unter nicht unendlich wird die Transformation.
Die GitHub-Pull-Anforderung für diesen Schätzer verweist auf eine ältere , die zeigt, dass sie ursprünglich als "Rang-Skalierer" bezeichnet werden sollte.
Im weiteren Sinne bietet dieses Papier eine gute Zusammenfassung der verschiedenen Möglichkeiten, wie solche "inversen normalen Transformationen (INTs)" implementiert werden können:
INTs sind Möglichkeiten, die Stichprobenverteilung einer kontinuierlichen Variablen so zu transformieren, dass sie normaler verteilt erscheint. Es gibt verschiedene Arten von INTs. Die erste Unterscheidung, die wir treffen, ist zwischen rangbasierten und nicht rangbasierten INTs. Nicht rangbasierte INTs beinhalten die Annahme einer bestimmten kumulativen Verteilungsfunktion (CDF) für die beobachteten Daten, die Schätzung der Parameter dieser Verteilung, die Umwandlung der beobachteten Bewertungen in geschätzte Quantile aus der CDF und die anschließende Umwandlung dieser Quantile in Standardnormalabweichungen unter Verwendung der Umkehrung normal (oder Probit-Funktion). Solche nicht rangbasierten INTs werden üblicherweise als Copulas bezeichnet (Basrak et al. 2004; Li et al. 2006) und werden nicht weiter betrachtet. Es ist jedoch erwähnenswert, dass die rangbasierten INTs als Sonderfall der Copula-Methode ausgedrückt werden können, bei der die empirische CDF verwendet wird, anstatt die CDF auf eine bestimmte Verteilungsfamilie zu beschränken. Das heißt, jeder Moment wird tatsächlich aus den Daten geschätzt und die Quantile werden zu einfachen Funktionen der Ränge.
Rangbasierte INTs umfassen einen vorläufigen Schritt der Konvertierung einer Variablen in Ränge und können weiter in zwei Klassen unterteilt werden: diejenigen, die ein stochastisches Element beinhalten, und diejenigen, die deterministisch sind. Uns ist nur eine INT bekannt, die ein stochastisches Element enthält, und dieser Ansatz wurde als Verwendung von „zufälligen normalen Abweichungen“ bezeichnet (Conover 1980). Eine Abschreckung gegen diesen Ansatz besteht darin, dass jeder Prüfer, der dieselbe Methode auf denselben Datensatz anwendet, eine leicht unterschiedliche Antwort erhält, was für einige möglicherweise unbefriedigend ist. Dieser Ansatz hat den theoretischen Vorteil, dass die Granularität bei der Verteilung der P-Werte vermieden wird, ein Problem, das häufig viele nichtparametrische Tests plagt. Trotzdem scheint die stochastische Natur dieser INTs die Forscher zu entmutigen, und sie werden selten, wenn überhaupt, verwendet.
Deterministische rangbasierte INTs können in solche klassifiziert werden, die erwartete Normalwerte verwenden (Fisher und Yates 1938), und solche, die eine Rücktransformation des Probenquantils (oder des gebrochenen Ranges) verwenden, um die erwarteten Normalwerte zu approximieren. Unter Verwendung der numerischen Integration hat Harter (1961) die vollständigste Tabelle der erwarteten Normalwerte geliefert. INTs, die eine Rücktransformation von Bruchteilen zur Annäherung an die erwarteten Normalwerte von Fisher und Yates (Maritz 1982) beinhalten, scheinen in der Genforschung am häufigsten verwendet zu werden und werden im Mittelpunkt der Aufmerksamkeit stehen. In rücktransformierenden Rängen ist ein gebrochener Versatz erforderlich, um zu vermeiden, dass die minimalen und maximalen Beobachtungen in negative bzw. positive Unendlichkeit transformiert werden.
Wenn man sich den QuantileTransformer
Code ansieht, sieht es aus wie das allerletzte Element in der Liste: eine deterministische rangbasierte INT, die eine modifizierte Rangvariable berechnet.
Es ist jedoch eine relativ einfache Implementierung:
- Berechnen Sie empirische Ränge mit
numpy.percentile
- Ändern Sie die Rangfolge durch Interpolation mit
numpy.interp
- Zuordnung zu einer Normalverteilung durch Invertieren der CDF mit
scipy.stats.norm.ppf
Achten Sie darauf, mit Grenzen an den Extremitäten umzugehen.
yich= Φ- 1( F.( xich) )F.Φ