Ga naar hoofdinhoud

Multicollineariteit in regressie: een gids voor data scientists

Ontdek de impact van multicollineariteit op regressiemodellen. Leer technieken om multicollineariteit te detecteren en de betrouwbaarheid van je model te behouden. Ontdek praktische oplossingen om het aan te pakken.
· 9 min lezen

Verken met AI

Een van de grootste uitdagingen bij het bouwen van een effectief regressiemodel is wat we multicollineariteit noemen. Multicollineariteit ontstaat wanneer twee of meer onafhankelijke variabelen in een model sterk gecorreleerd zijn, wat leidt tot onbetrouwbare statistische gevolgtrekkingen. Dit kan een groot probleem zijn als je je regressiecoëfficiënten nauwkeurig wilt interpreteren of als je het vertrouwen daarin wilt toetsen.

Hier neem ik je mee door de kernconcepten van multicollineariteit, hoe je het detecteert en hoe je het aanpakt. Als lineaire regressie nieuw voor je is, lees dan eerst onze tutorial Eenvoudige lineaire regressie: alles wat je moet weten als startpunt, maar ga daarna zeker verder met Meervoudige lineaire regressie in R: tutorial met voorbeelden, waarin je leert over regressie met meer dan één onafhankelijke variabele — precies de plek waar multicollineariteit kan opduiken. 

Wat is multicollineariteit?

Het bouwen van accurate machinelearningmodellen is een uitdagende taak omdat er zoveel factoren meespelen. De data moeten van redelijke kwaliteit en omvang zijn, enzovoort. Vervolgens moet je het juiste type machinelearningalgoritmen kiezen. Daartussen zit echter een fase van datapreparatie. Die is misschien minder glamorous dan het bouwen van voorspellende modellen, maar vormt vaak wel het beslissende verschil in de levenscyclus van machine learning. 

Tijdens de datapreparatie letten we op multicollineariteit: dat treedt op wanneer onafhankelijke variabelen in een regressiemodel gecorreleerd zijn, wat betekent dat ze niet onafhankelijk van elkaar zijn. Dit is geen goed teken voor het model, want multicollineariteit vertekent vaak de schatting van regressiecoëfficiënten, vergroot de standaardfouten en vermindert daarmee de statistische power van het model. Het maakt het ook lastig om het belang van afzonderlijke variabelen in het model te bepalen.

Typen multicollineariteit

Multicollineariteit kent grofweg twee vormen, die elk beïnvloeden hoe de onafhankelijke variabelen in een regressiemodel zich tot elkaar verhouden en hoe betrouwbaar de resulterende schattingen zijn.

Perfecte multicollineariteit

Perfecte multicollineariteit treedt op wanneer een van de onafhankelijke variabelen in een regressiemodel exact kan worden voorspeld met behulp van een of meer andere onafhankelijke variabelen. Er is dan een perfecte relatie tussen die variabelen. 

Stel dat je twee variabelen hebt, X1 en X2, en ze zijn gerelateerd via de vergelijking: X1 = 2*X2 + 3. Dit betekent in feite dat het regressiemodel de effecten van X1 en X2 niet kan scheiden, omdat ze in essentie hetzelfde verhaal vertellen. Met andere woorden: de ene variabele is een perfecte lineaire functie van de andere. 

Imperfecte multicollineariteit

Bij imperfecte multicollineariteit zijn variabelen sterk gecorreleerd, maar niet op een perfecte, één-op-één manier zoals bij perfecte multicollineariteit. De variabelen kunnen een hoge correlatie delen, wat betekent dat als de ene variabele verandert, de andere dat ook vaak doet, maar het is geen exacte voorspelling. 

In deze situatie is het niet zo dat het model geen resultaten oplevert. Het probleem is alleen dat die resultaten mogelijk instabiel zijn, wat betekent dat zelfs kleine veranderingen in de data tot grote veranderingen in de geschatte coëfficiënten kunnen leiden. Daardoor wordt het lastiger om het belang van elke variabele betrouwbaar te interpreteren.

Structurele multicollineariteit

Structurele multicollineariteit ontstaat door de manier waarop het model is opgebouwd, en minder door de natuurlijke relaties tussen variabelen. Dit gebeurt vaak wanneer je interactietermen of polynoomtermen opneemt in je model.

Als je bijvoorbeeld denkt dat het effect van de ene variabele toeneemt naarmate een andere variabele toeneemt, kun je overwegen een interactieterm toe te voegen. Maar als deze variabelen al enigszins gecorreleerd zijn, kan het toevoegen van de interactieterm de boel flink overdrijven en tot multicollineariteitsproblemen leiden.

Multicollineariteit in regressie

Multicollineariteit beïnvloedt regressieanalyse doordat er problemen ontstaan wanneer je de relatie tussen de onafhankelijke variabelen (de voorspellers) en de afhankelijke variabele (de uitkomst) probeert te schatten. Concreet vergroot multicollineariteit de variantie van de coëfficiëntschattingen, waardoor ze gevoelig worden voor kleine veranderingen in het model of de data. 

Wanneer de coëfficiënten instabiel worden, nemen de standaardfouten toe, wat op zijn beurt kan resulteren in niet-significante p-waarden, zelfs wanneer de variabelen werkelijk belangrijk zijn. Belangrijk om te weten: multicollineariteit tast de algehele voorspellende kracht van het model niet aan. Het beïnvloedt wel de interpretatie van het model, omdat de fouten opgeblazen zijn en de schattingen instabiel.

Hoe detecteer je multicollineariteit

Het detecteren van multicollineariteit vergt meerdere diagnostische tools. We verkennen deze met een subset van de dataset uit de Housing Prices Competition op Kaggle. De subset die we gebruiken vind je in deze GitHub-repository. Laten we de dataset laden en verkennen met de onderstaande 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()

Correlatiematrix

Een veelgebruikte techniek om multicollineariteit te detecteren is via een correlatiematrix die helpt de sterkte van relaties tussen variabelen te visualiseren. De matrix toont de paargewijze correlatiecoëfficiënten tussen de variabelen, wat aangeeft hoe sterk ze lineair gerelateerd zijn (waarden variëren van -1 tot 1). Een vuistregel die ik gebruik: absolute correlatiewaarden boven 0,6 duiden op sterke multicollineariteit.

Omdat multicollineariteit wordt gedetecteerd bij onafhankelijke variabelen, moeten we de targetvariabele, SalePrice, uit onze dataset verwijderen. Dat doen we met de onderstaande code.

multi_c_df = multi_c_df.drop('SalePrice', axis=1)

Nu zijn we klaar voor de correlatieanalyse. De onderstaande code berekent de correlatiematrix voor de DataFrame multi_c_df. Na het berekenen van de correlaties gebruikt de code de heatmap() -functie van Seaborn om de correlatiematrix visueel weer te geven als heatmap. Het argument annot=True plaatst de numerieke correlatiewaarden direct op de heatmap. 

# 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()

Correlatiematrix weergegeven als heatmap. Afbeelding door auteur

De bovenstaande output laat zien dat er correlatie is tussen sommige onafhankelijke variabelen. Zo hebben BedroomAbvGr en TotRmsAbvGrd een relatief hoge correlatie (0,68). Ook GarageCars en OverallQual hebben een correlatie van 0,60, wat aangeeft dat die ook gerelateerd zijn. Er zijn dus onafhankelijke variabelen met een behoorlijke correlatie, wat duidt op de aanwezigheid van multicollineariteit voor sommige — zo niet alle — van deze variabelen. 

Op dit punt is het belangrijk te benadrukken dat multicollineariteit ook kan ontstaan als er geen duidelijke paargewijze correlatie tussen variabelen is, omdat één variabele gecorreleerd kan zijn met een lineaire combinatie van meer dan één andere variabele. Daarom is het belangrijk ook de variance inflation factor te bekijken, waar we zo op ingaan.  

Variance inflation factor (VIF)

De variance inflation factor (VIF) is een van de meest gebruikte technieken om multicollineariteit te detecteren. Simpel gezegd geeft het een numerieke waarde die aangeeft hoeveel de variantie van een regressiecoëfficiënt is opgeblazen door multicollineariteit. Een VIF-waarde groter dan 5 duidt op matige multicollineariteit, terwijl waarden boven 10 op ernstige multicollineariteit wijzen.

Laten we dit in onze dataset bekijken. We berekenen nu de VIF-waarde voor elk van deze onafhankelijke variabelen. Deze taak wordt uitgevoerd in de onderstaande code met de variance_inflation_factor()-functie.

# 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-waarden voor de numerieke variabelen. Afbeelding door auteur

Je ziet dat er verschillende variabelen zijn met een VIF-waarde groter dan 10, wat wijst op de aanwezigheid van multicollineariteit.

Condition index

De condition index is een andere diagnostische tool voor het detecteren van multicollineariteit, waarbij waarden boven 10 op matige multicollineariteit duiden en waarden boven 30 op ernstige multicollineariteit. De condition index werkt door te onderzoeken in hoeverre de onafhankelijke variabelen met elkaar samenhangen door de relaties tussen hun eigenwaarden te bekijken.

De onderstaande code berekent de condition index om multicollineariteit in een regressiemodel te controleren. Eerst worden de eigenwaarden van de correlatiematrix (die de relaties tussen variabelen toont) berekend. De condition index wordt vervolgens berekend door de grootste eigenwaarde te delen door de kleinste. 

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 ons geval is de waarde van de condition index 13, wat wijst op matige multicollineariteit in het model. Hoewel dit niveau van multicollineariteit volgens de condition index niet ernstig is, kan het nog steeds de precisie van de regressiecoëfficiëntschattingen beïnvloeden en het lastiger maken om de individuele bijdragen van de gecorreleerde variabelen te onderscheiden. Wil je meer weten over eigenwaarden, lees dan ons artikel Eigenvectoren en eigenwaarden: kerninzichten voor data science.

Hoe pak je multicollineariteit aan

Om multicollineariteit in regressiemodellen effectief te beheersen, kun je verschillende technieken toepassen. Deze methoden helpen ervoor te zorgen dat het model accuraat en interpreteerbaar blijft, ook wanneer onafhankelijke variabelen nauw met elkaar samenhangen.

Redundante voorspellers verwijderen

Een van de simpelste manieren om met multicollineariteit om te gaan, is om één van de sterk gecorreleerde variabelen te verwijderen, vaak degene met de hoogste VIF-waarde. Dit is effectief, maar het nadeel is dat je bruikbare informatie kunt verliezen als je niet zorgvuldig te werk gaat.

Variabelen combineren

Een andere techniek: wanneer twee of meer variabelen sterk gecorreleerd zijn, kun je ze combineren tot één voorspeller met technieken zoals principal component analysis (PCA). Dit vermindert de dimensionaliteit van het model, terwijl de belangrijkste informatie behouden blijft. Het grootste nadeel is verlies aan interpretatie, omdat het lastig is om de theorie en wiskunde achter PCA aan een niet-technisch publiek uit te leggen. 

Ridge- en lasso-regressie

Voor data scientists zijn regularisatietechnieken met ridge- en lasso-regressie een andere populaire aanpak om het multicollineariteitsprobleem te tackelen. Deze technieken leggen straffen op aan het regressiemodel, waardoor de coëfficiënten van gecorreleerde variabelen worden verkleind en de effecten van multicollineariteit worden afgezwakt.

Veelvoorkomende fouten en best practices

Bij het omgaan met multicollineariteit komen een paar veelvoorkomende fouten voor die tot slechte modelprestaties kunnen leiden. Het is belangrijk je hiervan bewust te zijn en best practices te volgen om betrouwbaardere regressiemodellen te bouwen.

Hoge VIF-waarden misinterpreteren

Als je een hoge variance inflation factor (VIF) voor een variabele ziet, is het verleidelijk om die variabele direct uit je model te verwijderen, ervan uitgaande dat die de multicollineariteit veroorzaakt. Dat kan echter een fout zijn, want zelfs als een variabele een hoge VIF heeft, kan die nog steeds erg belangrijk zijn voor de voorspelling. Verwijder je die zonder de belangrijkheid te controleren, dan kan je model slechter presteren. De sleutel is om zorgvuldig te beoordelen of de variabele essentieel is voordat je besluit haar te verwijderen.

Te veel vertrouwen op correlatiematrices

Een correlatiematrix is nuttig om de omvang en richting van relaties tussen variabelen te identificeren, maar het probleem is dat ze alleen lineaire relaties laat zien. Hoe zit het met complexe, niet-lineaire relaties? Die worden helaas niet zichtbaar in de matrix. Alleen vertrouwen op een correlatiematrix geeft je dus geen volledig beeld. Daarom is het belangrijk om ook andere maten zoals VIF en de condition index te gebruiken voor een completer plaatje.

Alternatieven om multicollineariteit aan te pakken

Naast traditionele benaderingen zijn er ook verschillende geavanceerde methoden beschikbaar om multicollineariteit aan te pakken. Enkele van deze technieken bespreken we hieronder.

Featureselectiemethoden

Geautomatiseerde featureselectiemethoden zoals Recursive Feature Elimination (RFE) kunnen een goed alternatief zijn. Deze methoden analyseren het belang van elke voorspeller en verwijderen automatisch degene die weinig waarde toevoegen. Dit stroomlijnt het proces, waardoor het makkelijker wordt om multicollineariteit te verminderen zonder handmatig te hoeven kiezen welke variabelen je weghaalt.

Meer data verzamelen

Het vergroten van de steekproefomvang kan multicollineariteit verminderen door meer variatie aan de dataset toe te voegen, waardoor het eenvoudiger wordt om de bijdragen van verschillende voorspellers te onderscheiden. Een andere oplossing is dus simpelweg meer data verzamelen. Naarmate de dataset groeit, neemt de variatie in de variabelen toe, wat het makkelijker maakt om de effecten van verschillende voorspellers te onderscheiden. Dat helpt op zijn beurt de impact van multicollineariteit te verkleinen.

Conclusie

Multicollineariteit begrijpen en aanpakken is cruciaal voor het bouwen van robuuste en goed interpreteerbare regressiemodellen. Door multicollineariteit te detecteren met technieken zoals VIF, correlatiematrices en de condition index, en het op te lossen met methoden zoals lasso- en ridge-regressie of het verwijderen van redundante voorspellers, zorg je voor betrouwbare en betekenisvolle modelresultaten. Controleer altijd op multicollineariteit in je regressiemodellen en pas passende oplossingen toe om de integriteit van je analyses te waarborgen.

Wil je verder leren of je kennis van lineaire regressie in je favoriete werkomgeving opfrissen? Bekijk dan de volgende bronnen:

Vikash Singh

Auteur

Vikash Singh

Ervaren professional in data science, kunstmatige intelligentie, analytics en datastrategie.

Vragen over multicollineariteit

Wat is multicollineariteit?

Multicollineariteit treedt op wanneer twee of meer onafhankelijke variabelen in een regressiemodel sterk gecorreleerd zijn.

Wat is de variance inflation factor (VIF)?

VIF meet hoeveel de variantie van een regressiecoëfficiënt toeneemt door multicollineariteit. Een hoge VIF betekent dat een variabele sterk samenhangt met andere, wat het model instabieler en minder betrouwbaar kan maken.

Hoe beïnvloedt multicollineariteit mijn regressiemodel?

Multicollineariteit blaast de standaardfouten van de regressiecoëfficiënten op, waardoor het lastiger wordt te bepalen welke variabelen significant zijn.

Wat is het verschil tussen perfecte en imperfecte multicollineariteit?

Perfecte multicollineariteit ontstaat wanneer één variabele een exacte lineaire combinatie is van een andere, waardoor het onmogelijk wordt de modelcoëfficiënten te berekenen. Imperfecte multicollineariteit treedt op wanneer variabelen sterk, maar niet exact, gecorreleerd zijn. Dat kan echter nog steeds leiden tot instabiele modelschattingen.

Hoe helpt de condition index bij het detecteren van multicollineariteit?

Als de condition index boven 10 ligt, duidt dat op matige multicollineariteit; boven 30 duidt het op ernstige multicollineariteit.

Onderwerpen

Gerelateerd