Bipartite projectie is een krachtige techniek die een bimodaal netwerk herstructureert naar twee unimodale netwerken, elk die de relaties binnen één specifieke categorie van knooppunten vertegenwoordigt (Zhou et al., 2007). In de context van onze analyse van films met betrekking tot de betrokken acteurs, betekent dit dat we de complexe relaties tussen uitvoerders en films vertalen naar twee aparte netwerken. Deze netwerken kunnen patronen in samenwerking onthullen die anders verborgen zouden blijven.
Bij het toepassen van bipartite projectie op een dataset van films en acteurs, begint het proces met het vaststellen of een paar acteurs samen in dezelfde film verscheen. Vervolgens creëren we een nieuw netwerk dat deze co-verschijningen representeert. De knooppunten in dit netwerk zijn de acteurs, terwijl de randen de co-verschijningen in films vertegenwoordigen. Dit stelt ons in staat om de netwerken van samenwerking tussen acteurs te analyseren en te visualiseren.
De eerste stap is het tellen van de verbindingen tussen de verschillende acteurs, wat een indicatie geeft van hoe verweven iemands carrière is met die van andere acteurs. Hoe meer verbindingen een acteur heeft, hoe meer samenwerkingen er zijn met andere acteurs in de filmindustrie. Dit maakt het mogelijk om de samenwerkingslandschappen in de filmindustrie in kaart te brengen en te begrijpen hoe bepaalde acteurs invloed uitoefenen binnen hun netwerk.
Het visualiseren van dit netwerk is eveneens een cruciaal onderdeel van het proces. De grootte van de knooppunten wordt aangepast op basis van het aantal verbindingen, waarbij grotere knooppunten duiden op acteurs met een groter aantal samenwerkingen. Dit visuele overzicht biedt waardevolle inzichten in de onderlinge relaties tussen acteurs en maakt het gemakkelijker om belangrijke actoren in het netwerk te identificeren.
De "igraph" bibliotheek in R biedt een handige methode voor het uitvoeren van bipartite projectie via de functie bipartite.projection(). Dit stelt ons in staat om de originele gegevens van een bipartiet netwerk te transformeren naar twee unimodale netwerken. Aangezien "tidygraph" gebaseerd is op "igraph", is onze netwerkobject volledig compatibel met de gereedschappen die "igraph" biedt, wat het proces vergemakkelijkt zonder extra conversies of manipulatie van gegevens.
Bij het gebruik van "igraph" is het belangrijk dat de dataset een expliciete kolom bevat die de typen van de knooppunten aangeeft. Deze kolom, vaak aangeduid als 'type', maakt het mogelijk om de twee verschillende soorten knooppunten in een bipartiet netwerk te onderscheiden. In ons geval labelen we acteurs als 'FALSE' en films als 'TRUE'. Deze etikettering is essentieel voor het algoritme om de netwerken correct te kunnen projecteren. Hoewel deze etikettering omkeerbaar is (d.w.z. we zouden films als 'FALSE' en acteurs als 'TRUE' kunnen labelen), helpt het om consistentie te behouden in de analyse.
Het gebruik van de functies van de "dplyr" bibliotheek, zoals mutate() en case_when(), maakt het eenvoudig om deze logische etikettering automatisch toe te passen. De functie mutate() stelt ons in staat om nieuwe kolommen toe te voegen aan ons netwerkobject, terwijl case_when() de voorwaarden specificeert die bepalen welke knooppunten als 'TRUE' of 'FALSE' worden gemarkeerd, afhankelijk van hun type (film of performer).
Wanneer we eenmaal de bipartite projectie hebben uitgevoerd, krijgen we twee afzonderlijke netwerken: een voor de acteurs en een voor de films. Elk van deze netwerken toont de onderlinge verbindingen binnen hun respectieve categorieën. De output van "igraph" toont twee lijstitems: één voor de acteurs en één voor de films. Elk van deze lijstitems bevat een grafiek waarbij knooppunten de respectieve actoren of films vertegenwoordigen, en de randen de gedeelde relaties tonen.
Het is belangrijk te begrijpen dat bipartite projectie niet slechts een technische omvorming van gegevens is, maar een krachtige analysemethode die ons helpt verborgen patronen van samenwerking te onthullen. Het maakt de complexiteit van netwerken van performers en films inzichtelijk, door de focus te verleggen naar de onderliggende samenwerkingsstructuren. Dit biedt onderzoekers en analisten waardevolle inzichten die anders moeilijk te verkrijgen zouden zijn.
Bij het gebruik van bipartite projectie in analyses van filmnetwerken is het ook belangrijk om aandacht te besteden aan de grenzen van deze techniek. Hoewel het een krachtig hulpmiddel is om netwerken te ontrafelen, kan het moeilijk zijn om de relaties tussen verschillende knooppunten in de verschillende netwerken (zoals tussen acteurs en films) na te gaan zonder diepere kennis van de specifieke context of culturele invloeden die deze samenwerkingen aandrijven. Het begrijpen van de culturele en historische context van films en performers is dan ook essentieel voor een volledig begrip van de resulterende netwerken. Het helpt bij het interpreteren van de gegevens en biedt mogelijk verklaringen voor bepaalde patronen van samenwerking, die anders onduidelijk zouden blijven.
Hoe Cross-validatie en Stratificatie de Betrouwbaarheid van Machine Learning Modellen Verbeteren
Cross-validatie is een essentiële techniek in machine learning die helpt bij het evalueren van de generaliseerbaarheid van een model. In tegenstelling tot de traditionele aanpak waarbij een model alleen wordt getraind op de beschikbare gegevens, wordt bij cross-validatie een deel van de data tijdelijk vastgehouden en niet gebruikt voor training. Dit lijkt misschien vreemd: waarom zouden we data die we hebben, niet gebruiken om het model te trainen? De reden hiervoor is dat het model daardoor getest wordt op ongeziene data, wat ons in staat stelt een nauwkeuriger oordeel te vellen over hoe goed het model zal presteren bij nieuwe, ongeziene gegevens. Wanneer een model bijzonder goed presteert op de trainingsdata maar slecht op de testdata, weten we dat we mogelijk overfitting hebben ervaren.
Er zijn verschillende vormen van cross-validatie, en de meest berekeningsintensieve is de leave-one-out cross-validation (LOO-CV). Hierbij wordt het model steeds getraind op alle data behalve één gegevenspunt, wat resulteert in een hoge computational load. Dit maakt het proces tijdrovend en moeilijk schaalbaar voor grotere datasets. Als alternatief wordt vaak k-fold cross-validation gebruikt, waarbij de data wordt verdeeld in k “vouwen”. In de praktijk wordt k vaak ingesteld op 5 of 10. Elk van deze vouwen wordt eenmaal als testset gebruikt, terwijl de overige als trainingsdata fungeren. Dit proces wordt herhaald totdat elk deel van de data als testset is gebruikt.
Een eenvoudiger alternatief is de hold-out validatie, waarbij de data in twee delen wordt gesplitst: de trainingsset en de testset. De verhouding tussen deze twee sets hangt af van de grootte van de dataset. Bij grote datasets kan een kleinere testset voldoende zijn, bijvoorbeeld 90% voor training en 10% voor testen. Voor kleinere datasets wordt vaak een verhouding van 70/30 of 75/25 gekozen. Dit helpt om een betrouwbare beoordeling van het model te verkrijgen, zonder dat het te veel computational power kost.
Een belangrijk onderdeel van dit proces is het gebruik van stratificatie bij het splitsen van de data. Dit komt van pas wanneer de dataset een scheve verdeling bevat, zoals het geval kan zijn bij bepaalde demografische groepen. Wanneer een dataset bijvoorbeeld een onevenwichtige verdeling van bijvoorbeeld artistieke stijlen of groepen bevat, kan een willekeurige splitsing ertoe leiden dat sommige subdatasets niet representatief zijn voor de hele populatie. Stratificatie zorgt ervoor dat de verdeling van de doelvariabele in de trainings- en testsets gelijk is aan die in de oorspronkelijke dataset. Dit is vooral belangrijk wanneer we werken met imbalanced data, zoals in gevallen waar bepaalde groepen ondervertegenwoordigd zijn. Het zorgt ervoor dat geen enkele groep systematisch onder- of oververtegenwoordigd is in een van de datasets.
Bij het splitsen van de data kan het "resample"-pakket van "tidymodels" handig zijn. Het biedt de functie initial_split(), waarmee we eenvoudig data kunnen splitsen op basis van een bepaalde verhouding en met stratificatie indien nodig. In dit geval werd een split van 70/30 gebruikt, wat een gangbare keuze is voor kleinere datasets. De set.seed() functie wordt gebruikt om de willekeurige splitsing reproduceerbaar te maken, wat essentieel is om consistente resultaten te verkrijgen bij herhaalde experimenten.
Na het splitsen van de data, zoals weergegeven door het rsplit-object, worden de trainings- en testsets makkelijk toegankelijk via de training() en testing() functies van tidymodels. Dit maakt het werken met de opgesplitste data eenvoudiger en gebruiksvriendelijker.
Wanneer de data eenmaal is gesplitst, moeten we de structuur van ons model definiëren. Het “parsnip”-pakket binnen “tidymodels” biedt een gestandaardiseerde manier om modellen te specificeren, ongeacht het gebruikte machine learning algoritme. Het doel is om de code compact en modulair te houden, zodat de modelspecificatie eenvoudig kan worden aangepast aan verschillende soorten algoritmen, zoals een beslissingboom of lineaire regressie.
Een belangrijk aspect bij het definiëren van modellen, vooral bij classificatie- of regressietaken, is het kiezen van de juiste "mode". Voor continue uitkomsten, zoals de relatieve ruimte per pagina in een dataset, zou het model de regressiemodus moeten hebben, terwijl bij classificatietaken de classificatiemodus vereist is. De keuze van het "engine" – het onderliggende pakket dat het daadwerkelijke model fit – speelt een cruciale rol in de prestaties van het model. Elk engine heeft zijn eigen voor- en nadelen op het gebied van rekenkracht, nauwkeurigheid en interpretatie.
Het gebruik van verschillende engines kan eenvoudig worden beheerd met "parsnip", waardoor het makkelijk is om van engine te wisselen zonder de syntaxis van de code te veranderen. Dit biedt grote flexibiliteit, omdat de keuze voor een engine kan afhangen van de grootte van de dataset, de gewenste snelheid van berekeningen of de voorkeur voor interpreteerbaarheid van het model.
Bovendien moeten we bij het bouwen van een model rekening houden met het feit dat cross-validatie niet alleen maar een hulpmiddel is voor modelselectie, maar ook een manier om de robuustheid van het model tegen overfitting te testen. Het proces helpt ons een model te kiezen dat niet alleen goed presteert op de trainingsdata, maar ook op de testdata, wat ons vertrouwen geeft in de stabiliteit van de voorspellingen op nieuwe data.
Naast het correct splitsen van de data en het kiezen van het juiste model, is het belangrijk om ook de effectiviteit van verschillende hyperparameters te testen. Hyperparameteroptimalisatie kan de prestaties van een model aanzienlijk verbeteren, door bijvoorbeeld de diepte van een beslissingboom of de leerparameter van een regressiemodel aan te passen. In veel gevallen wordt dit proces uitgevoerd via technieken zoals grid search of random search, die ons helpen de beste waarden voor de hyperparameters te vinden.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский