Ga naar hoofdinhoud Ga naar aanvullende inhoud

Gegevenstypen transformeren

Wanneer u een machine learning-model traint, is het belangrijk dat de gegevensverzameling een nauwkeurige representatie is van alle gegevenstypen. Als een variabele een onnauwkeurige vertegenwoordiging heeft, zou dat kunnen leiden tot een model met lage nauwkeurigheid of een model dat er goed uitziet, maar in een werkelijke situatie geen goede voorspellingen levert. U moet in staat zijn onderscheid te maken tussen wat ieder kenmerk meet en hoe u de juiste vertegenwoordiging voor dat kenmerk toewijst.

Over het algemeen geldt dat machine learning alles wat van het gegevenstype float of dubbel is, ziet als een numerieke waarde en alles wat een tekenreeks is, als een categorische waarde. Maar dat is niet altijd de juiste interpretatie, zoals we in de volgende voorbeelden kunnen zien.

De voorbeelden zijn gebaseerd op een gegevensverzameling die is geaggregeerd om de volgende vraag te beantwoorden: "Zal een gebruiker een product binnen dertig dagen na de eerste aankoopdatum opnieuw aanschaffen?" De gegevensverzameling bevat kolommen met verschillende gegevenstypen zoals tekenreeks, dubbel, geheel getal, booleaans en datum.

Kolommen en gegevenstypen

Tabel met kolomnamen en gegevenstypen.

Tekenreeksen

De onderstaande tabel laat twee van de kolommen in onze gegevensverzameling zien die beide het gegevenstype tekenreeks hebben. De kolom MarketingSource heeft geen meetbaar verschil tussen de waarden, bijvoorbeeld tussen 'Facebook' en 'Customer Referral'. Er is geen numerieke of schaalrelatie en de kolom zou daarom als categorisch moeten worden gezien.

Aan de andere kant variëren de waarden in de kolom SourceCostPerAcquisition van 'Low' tot 'High' waardoor er een beter meetbaar verschil tussen zit. Dit is niet zo precies als de gemiddelde kosten per bronacquisitie in dollars, maar er is een duidelijke volgorde van omvang tussen de waarden. In dit geval zou kunnen worden overwogen of SourceCostPerAcquisition moet worden gezien als categorisch of numeriek.

Voorbeeldgegevens voor de kolommen PersonID, MarketingSource en SourceCostPerAquisition

Tabel met voorbeeldgegevens.

Het wordt in deze situaties aanbevolen om twee afzonderlijke configuraties te maken, elk met een andere, mogelijke classificatie van de kenmerken. Deze experimenten zouden afzonderlijk worden uitgevoerd. De eerste configuratie zou voor de originele tekenreeksrepresentatie zijn. In de tweede configuratie zou u een numerieke indelingskaart geven van de verschillende waarden en de kolom omzetten naar het dubbele gegevenstype. Bijvoorbeeld, 'Low'= 1.0, 'Medium' = 2.0 en 'High' = 3.0. Nadat u iedere configuratie hebt uitgevoerd, krijgt u meer inzicht in welke configuratie beter werkt voor die specifieke gebruikscase. In sommige gevallen zou het logisch zijn om een tekenreeksrepresentatie te gebruiken en in andere zou een numerieke representatie logischer zijn.

Getallen

Als er een meetbaar verschil zit in wat de gegevens in een kolom beschrijven, dan zou dit kunnen worden weergegeven in de vorm van numerieke waarden. Voorbeelden hiervan zijn kosten, omzet, winst, aantallen, sommen en gemiddelden.

Soms kan een gegevensverzameling een numerieke waarde hebben die niet meetbaar is omdat het een woordenboek of een incrementele waarde is, zoals een id. In ons voorbeeld hadden de waarden in de kolom PersonID onterecht kunnen zijn geïnterpreteerd als een numerieke waarde als de waarden niet vooraf werden gegaan door 'Person_'. De id's beschouwen als numerieke waarden had een onjuiste representatie geweest van het verschil tussen deze rijen. De aanbevolen procedure in dergelijke gevallen is om de id als een tekenreeks weer te geven. Voordat u een gegevensverzameling gebruikt, kan het zijn dat u moet bepalen of een van de numerieke kolommen moet worden omgezet in categorische waarden.

Datums

In de context van machine learning zijn datumveldtypen categorische variabelen. Alhoewel datums en tijdstempels van elkaar kunnen worden afgetrokken, bevat een datum verschillende componenten. De vraag is welke van deze componenten u moet overwegen en hoe: moet de waarde het jaar zijn, de maand, dag van de maand of jaar of het uur van de dag? Misschien wilt u het tijdsverschil in minuten zien? Om het beste voorspellende vermogen te krijgen, moet de datum in ten minste een paar van de componenten worden geparseerd. Een deel van die componenten moet categorisch zijn en een deel numeriek.

Een datum kan worden geparseerd in de dag van de week. Dit kan worden vertegenwoordigd als een numerieke waarde (1 tot 7) of een tekenreekswaarde (zondag tot zaterdag).

Weekdagen als getallen als en tekenreeksen

Tabel met weekdagen, weergegeven als getallen en tekenreeksen.

Er zijn een paar problemen met de weergave van de dag van de week als een numerieke waarde. Wanneer begint de week, is dat maandag of zondag? De dag van de week is natuurlijk belangrijk, maar kan worden verborgen in een cyclische trend.

In sommige gevallen kan de trend veel informatie verschaffen zoals in diagram 1, waar de week op een maandag begint.

Diagram 1: Gemiddelde verkoop per weekdag waarbij de week op maandag begint

Grafiek van de verkoop per weekdag met een duidelijke trendlijn.

Diagram 2 bevat dezelfde gegevens als diagram 1, maar is met één dag verschoven zodat de week op een zondag begint. Hier is het belang van de datum veel kleiner.

Diagram 2: Gemiddelde verkoop per weekdag waarbij de week op zondag begint

Grafiek van de verkoop per weekdag zonder duidelijke trendlijn.

Diagram 3 illustreert een ander probleem met het gebruik van het geparseerde component van een datum als een numerieke waarde. Wellicht is er een belangrijk patroon aanwezig, maar als dit niet lineair is, zal het over het hoofd worden gezien. Hierdoor en door de cyclische trends (zoals dag- of kwartaalgebondenheid) die vaak aanwezig zijn in datumcomponenten, wordt het aanbevolen deze componenten te gebruiken als categorische waarden en niet als numerieke waarden.

Diagram 3: Gemiddelde verkoop per weekdag met een piek midden in de week

Grafiek van verkoop per weekdag met een cyclische trend met een piek midden in de week.

Qlik AutoML gebruikt automatische kenmerkontwikkeling om de componenten van datums en tijdstempels in hun eigen afzonderlijke kolommen uit te spreiden. Dit helpt om de voorspellende capaciteit van de modellen die u maakt te verbeteren. Automatisch ontwikkelde kenmerken die zijn afgeleid van een bovenliggend datumkenmerk, worden geclassificeerd als numerieke kenmerken. U kunt deze functionaliteit zo nodig overschrijven zodat datumkolommen als categorisch worden behandeld. Ga voor meer informatie naar Ontwikkeling van datumkenmerken.

Datumverschillen

Datumverschillen kunnen worden gebruikt als een betere vervanging van incrementele id's, omdat een incrementele id alleen een beschrijving is van de volgorde waarin die records aan de tabel zijn toegevoegd. Incrementele id's kunnen gemakkelijk worden vertekend door de verandering in het volume (in veel voorbeelden is dat het aantal klanten per dag), terwijl een datumverschil niet afhankelijk is van die snelheid.

Het datumverschil kan een van verschillende eenheden zijn: seconden, uren, dagen, maanden of kwartalen. Kies degene die het meest relevant is voor de gedetailleerdheid van de gegevens die u hebt. Bijvoorbeeld: als u maandelijkse gegevens bekijkt, zal er geen echte waarde zitten in het datumverschil van dagen. In dat geval zou een datumverschil van maanden relevanter zijn.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!