Course
Multikollinearität in der Regression: Ein Leitfaden für Datenwissenschaftler
Eine der größten Herausforderungen bei der Erstellung eines effektiven Regressionsmodells ist die so genannte Multikollinearität. Multikollinearität entsteht, wenn zwei oder mehr unabhängige Variablen in einem Modell hoch korreliert sind, was zu unzuverlässigen statistischen Schlussfolgerungen führt. Das kann ein großes Problem sein, wenn du deine Regressionskoeffizienten genau interpretieren musst oder wenn du dein Vertrauen in sie testen musst.
Hier werde ich dich durch die wichtigsten Konzepte der Multikollinearität führen, wie du sie erkennst und wie du sie angehen kannst. Wenn du dich noch nicht mit linearer Regression auskennst, lies unser Tutorial Einfache lineare Regression: Alles, was du wissen musst als Ausgangspunkt, aber vergewissere dich, dass du Multiple Linear Regression in R weiterführst: Tutorial mit Beispielen,, in dem es um Regression mit mehr als einer unabhängigen Variable geht, wo Multikollinearität auftauchen kann.
Was ist Multikollinearität?
Die Entwicklung präziser Modelle für maschinelles Lernen ist eine schwierige Aufgabe, weil so viele Faktoren eine Rolle spielen. Die Daten sollten von angemessener Qualität, Menge, etc. sein. Dann musst du die richtige Art von maschinellen Lernalgorithmen entwickeln. Dazwischen gibt es jedoch eine Phase der Datenaufbereitung, die nicht so glamourös ist wie die Erstellung von Vorhersagemodellen, aber mit Sicherheit ist diese Phase oft der entscheidende Faktor im Lebenszyklus des maschinellen Lernens.
Bei der Datenaufbereitung achten wir auf Multikollinearität, die auftritt, wenn unabhängige Variablen in einem Regressionsmodell korreliert sind, d.h. sie sind nicht unabhängig voneinander. Das ist kein gutes Zeichen für das Modell, denn Multikollinearität führt oft dazu, dass die Schätzung der Regressionskoeffizienten verzerrt wird, die Standardfehler aufgebläht werden und dadurch die statistische Aussagekraft des Modells verringert wird. Das macht es auch schwierig, die Bedeutung der einzelnen Variablen im Modell zu bestimmen.
Arten von Multikollinearität
Multikollinearität kann zwei Hauptformen annehmen, die sich jeweils darauf auswirken, wie die unabhängigen Variablen in einem Regressionsmodell interagieren und wie zuverlässig die resultierenden Schätzungen sind.
Perfekte Multikollinearität
Perfekte Multikollinearität liegt vor, wenn eine der unabhängigen Variablen in einem Regressionsmodell durch eine oder mehrere der anderen unabhängigen Variablen genau vorhergesagt werden kann. Das bedeutet, dass es eine perfekte Beziehung zwischen ihnen gibt.
Stell dir vor, du hast zwei Variablen, X1
und X2
, und sie sind mit der Gleichung verbunden: X1 = 2*X2 + 3
Das bedeutet, dass das Regressionsmodell nicht in der Lage ist, die Auswirkungen von X1
und X2
zu trennen, weil sie im Grunde genommen dieselbe Geschichte erzählen. Mit anderen Worten: Eine Variable ist eine perfekte lineare Funktion der anderen.
Unvollkommene Multikollinearität
Bei unvollkommener Multikollinearität sind die Variablen zwar stark miteinander korreliert, aber nicht in einer perfekten Eins-zu-Eins-Beziehung wie bei perfekter Multikollinearität. Die Variablen können eine hohe Korrelation aufweisen, d.h. wenn sich eine Variable ändert, ändert sich die andere tendenziell auch, aber es ist keine exakte Vorhersage.
In dieser Situation ist es nicht so, dass das Modell dir keine Ergebnisse liefert. Das einzige Problem ist, dass diese Ergebnisse instabil sein können, d. h., dass schon kleine Veränderungen in den Daten zu großen Veränderungen in den geschätzten Koeffizienten führen können. Das macht es schwieriger, die Bedeutung der einzelnen Variablen zuverlässig zu interpretieren.
Strukturelle Multikollinearität
Strukturelle Multikollinearität ergibt sich aus der Art und Weise, wie das Modell aufgebaut ist, und nicht so sehr aus den natürlichen Beziehungen zwischen ihnen. Das passiert oft, wenn du Interaktionsterme oder polynomiale Terme in dein Modell aufnimmst.
Wenn du zum Beispiel denkst, dass die Effektgröße einer Variable mit der einer anderen Variable zunimmt, könntest du einen Interaktionsterm hinzufügen. Das Problem ist jedoch, dass, wenn diese Variablen bereits in gewissem Maße korreliert sind, die Hinzufügung des Interaktionsterms wirklich übertrieben sein und zu Multikollinearitätsproblemen führen könnte.
Multikollinearität in der Regression
Multikollinearität wirkt sich auf die Regressionsanalyse aus, indem sie Probleme verursacht, wenn du versuchst, die Beziehung zwischen den unabhängigen Variablen (den Prädiktoren) und der abhängigen Variable (dem Ergebnis) zu schätzen. Insbesondere erhöht die Multikollinearität die Varianz der Koeffizientenschätzungen und macht sie empfindlich für kleine Änderungen im Modell oder in den Daten.
Wenn die Koeffizienten instabil werden, werden die Standardfehler größer, was wiederum zu unbedeutenden p-Werten führen kann, selbst wenn die Variablen wirklich wichtig sind. Es ist wichtig zu wissen, dass die Multikollinearität die Gesamtvorhersagekraft des Modells nicht beeinträchtigt. Das wirkt sich jedoch auf die Interpretation des Modells aus, denn unser Modell wird überhöhte Fehler und instabile Schätzungen aufweisen.
Wie man Multikollinearität erkennt
Die Erkennung von Multikollinearität erfordert mehrere Diagnoseinstrumente. Wir werden diese anhand einer Teilmenge des Datensatzes aus dem Wettbewerb "Wohnungspreise" auf Kaggle untersuchen. Die Teilmenge der Daten, die wir verwenden werden, findest du in diesem GitHub-Repository. Laden wir den Datensatz und erkunden ihn mit dem folgenden Code:
import pandas as pd
import numpy as np
import seaborn as sns
from statsmodels.stats.outliers_influence import variance_inflation_factor
df = pd.read_csv('mc_df.csv')
df.head()
Korrelationsmatrix
Eine weit verbreitete Technik zum Aufspüren von Multikollinearität ist die Korrelationsmatrix, mit der die Stärke der Beziehungen zwischen den Variablen sichtbar gemacht werden kann. Die Matrix zeigt die paarweisen Korrelationskoeffizienten zwischen den Variablen, die angeben, wie stark sie linear miteinander verbunden sind (die Werte reichen von -1 bis 1). Eine Faustregel, die ich verwende, besagt, dass absolute Korrelationswerte über 0,6 auf starke Multikollinearität hinweisen.
Da bei den unabhängigen Variablen Multikollinearität festgestellt wurde, müssen wir die Zielvariable SalePrice
aus unserem Datensatz entfernen. Dies wird mit dem folgenden Code gemacht.
multi_c_df = multi_c_df.drop('SalePrice', axis=1)
Jetzt sind wir bereit für die Korrelationsanalyse. Der folgende Code berechnet die Korrelationsmatrix für den DataFrame multi_c_df
. Nach der Berechnung der Korrelationen verwendet der Code die Funktion heatmap()
von Seaborn, um die Korrelationsmatrix visuell als Heatmap darzustellen. Das Argument annot=True
fügt die numerischen Korrelationswerte direkt in die Heatmap ein .
# Correlation matrix
correlation_matrix = multi_c_df.corr()
# Set up the matplotlib figure
plt.figure(figsize=(10, 6))
# Create a heatmap for the correlation matrix
sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)
# Title for the heatmap
plt.title("Correlation Heatmap", fontsize=16)
# Show the heatmap
plt.show()
Korrelationsmatrix, dargestellt als Heatmap. Bild vom Autor
Die obige Ausgabe zeigt, dass es eine Korrelation zwischen einigen der unabhängigen Variablen gibt. Zum Beispiel haben BedroomAbvGr
und TotRmsAbvGrd
eine relativ hohe Korrelation (0,68). Auch GarageCars
und OverallQual
haben eine Korrelation von 0,60, was darauf hindeutet, dass sie ebenfalls miteinander verbunden sind. Es gibt also unabhängige Variablen, die eine gute Korrelation aufweisen, was auf das Vorhandensein von Multikollinearität für einige, wenn nicht sogar alle dieser Variablen hindeutet.
An dieser Stelle ist es sehr wichtig zu beachten, dass Multikollinearität auch dann auftreten kann, wenn keine offensichtliche paarweise Korrelation zwischen den Variablen besteht, weil eine Variable mit einer Linearkombination von mehr als einer anderen Variable korreliert sein kann. Deshalb ist es wichtig, auch den Varianzinflationsfaktor zu berücksichtigen, den wir als Nächstes behandeln werden.
Varianzinflationsfaktor (VIF)
Der Varianzinflationsfaktor (VIF) ist eine der gängigsten Techniken zur Feststellung von Multikollinearität. Vereinfacht ausgedrückt, gibt sie einen numerischen Wert an, der angibt, wie stark die Varianz eines Regressionskoeffizienten aufgrund von Multikollinearität erhöht ist. Ein VIF-Wert von mehr als 5 deutet auf mäßige Multikollinearität hin, während Werte über 10 auf schwere Multikollinearität hindeuten.
Lass uns das in unserem Datensatz untersuchen. Wir berechnen nun den VIF-Wert für jede dieser unabhängigen Variablen. Diese Aufgabe wird im folgenden Code mit derFunktion variance_inflation_factor()
ausgeführt.
# Calculate VIF for each numerical feature
vif_data = pd.DataFrame()
vif_data["feature"] = multi_c_df.columns
# Calculate VIF and round to 4 decimal places
vif_data["VIF"] = [round(variance_inflation_factor(multi_c_df.values, i), 4) for i in range(df.shape[1])]
# Sort VIF values in descending order
vif_data = vif_data.sort_values(by="VIF", ascending=False)
# Display the VIF DataFrame
print(vif_data)
VIF-Wert für die numerischen Variablen. Bild vom Autor
Du siehst, dass es mehrere Variablen gibt, deren VIF-Wert größer als 10 ist, was auf Multikollinearität hinweist.
Zustandsindex
Der Zustandsindex ist ein weiteres Diagnoseinstrument zur Erkennung von Multikollinearität, wobei Werte über 10 auf mäßige Multikollinearität und Werte über 30 auf starke Multikollinearität hinweisen. Der Bedingungsindex funktioniert, indem überprüft, wie stark die unabhängigen Variablen miteinander verbunden sind, indem er die Beziehungen zwischen ihren Eigenwerten untersucht.
Der folgende Code berechnet den Bedingungsindex, um ein Regressionsmodell auf Multikollinearität zu prüfen. Zunächst werden die Eigenwerte der Korrelationsmatrix (die die Beziehungen zwischen den Variablen anzeigt) berechnet. Der Zustandsindex wird dann berechnet, indem der größte Eigenwert durch den kleinsten dividiert wird.
from numpy.linalg import eigvals
# Calculate the condition index
eigenvalues = eigvals(correlation_matrix)
condition_index = max(eigenvalues) / min(eigenvalues)
print(f'Condition Index: {condition_index}')
In unserem Fall beträgt der Konditionsindexwert 13, was auf eine mäßige Multikollinearität im Modell hinweist. Obwohl dieser Grad an Multikollinearität gemäß dem Konditionsindex nicht schwerwiegend ist, kann er dennoch die Genauigkeit der Schätzungen der Regressionskoeffizienten beeinträchtigen und es schwieriger machen, die einzelnen Beiträge der korrelierten Variablen zu unterscheiden. Wenn du mehr über Eigenwerte wissen möchtest, lies unseren Artikel Eigenvektoren und Eigenwerte: Wichtige Einblicke für Data Science.
Wie geht man mit Multikollinearität um?
Um die Multikollinearität in den Regressionsmodellen effektiv zu bewältigen, gibt es mehrere Techniken, die man anwenden kann. Diese Methoden tragen dazu bei, dass das Modell genau und interpretierbar bleibt, auch wenn die unabhängigen Variablen eng miteinander verbunden sind.
Redundante Prädiktoren beseitigen
Eine der einfachsten Möglichkeiten, mit Multikollinearität umzugehen, besteht darin, einfach eine der hoch korrelierten Variablen zu entfernen, oft diejenige mit dem höchsten VIF-Wert. Das ist effektiv, hat aber den Nachteil, dass nützliche Informationen verloren gehen können, wenn man nicht sorgfältig vorgeht.
Kombinieren von Variablen
Wenn zwei oder mehr Variablen stark korreliert sind, können wir sie mit Techniken wie der Hauptkomponentenanalyse (PCA) zu einem einzigen Prädiktor kombinieren. Dadurch wird die Dimensionalität des Modells reduziert, während die wichtigsten Informationen erhalten bleiben. Der größte Nachteil ist der Verlust der Interpretierbarkeit, da es schwierig ist, einem nicht-technischen Publikum die Wissenschaft und Mathematik hinter PCA zu erklären.
Ridge- und Lasso-Regression
Für Datenwissenschaftler ist die Anwendung von Regularisierungstechniken mit Ridge- und Lasso-Regression eine weitere beliebte Technik, um mit dem Problem der Multikollinearität umzugehen. Diese Regularisierungstechniken wenden Strafen auf das Regressionsmodell an, um die Koeffizienten korrelierter Variablen zu verkleinern und so die Auswirkungen der Multikollinearität zu mindern.
Häufige Fehler und bewährte Praktiken
Beim Umgang mit Multikollinearität gibt es einige häufige Fehler, die zu einer schlechten Modellleistung führen können. Es ist wichtig, sich dieser Fehler bewusst zu sein und Best Practices zu befolgen, um zuverlässigere Regressionsmodelle zu erstellen.
Fehlinterpretation hoher VIF-Werte
Wenn du einen hohen Varianzinflationsfaktor (VIF) für eine Variable feststellst, ist die Versuchung groß, diese Variable sofort aus deinem Modell zu entfernen, weil du davon ausgehst, dass sie Multikollinearität verursacht. Das kann jedoch ein Fehler sein, denn selbst wenn eine Variable einen hohen VIF-Wert hat, kann sie dennoch sehr wichtig für die Vorhersage des Ergebnisses sein. Wenn du sie also entfernst, ohne ihre Wichtigkeit zu überprüfen, könnte dein Modell schlechter abschneiden. Das Wichtigste ist, dass du sorgfältig abwägst, ob die Variable wesentlich ist, bevor du dich entscheidest, sie zu entfernen.
Übermäßiges Vertrauen in Korrelationsmatrizen
Eine Korrelationsmatrix ist eine nützliche Technik, um das Ausmaß und die Richtung der Beziehung zwischen Variablen zu ermitteln, aber das Problem ist, dass sie nur lineare Beziehungen aufzeigt. Was ist mit den komplexen, nicht-linearen Beziehungen? Leider wird das nicht in der Matrix festgehalten. Wenn du dich also nur auf eine Korrelationsmatrix verlässt, bekommst du kein vollständiges Bild. Deshalb ist es wichtig, andere Kennzahlen wie den VIF und den Konditionsindex zu verwenden, um ein vollständigeres Bild zu erhalten.
Alternativen zum Umgang mit Multikollinearität
Neben den traditionellen Ansätzen gibt es auch einige fortschrittliche Methoden, um das Problem der Multikollinearität zu lösen. Einige dieser Techniken werden im Folgenden erläutert.
Methoden der Merkmalsauswahl
Automatisierte Merkmalsauswahlverfahren wie die rekursive Merkmalseliminierung (RFE) können eine gute Alternative sein. Diese Methoden analysieren die Wichtigkeit der einzelnen Prädiktoren und entfernen automatisch diejenigen, die keinen großen Nutzen bringen. Dies vereinfacht den Prozess und macht es einfacher, Multikollinearität zu reduzieren, ohne dass du manuell entscheiden musst, welche Variablen entfernt werden sollen.
Mehr Daten sammeln
Eine Erhöhung des Stichprobenumfangs kann die Multikollinearität verringern, indem mehr Variation in den Datensatz einfließt und es dadurch einfacher wird, zwischen den Beiträgen der verschiedenen Prädiktoren zu unterscheiden. Eine andere Lösung ist also, einfach mehr Daten zu sammeln. Je größer der Datensatz ist, desto größer ist die Variation der Variablen und desto einfacher ist es, zwischen den Auswirkungen der verschiedenen Prädiktoren zu unterscheiden. Dies wiederum hilft dabei, die Auswirkungen der Multikollinearität zu verringern.
Fazit
Das Verständnis und der Umgang mit Multikollinearität sind entscheidend für die Erstellung robuster und interpretierbarer Regressionsmodelle. Indem du Multikollinearität mit Techniken wie VIF, Korrelationsmatrizen und Konditionsindex erkennst und sie mit Methoden wie Lasso- und Ridge-Regression auflöst oder redundante Prädiktoren entfernst, kannst du zuverlässige und aussagekräftige Modellergebnisse sicherstellen. Prüfe deine Regressionsmodelle immer auf Multikollinearität und wende geeignete Lösungen an, um die Integrität deiner Analysen zu erhalten.
Wenn du dich weiterbilden und auffrischen möchtest, wie du eine lineare Regression in deinem Lieblingsarbeitsbereich durchführst, solltest du dir die folgenden Quellen anschauen:
- Grundlagen der linearen Regression in Python: Lerne, wie ein Regressionsproblem formuliert wird und wie ein linearer Regressionsalgorithmus in Python funktioniert.
- Lineare Regression in Excel: Ein umfassender Leitfaden für Einsteiger: Eine Schritt-für-Schritt-Anleitung zur Durchführung von linearen Regressionen in Excel, zur Interpretation der Ergebnisse und zur Visualisierung der Daten für verwertbare Erkenntnisse.
- Wie man eine lineare Regression in R durchführt: Lerne die lineare Regression, ein statistisches Modell, das die Beziehung zwischen Variablen mit R analysiert.
Werde ein ML-Wissenschaftler
Erfahrener Profi in den Bereichen Datenwissenschaft, künstliche Intelligenz, Analytik und Datenstrategie.
Fragen zur Multikollinearität
Was ist Multikollinearität?
Multikollinearität liegt vor, wenn zwei oder mehr unabhängige Variablen in einem Regressionsmodell hoch korreliert sind.
Was ist der Varianzinflationsfaktor (VIF)?
Der VIF misst, wie stark die Varianz eines Regressionskoeffizienten aufgrund von Multikollinearität erhöht wird. Ein hoher VIF bedeutet, dass eine Variable stark mit anderen zusammenhängt, was das Modell instabil und weniger zuverlässig machen könnte.
Wie wirkt sich die Multikollinearität auf mein Regressionsmodell aus?
Multikollinearität vergrößert die Standardfehler der Regressionskoeffizienten und macht es schwieriger zu erkennen, welche Variablen signifikant sind.
Was ist der Unterschied zwischen perfekter und unvollkommener Multikollinearität?
Perfekte Multikollinearität liegt vor, wenn eine Variable eine exakte Linearkombination einer anderen ist, so dass es unmöglich ist, die Koeffizienten des Modells zu berechnen. Im Gegensatz dazu liegt unvollständige Multikollinearität vor, wenn die Variablen zwar hoch korreliert sind, aber nicht exakt. Allerdings kann dies auch zu instabilen Modellschätzungen führen.
Wie hilft der Konditionsindex bei der Erkennung von Multikollinearität?
Wenn der Konditionsindex über 10 liegt, deutet das auf eine mäßige Multikollinearität hin, aber wenn er über 30 liegt, deutet das auf eine ernsthafte Multikollinearität hin.
Lernen mit DataCamp
Course
Einführung in die Regression in R
Course