Een wiskundige truc om grote hoeveelheden informatie samen te vatten

In het huidige tijdperk van machine learning en AI, maken we dikwijls gebruik van technieken die inmiddels bijna honderd jaar oud zijn, maar nog steeds bijzonder actueel. Een voorbeeld is principale-componentenanalyse (PCA), een interessante statistische techniek om de complexiteit van de gegevens te verminderen door een set kenmerken te transformeren naar een nieuwe, maar kleinere, set van kenmerken, die de "principale componenten" worden genoemd. Het idee is om een kleinere set van principale componenten te vinden die de meeste informatie bevatten over de oorspronkelijke gegevens. Ofwel: een wiskundige truc die grote hoeveelheden informatie samenvat tot de belangrijkste dingen, zodat we het beter kunnen begrijpen.
PCA: hoe werkt het, en wat heb je eraan in de zorg?
Ik kwam onlangs een uitstekende tutorial over PCA tegen, waarin de techniek stap-voor-stap wordt uitgelegd, zodanig dat je ook de onderliggende berekeningen leert begrijpen. Reden genoeg om een keer aandacht te besteden aan het nut van PCA in de zorg.
Het nut van PCA voor data science in de zorg is het eenvoudigst uit te leggen aan de hand van een voorbeeld: Stel je voor dat een ziekenhuis een grote dataset heeft met medische gegevens van patiënten (uit het EPD), waaronder variabelen zoals leeftijd, bloeddruk, cholesterolniveaus, body mass index (BMI), nierfunctie enzovoort. Omdat deze kenmerken doorgaans gecorreleerd zijn, is het mogelijk de informatie van deze kenmerken samen te vatten in een kleiner aantal (bijvoorbeeld twee of drie) nieuwe kenmerken. Deze nieuwe kenmerken kunnen vervolgens op overzichtelijke wijze inzicht geven in de algemene gezondheidstoestand van de patiënten en gebruikt worden om eventuele patronen of clusters in de patiëntenpopulatie te ontdekken.
In dit voorbeeld is het aantal oorspronkelijke kenmerken (vijf) vrij beperkt, en daarmee ook de toegevoegde waarde van PCA. Dit wordt anders wanneer er sprake is van honderden of duizenden kenmerken, zoals diagnose- of verrichtingencodes, gegevens van medicijngebruik, of beelddata. In dat geval kan PCA een cruciale rol vervullen bij het interpreteren van data, of bijvoorbeeld als tussenstap alvorens een machine-learning model te trainen.
De PCA methode is overigens al bijna honderd jaar oud, en werd voor het eerst beschreven door Hotelling in 1933, waarin hij voortbouwde op eerder werk van de beroemde statisticus Karl Pearson (inderdaad: die van de correlatie-coefficient).
Aan de slag met PCA
De PCA is in vrijwel alle statistische pakketten beschikbaar, waarbij met een enkel commando de volgende stappen geautomatiseerd worden doorlopen:
- Standaardisatie: Aangezien de verschillende variabelen mogelijk op verschillende schalen worden gemeten (bijvoorbeeld leeftijd in jaren en bloeddruk in mmHg), is het belangrijk om de gegevens te standaardiseren. Dit houdt in dat elke variabele wordt omgezet naar een vergelijkbare schaal, meestal door het berekenen van de z-scores (het aantal standaarddeviaties van een waarde ten opzichte van het gemiddelde). Dit helpt ervoor te zorgen dat variabelen met grotere schaal geen onevenredige invloed hebben tijdens de analyse.
- Correlatiematrix: Een correlatiematrix wordt berekend op basis van de gestandaardiseerde gegevens. Deze matrix toont de correlaties tussen elke variabele in de dataset. Het helpt om te begrijpen hoe de verschillende variabelen met elkaar samenhangen.
- Eigenwaarden en eigenvectoren: Door de eigenwaarden en eigenvectoren van de correlatiematrix te berekenen, kan PCA bepalen welke principale componenten het meeste informatie bevatten. De eigenwaarden geven aan hoeveel variabiliteit elke principale component verklaart, terwijl de eigenvectoren de richting en relatie tussen de oorspronkelijke variabelen en de principale componenten aangeven.
- Selectie van principale componenten: De principale componenten worden gerangschikt op basis van hun eigenwaarden. Vervolgens kun je ervoor kiezen om een bepaald aantal principale componenten te behouden, bijvoorbeeld de top drie met de hoogste eigenwaarden, die samen een groot deel van de variabiliteit in de gegevens kunnen verklaren.
- Projectie van gegevens: Ten slotte worden de oorspronkelijke gegevens geprojecteerd op de geselecteerde principale componenten. Dit betekent dat de gegevens worden omgezet naar een nieuwe set van variabelen op basis van de principale componenten.
Afhankelijk van de (analyse)omgeving waarin je werkt, is PCA beschikbaar in de volgende packages/functies:
- R: prcomp() (package: stats), princomp() (package: stats), PCA() (package: FactoMineR), prcomp() (package: factoextra)
- Python: PCA uit de sklearn.decomposition module (package: scikit-learn)
- SAS: PROC PRINCOMP, PROC FACTOR
- SPSS: Analyze -> Dimension Reduction -> Factor (met de optie om Principal Components Analysis (PCA) uit te voeren)
- Julia: MultivariateStats.jl, StatsBase.jl, PCA.jl
Hoewel je tegenwoordig met een enkele druk op een knop een PCA kunt uitvoeren, is het echt wel belangrijk de achterliggende techniek te begrijpen, en ook te weten wanneer PCA mogelijk niet bruikbaar is. Voor het eerste raad ik het eerder genoemde uitstekende tutorial over PCA aan. En wanneer PCA minder goed bruikbaar is? Denk aan: categorische variabelen (i.p.v. continue); geringe, non-lineaire, of afwezige correlaties tussen variabelen; ruis; en uitbijters.
PCA: gewoon proberen
Mocht je interesse voor PCA als techniek zijn gewekt, dan is het misschien een idee om bij een volgende analyse ook eens een PCA los te laten op de variabelen in je dataset. Je zult dan vanzelf zien of het iets oplevert, in termen van interpreteerbaarheid, modeluitkomsten, of de kwaliteit van voorspellingen. Loop je toch vast, of heb je vragen? Laat het me weten via: han@researchfordecisions.com.