Prinzipieller Weg, kategoriale Variablen mit vielen Ebenen zu kollabieren?


58

Welche Techniken stehen zur Verfügung, um viele Kategorien zu einigen zu reduzieren (oder zu bündeln), um sie als Eingabe (Prädiktor) in einem statistischen Modell zu verwenden?


Stellen Sie sich eine Variable wie den Hauptfachstudenten vor (Fachbereich, den ein Student im Grundstudium auswählt). Es ist ungeordnet und kategorisch, kann aber möglicherweise Dutzende unterschiedlicher Ebenen haben. Angenommen, ich möchte major als Prädiktor in einem Regressionsmodell verwenden.

Die Verwendung dieser Ebenen im Ist-Zustand für die Modellierung führt zu allen möglichen Problemen, da es nur so viele gibt. Eine Menge statistischer Präzision würde weggeworfen, um sie zu verwenden, und die Ergebnisse sind schwer zu interpretieren. Wir interessieren uns selten für bestimmte Hauptfächer - wir interessieren uns viel eher für breite Kategorien (Untergruppen) von Hauptfächern. Es ist jedoch nicht immer klar, wie die Ebenen in solche übergeordneten Kategorien unterteilt werden sollen oder wie viele übergeordnete Kategorien verwendet werden sollen.

Für typische Daten würde ich gerne Faktoranalyse, Matrixfaktorisierung oder eine diskrete latente Modellierungstechnik verwenden. Aber Majors schließen sich gegenseitig aus, deshalb zögere ich, ihre Kovarianz für irgendetwas auszunutzen.

Außerdem interessieren mich die Hauptkategorien nicht für sich. Es ist mir wichtig, übergeordnete Kategorien zu erstellen, die in Bezug auf mein Regressionsergebnis kohärent sind . Im Fall des binären Ergebnisses schlägt das für mich so etwas wie eine lineare Diskriminanzanalyse (LDA) vor, um übergeordnete Kategorien zu generieren, die die diskriminative Leistung maximieren. Aber LDA ist eine begrenzte Technik, und das kommt mir vor, als würden mir schmutzige Daten durch den Kopf gehen. Darüber hinaus ist jede kontinuierliche Lösung schwer zu interpretieren.

In der Zwischenzeit scheint mir etwas auf Kovarianzen basierendes wie die Mehrfachkorrespondenzanalyse (Multiple Correspondence Analysis, MCA) verdächtig zu sein, da sich gegenseitig ausschließende Dummy-Variablen inhärent voneinander unterscheiden gleiche Variable.

Bearbeiten : Um es klar zu sagen, geht es darum, Kategorien zu reduzieren (nicht auszuwählen), und die Kategorien sind Prädiktoren oder unabhängige Variablen. Im Nachhinein scheint dieses Problem eine angemessene Zeit zu sein, um "sie alle zu regulieren und von Gott aussortieren zu lassen". Schön zu sehen, dass diese Frage für so viele Menschen interessant ist!


2
In meinem Kommentar unter stats.stackexchange.com/questions/230636/… habe ich eine lange Liste ähnlicher Fragen hier! Werfen Sie einen Blick ... Auch auf dieser Seite finden Sie mit den Stichwörtern "viele Ebenen" viele ähnliche Fragen, wenige gute Antworten.
kjetil b halvorsen

3
Ich werde darauf zurückkommen, wenn ich Zeit habe ... In der Zwischenzeit ist das Folgende ein sehr relevantes Papier, das die Frage teilweise zu beantworten scheint: epub.ub.uni-muenchen.de/12164/1/petry_etal_TR102_2011. pdf
kjetil b halvorsen

2
Ich glaube nicht, dass ich die Frage verstehe. Mein natürlicher Impuls wäre es, mehr Dummy-Variablen hinzuzufügen, um die Hierarchien zu kodieren (vermutlich so viele verschiedene Hierarchien, wie Sie sich vorstellen können) und dann die L1 / L2-Regularisierung zu verwenden, um diese Kategorien der obersten Ebene sicherzustellen werden eher als die feineren Niveaukategorien vorgewählt. Das Problem mit Majors usw. ist, dass es offensichtlich keine Ähnlichkeit gibt (wenn sie als Dummy-Variable dargestellt wird). Um ein gutes Modell zu erhalten (das eine Verallgemeinerung ermöglicht), müssen Sie diese Ähnlichkeit bereitstellen
seanv507

1
@ssdecontrol, ja, mein prototypisches Beispiel sind Telefonnummern (oder andere IDs). Grundsätzlich lautet die richtige Antwort auf die Frage, wie man damit modelliert: Nicht!
Seanv507

2
Wenn Sie auf Hierarchien schließen möchten, können Sie sich mit Einbettungsschemata für neuronale Netze befassen. Im Wesentlichen verwenden sie eine reduzierte Menge von Neuronen zwischen Kategorien und dem Rest des Modells, sodass das Modell beim Lösen lineare Projektionen ähnlicher Kategorien finden muss. Es handelt sich im Wesentlichen um eine nicht linearisierte Version von Faktorisierungsmaschinen. tensorflow.org/guide/embedding
seanv507

Antworten:


41

Wenn ich es richtig verstanden habe, stellen Sie sich ein lineares Modell vor, bei dem einer der Prädiktoren kategorisch ist (z. B. College Major). und Sie erwarten, dass für einige Untergruppen ihrer Ebenen (Untergruppen von Kategorien) die Koeffizienten möglicherweise genau gleich sind. Vielleicht sind die Regressionskoeffizienten für Mathematik und Physik gleich, unterscheiden sich jedoch von denen für Chemie und Biologie.

Im einfachsten Fall hätten Sie ein lineares "Einweg - ANOVA" - Modell mit einem einzelnen kategorialen Prädiktor: wobei die Ebene der kategorialen Variablen (die Kategorie). Möglicherweise bevorzugen Sie jedoch eine Lösung, die einige Ebenen (Kategorien) zusammenfasst, z. B.i { α 1 = α 2 , α 3 = α 4 = α 5 .

yij=μ+αi+ϵij,
i
{α1=α2,α3=α4=α5.

Dies legt nahe, dass man versuchen kann, eine Regularisierungsstrafe zu verwenden, die Lösungen mit unterschiedlichen Alphas bestraft. Ein , der sofort in den Sinn kommt, istDies ähnelt dem Lasso und sollte die Sparsamkeit der Unterschiede erzwingen. Genau das möchten Sie: Sie möchten, dass viele von ihnen Null sind. Der Regularisierungsparameter sollte mit Kreuzvalidierung ausgewählt werden.α i - α j ω

L=ωi<j|αiαj|.
αiαjω

Ich habe mich noch nie mit solchen Modellen befasst, und das Obige ist mir als Erstes in den Sinn gekommen. Dann habe ich mich entschlossen zu prüfen, ob so etwas implementiert ist. Ich machte einige Google-Suchanfragen und stellte bald fest, dass dies als Fusion von Kategorien bezeichnet wird. Die Suche nach lasso fusion categoricalgibt Ihnen viele Hinweise zum Lesen. Hier sind einige, die ich kurz angeschaut habe:

Gertheiss und Tutz 2010, veröffentlicht in den Annals of Applied Statistics, sehen aus wie ein aktuelles und gut lesbares Papier, das andere Referenzen enthält. Hier ist seine Zusammenfassung:

Verkleinerungsmethoden in der Regressionsanalyse werden normalerweise für metrische Prädiktoren entwickelt. In diesem Artikel werden jedoch Schrumpfungsmethoden für kategoriale Prädiktoren vorgeschlagen. Als Anwendung betrachten wir Daten aus dem Münchner Mietstandard, bei denen beispielsweise Stadtteile als kategorialer Prädiktor behandelt werden. Wenn unabhängige Variablen kategorial sind, sind einige Änderungen an den üblichen Schrumpfungsverfahren erforderlich. Es werden zwei Penalty-basierte Methoden zur Faktorauswahl und Clusterbildung von Kategorien vorgestellt und untersucht. Der erste Ansatz ist für nominale Skalenniveaus ausgelegt, der zweite für ordinale Prädiktoren. Neben der Anwendung auf den Münchner Mietstandard werden Methoden in Simulationsstudien dargestellt und verglichen.L1

Ich mag ihre Lasso-ähnlichen Lösungspfade, die zeigen, wie Ebenen von zwei kategorialen Variablen zusammengeführt werden, wenn die Regularisierungsstärke zunimmt:

Gertheiss und Tutz 2010


1
Und erst nachdem ich alles geschrieben hatte, merkte ich, dass @Kjetil bereits vor einer Woche einen Link zu einer der Veröffentlichungen von Tutz gab ...
Amöbe sagt Reinstate Monica

1
Vielen Dank, dass Sie sich mit der Literatur befasst haben! Dies ist definitiv ein guter Ausgangspunkt, besonders wenn ich einen Namen für diese Technik ("Fusion") habe, nach der ich suchen kann
shadowtalker

10

Ich habe damit an einem Projekt gerungen, an dem ich gearbeitet habe, und zu diesem Zeitpunkt habe ich festgestellt, dass es wirklich keine gute Möglichkeit gibt, Kategorien zu verschmelzen, und deshalb versuche ich, ein hierarchisches Modell mit gemischten Effekten zu entwickeln, bei dem meine Das Äquivalent Ihres Majors ist ein zufälliger Effekt.

In Situationen wie diesen müssen anscheinend zwei Entscheidungen getroffen werden: 1) Wie werden die Kategorien, die Sie haben, wenn Sie in das Modell passen, zusammengeführt, und 2) welche zusammengeführte Kategorie wird "andere", in die Sie standardmäßig neue einschließen Majors, die sich jemand ausgedacht hat, nachdem Sie Ihr Modell angepasst haben. (Ein zufälliger Effekt kann diesen zweiten Fall automatisch behandeln.)

Wenn das Verschmelzen ein Urteil erfordert (im Gegensatz zu vollständig automatisierten Vorgängen), bin ich skeptisch gegenüber der "anderen" Kategorie, die oft ein Sammelbegriff der Kategorien mit wenigen Dingen und nicht irgendeiner Art von prinzipieller Gruppierung ist.

Ein zufälliger Effekt verarbeitet viele Ebenen, fasst verschiedene Ebenen dynamisch zusammen ("zieht Stärke aus"), kann zuvor nicht sichtbare Ebenen vorhersagen usw. Ein Nachteil könnte sein, dass die Verteilung der Ebenen fast immer als normal angenommen wird.


1
Haben Sie sich überlegt, eine Proximity-Matrix als Distanzmatrix für die Clusterbildung zu verwenden? stats.stackexchange.com/questions/270201/… ?
Keith

7

Zz1,...,zKYZImpact(Z)

Impact(zk)=E(Y | Z=zk)E(Y)

YYlogitEE

Es gibt eine Python-Implementierung in der category_encoders- Bibliothek [2].

Eine Variante namens "impact coding" wurde im R-Paket Vtreat implementiert [3] [4]. Das Paket (und die eigentliche Impact-Codierung) wird in einem Artikel dieser Autoren aus dem Jahr 2016 [5] und in mehreren Blog-Posts [6] beschrieben. Beachten Sie, dass die aktuelle R-Implementierung keine multinomialen (kategorialen mit mehr als 2 Kategorien) oder multivariaten (vektorwertigen) Antworten verarbeitet.

  1. Daniele Micci-Barreca (2001). Ein Vorverarbeitungsschema für Kategoriale Attribute mit hoher Kardinalität bei Klassifizierungs- und Vorhersageproblemen. ACM SIGKDD Explorations Newsletter , Band 3, Ausgabe 1, Juli 2001, Seiten 27-32. https://doi.org/10.1145/507533.507538
  2. Kategorie Encoder. http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. John Mount und Nina Zumel (2017). vtreat: Ein statistisch einwandfreier 'data.frame' Prozessor / Conditioner. R-Paket Version 0.5.32. https://CRAN.R-project.org/package=vtreat
  4. Win-Vector (2017). Vtreat. GitHub-Repository unter https://github.com/WinVector/vtreat
  5. Zumel, Nina und Mount, John (2016). vtreat: Ein data.frame-Prozessor für Predictive Modeling. 1611.09477v3, ArXiv-E-Prints . Verfügbar unter https://arxiv.org/abs/1611.09477v3 .
  6. http://www.win-vector.com/blog/tag/vtreat/

Was ist logit E? Könnten Sie bitte die Formel selbst teilen?
Optimus Prime

@OptimusPrime Logit E ist das Logit der Erwartung
Shadowtalker

Okay. In diesem Fall ist also Aufprall (zk) = log (E (Y | Z = zk) - E (Y)) ODER Aufprall (zk) = log (E (Y | Z = zk)) - log (E (Y) )?
Optimus Prime

2
Dies wird überwacht und erfordert komplexe Anpassungen, um die Anzahl der Freiheitsgrade zu erkennen, die Y "gestohlen" werden.
Frank Harrell

3
Mit Sicherheit - jede Methode, die Y verwendet, um zu bestimmen, wie die Kategorien für den kategorialen Prädiktor behandelt werden, unterliegt einer Überanpassung, und es wird schwierig sein, Unsicherheitsintervalle so groß zu machen, dass sie genau genug sind. Ich habe mich auf unbeaufsichtigtes Lernen konzentriert, damit diese Probleme nicht auftreten.
Frank Harrell

6

Wenn Sie eine unabhängige Hilfsvariable haben, die logisch als Anker für den kategorialen Prädiktor zu verwenden ist, ziehen Sie die Verwendung von Fischers optimalem Bewertungsalgorithmus in Betracht, der mit seiner linearen Diskriminanzanalyse zusammenhängt. Angenommen, Sie wollten den Hauptfachbereich in einer einzigen fortlaufenden Metrik abbilden und nehmen an, dass ein geeigneter Anker ein quantitativer SAT-Test vor der Zulassung ist. Berechnen Sie die mittlere quantitative Punktzahl für jeden Major und ersetzen Sie den Major durch diesen Mittelwert. Sie können dies problemlos auf mehrere Anker ausweiten und so mehr als einen Freiheitsgrad schaffen, mit dem Sie die Hauptpunkte zusammenfassen können.

Beachten Sie, dass im Gegensatz zu einigen früheren Vorschlägen eine optimale Bewertung einen unbeaufsichtigten Lernansatz darstellt. Die Freiheitsgrade (Anzahl der Parameter, die gegen Y geschätzt werden) sind daher gering und gut definiert. Dies führt zu einer angemessenen statistischen Schlussfolgerung (wenn häufig auftretende, genaue Standardfehler, Zuverlässigkeit) (Kompatibilitäts-) Intervalle und p-Werte).

Ich mag den Strafvorschlag von https://stats.stackexchange.com/users/28666/amoeba @amoeba sehr.


Würden Sie sich meine Frage stats.stackexchange.com/q/383887/44368 ansehen ? Danke.
Hans

Ist die in Folie 15 dieser Vorlesung beschriebene Methode optimal zu bewerten ? Die Suche nach diesen Begriffen ist etwas schwierig, da sie in anderen Zusammenhängen häufig vorkommen.
Shadowtalker

1
Ich bin mir 0,85 sicher, dass es ist
Frank Harrell

Das klingt wie (besser) Version der Idee der Zielcodierung aus dem maschinellen Lernen, zum Beispiel stats.stackexchange.com/questions/398903/...
kjetil b Halvorsen

2

Die Arbeit " Ein Vorverarbeitungsschema für Kategorieattribute mit hoher Kardinalität bei Klassifizierungs- und Vorhersageproblemen " nutzt die hierarchische Struktur der Kategorieattribute in einem verschachtelten "empirischen Bayes" -Schema auf jedem Pool / jeder Ebene, um die kategoriale Variable in eine hintere Klassenwahrscheinlichkeit abzubilden, die kann direkt oder als Eingabe in andere Modelle verwendet werden.


Dies ist im Grunde das, was @Wayne vorschlug (Modelle mit gemischten Effekten - häufig verwendete Version der Bayes'schen hierarchischen Modelle) und was ich in einem Kommentar zur Frage vorschlug. OP möchte jedoch auf Hierarchien schließen.
Seanv507

1

Hier gibt es mehrere Fragen, von denen einige früher gestellt und beantwortet wurden. Wenn das Problem darin besteht, dass die Berechnung viel Zeit in Anspruch nimmt: Es gibt mehrere Methoden, um damit umzugehen. Sehen Sie sich die groß angelegte Regression mit der spärlichen Feature-Matrix und dem Artikel von Maechler und Bates an .

Aber es kann durchaus sein, dass das Problem bei der Modellierung liegt. Ich bin mir nicht sicher, ob die üblichen Methoden zur Behandlung von Variablen mit kategorialen Prädiktoren wirklich eine ausreichende Anleitung bieten, wenn kategoriale Variablen mit sehr vielen Ebenen vorhanden sind. Weitere Informationen finden Sie auf dieser Website [many-categories]. Es gibt sicherlich viele Möglichkeiten, die man ausprobieren könnte, man könnte (wenn dies eine gute Idee für Ihr Beispiel ist, ich kann es nicht wissen, Sie haben uns Ihre spezifische Anwendung nicht mitgeteilt) eine Art hierarchischer kategorialer Variable (n), das heißt, inspiriert sein Informationen zu dem in der biologischen Klassifizierung verwendeten System finden Sie unter https://en.wikipedia.org/wiki/Taxonomy_(biology).. Dort wird eine Person (Pflanze oder Tier) zuerst in Domänen, dann in Königreich, Stamm, Klasse, Ordnung, Familie, Gattung und schließlich in Arten eingeteilt. Sie können also für jede Ebene in der Klassifizierung eine Faktorvariable erstellen. Wenn es sich beispielsweise um Produkte handelt, die in einem Supermarkt verkauft werden, können Sie eine hierarchische Klassifizierung erstellen, die mit [Lebensmittel, Küchengeschirr usw.] beginnt. Lebensmittel können dann als [Fleisch, Fisch, Gemüse, Getreide usw.] klassifiziert werden bald. Nur eine Möglichkeit, die eine vorherige Hierarchie angibt, die nicht spezifisch mit dem Ergebnis zusammenhängt.

Aber du hast gesagt:

Es ist mir ein Anliegen, übergeordnete Kategorien zu erstellen, die in Bezug auf mein Regressionsergebnis kohärent sind.

Dann könnten Sie es mit einem verschmolzenen Lasso versuchen und andere Antworten in diesem Thread sehen, was als eine Möglichkeit gesehen werden könnte, die Ebenen auf der Grundlage der Daten in größere Gruppen zusammenzufassen, und nicht als vorherige Organisation der Ebenen, wie es mein Vorschlag für eine hierarchische Struktur impliziert Organisation der Ebenen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.