10 Manieren om uw machine te verbeteren Leermodellen

10 Manieren om uw machine te verbeteren Modelleermodellen - dummies

Nu dat het algoritme voor machinaal leren is voltooid met het leren van de gegevens die zijn verkregen met Python of R, overweegt u de resultaten van uw testset en vraag u zich af of u deze kunt verbeteren of echt de best mogelijke uitkomst hebt bereikt. Er zijn een aantal controles en acties die wijzen op methoden die u kunt gebruiken om de machineleerprestaties te verbeteren en een meer algemene voorspeller te bereiken die net zo goed werkt met uw testset of nieuwe gegevens. Deze lijst met tien technieken biedt u mogelijkheden om de bereikte resultaten te verbeteren met algoritmen voor het leren van machines.

Leercurves bestuderen

Als eerste stap om uw resultaten te verbeteren, moet u de problemen met uw model bepalen. Leercurves vereisen dat u controleert tegen een testset terwijl u het aantal trainingsinstanties varieert. U zult onmiddellijk merken of u veel verschil vindt tussen uw in-sample- en out-of-sample-fouten. Een groot initieel verschil is een teken van schattingsvariantie; omgekeerd, het hebben van fouten die zowel hoog als vergelijkbaar zijn, is een teken dat je met een bevooroordeeld model werkt.

Python helpt je gemakkelijk leercurves te tekenen met de Scikit-learn () functie. U kunt ook eenvoudig hetzelfde resultaat bereiken met R met aangepaste functies, zoals beschreven in de blog Revolution Analytics.

Correcte kruisvalidatie gebruiken

Een groot verschil zien tussen de schattingen van de kruisvalidatie (CV) en het resultaat is een veelvoorkomend probleem dat optreedt bij een testset of nieuwe gegevens. Als dit probleem zich voordoet, is er iets misgegaan met de kruisvalidatie. Behalve het feit dat CV geen goede voorspeller voor prestaties is, betekent dit probleem ook dat een misleidende indicator u ertoe heeft aangezet om het probleem verkeerd te modelleren en onbevredigende resultaten te bereiken.

Kruisvalidatie geeft u hints wanneer de stappen die u neemt correct zijn. Het is belangrijk, maar niet van cruciaal belang, dat CV-schattingen nauwkeurig out-of-sample foutmetingen repliceren. Het is echter van cruciaal belang dat de CV-schattingen een juiste weerspiegeling zijn van de verbetering of verslechtering in de testfase als gevolg van uw modelleringsbeslissingen. Over het algemeen zijn er twee redenen waarom de schattingen voor kruisvalidatie kunnen afwijken van de echte foutresultaten:

  • Snooping
  • Onjuiste steekproef

Python biedt een CV-sampler met een gelaagde k-vouw. R kan monsters stratificeren met behulp van de methode createFolds van de caret-bibliotheek wanneer u de parameter y als factor opgeeft.

De juiste fout kiezen of metriek scoren

Proberen om een ​​foutmetriek te optimaliseren op basis van de mediaanfout door een leeralgoritme te gebruiken dat is gebaseerd op de gemiddelde fout, levert u niet de beste resultaten tenzij u het optimalisatieproces beheert in een mode die werkt in het voordeel van de gekozen meetwaarde.Wanneer u een probleem oplost met behulp van gegevens en machine-learning, moet u het probleem analyseren en de ideale meeteenheid bepalen om te optimaliseren.

Voorbeelden kunnen veel helpen. Je kunt veel van hen halen uit academische papers en uit openbare machine learning-wedstrijden die zorgvuldig specifieke problemen definiëren in termen van data en fout / score-metriek. Zoek naar een wedstrijd waarvan het doel en de gegevens vergelijkbaar zijn met de uwe en controleer vervolgens de gevraagde statistiek.

Zoeken naar de beste hyperparameters

De meeste algoritmen presteren redelijk goed uit de doos met behulp van de standaardparameterinstellingen. U kunt echter altijd betere resultaten behalen door verschillende hyperparameters te testen. Het enige dat u hoeft te doen, is een rasterdetectie maken tussen mogelijke waarden die uw parameters kunnen gebruiken en de resultaten evalueren met behulp van de juiste fout- of score-metriek. Het zoeken kost tijd, maar het kan uw resultaten verbeteren.

Wanneer een zoekopdracht te lang duurt om te voltooien, kunt u vaak dezelfde resultaten behalen door aan een steekproef van uw originele gegevens te werken. Minder willekeurig gekozen voorbeelden vereisen minder berekeningen, maar meestal verwijzen ze naar dezelfde oplossing. Een andere truc die tijd en moeite kan besparen, is door een willekeurige zoekopdracht uit te voeren, waardoor het aantal te testen hyper-parametercombinaties wordt beperkt.

Meerdere modellen testen

Test als een goede oefening meerdere modellen, te beginnen met de basismodellen: modellen met meer vertekening dan variantie. U moet altijd de voorkeur geven aan eenvoudige oplossingen boven ingewikkelde oplossingen. Misschien ontdekt u dat een eenvoudige oplossing beter presteert.

Het weergeven van de prestaties van verschillende modellen met dezelfde grafiek is handig voordat u de beste hebt gekozen om uw probleem op te lossen. U kunt modellen plaatsen die worden gebruikt om het gedrag van consumenten te voorspellen, zoals een reactie op een commercieel aanbod, in speciale winstkaarten en liftdiagrammen. Deze diagrammen laten zien hoe uw model presteert door de resultaten te partitioneren in decielen of kleinere onderdelen.

Omdat u mogelijk alleen geïnteresseerd bent in de consumenten die het meest waarschijnlijk zullen reageren op uw aanbieding, zal het bestellen van voorspellingen van de meest tot minst waarschijnlijke zullen benadrukken hoe goed uw modellen zijn om de meest veelbelovende klanten te voorspellen. Met deze Quora-antwoorden kun je zien hoe winst- en liftkaarten werken: wat is ROC Curve? en wat is liftcurve? .

Het testen van meerdere modellen en introspecting kan ook suggesties geven welke functies moeten worden getransformeerd voor het maken van functies, of welke functie moet worden weggelaten als u functieselecties maakt.

Gemiddelde modellen

Bij het leren van een machine worden veel modellen gebouwd en veel verschillende voorspellingen gemaakt, allemaal met verschillende verwachte foutprestaties. Het kan u verbazen te weten dat u nog betere resultaten kunt behalen door de modellen samen te middelen. Het principe is vrij simpel: schattingsvariantie is willekeurig, dus door het gemiddelde van veel verschillende modellen te nemen, kun je het -signaal verbeteren en de ruis uitsluiten die zichzelf vaak opheft.

Soms kunnen de resultaten van een goed uitgevoerd algoritme, gemengd met de resultaten van een eenvoudiger algoritme dat niet zo goed werkt, betere voorspellingen opleveren dan met een enkel algoritme.Onderschat de bijdragen van eenvoudigere modellen, zoals lineaire modellen, niet als u hun resultaten matigt met de uitvoer van meer geavanceerde algoritmen, zoals gradiëntverhoging.

Stapelmodellen

Om dezelfde redenen dat middeling werkt, kan stapelen u ook betere prestaties bieden. Bij het stapelen bouw je je machine learning-modellen in twee fasen. Aanvankelijk voorspelt deze techniek meerdere resultaten met behulp van verschillende algoritmen, waarbij ze allemaal leren van de functies die aanwezig zijn in uw gegevens. Tijdens de tweede fase, in plaats van functies te bieden die een nieuw model zal leren, geeft u dat model de voorspellingen van de andere, eerder getrainde modellen.

Het gebruik van een tweestapsaanpak is gerechtvaardigd bij het raden van complexe doelfuncties. U kunt ze alleen benaderen door meerdere modellen tegelijk te gebruiken en vervolgens door het resultaat van de vermenigvuldiging op een slimme manier te combineren. U kunt een eenvoudige logistische regressie of een complex boomensemble gebruiken als een tweedefasig model.

De Netflix-wedstrijd levert bewijsmateriaal en een gedetailleerde illustratie op over hoe heterogene modellen kunnen worden gestapeld om krachtigere modellen te vormen. Het implementeren van deze oplossing als een werkende toepassing kan echter nogal omslachtig zijn.

Functietechniek toepassen

Als u denkt dat die partijdigheid nog steeds uw model beïnvloedt, hebt u weinig andere keus dan nieuwe functies te creëren die de prestaties van het model verbeteren. Elke nieuwe functie kan het doelantwoord gemakkelijker maken.

Automatische creatie van functies is mogelijk met behulp van de uitbreiding van polynomen of de klasse van algoritmen voor machinaal leren van ondersteuningsvectoren. Support-vectormachines kunnen automatisch zoeken naar betere functies in hoger-dimensionale feature-spaces op een manier die zowel computationeel snel is als geheugen optimaal.

Niets kan echter echt een vervanging zijn voor uw expertise en begrip van de methode die nodig is om het gegevensprobleem op te lossen dat het algoritme probeert te leren. Je kunt functies maken op basis van je kennis en ideeën over hoe dingen werken in de wereld. Mensen zijn daarbij nog steeds onverslaanbaar en machines kunnen ze niet gemakkelijk vervangen.

Functies en voorbeelden selecteren

Als de schattingsvariantie hoog is en uw algoritme op veel functies vertrouwt, moet u sommige functies snoeien voor betere resultaten. In dit verband verdient het aanbeveling om het aantal functies in uw datamatrix te verminderen door die met de hoogste voorspellende waarde te selecteren.

Wanneer u werkt met lineaire modellen, lineaire ondersteuningsvectoren of neurale netwerken, is regularisatie altijd een optie. Zowel L1 als L2 kunnen de invloed van overtollige variabelen verminderen of ze zelfs uit het model verwijderen. Stabiliteitsselectie maakt gebruik van de mogelijkheid L1 om minder bruikbare variabelen uit te sluiten. De techniek herziet de trainingsgegevens om de uitsluiting te bevestigen.

U kunt meer informatie over stabiliteitsselectie bekijken door het voorbeeld op de Scikit-learn-website te bekijken. Bovendien kunt u oefenen met het gebruik van de functies RandomizedLogisticRegression en RandomizedLasso Scikit-learn in de module linear_model.

Zoeken naar meer gegevens

Nadat u alle eerdere suggesties hebt geprobeerd, kunt u nog steeds een grote variatie aan voorspellingen hebben om mee om te gaan. In dit geval is uw enige optie om uw trainingsset te vergroten. Probeer uw steekproef te vergroten door nieuwe gegevens aan te leveren, die kunnen worden vertaald in nieuwe cases of nieuwe functies.

Als u meer cases wilt toevoegen, hoeft u alleen maar te kijken of u vergelijkbare gegevens bij de hand hebt. Als u nieuwe functies wilt toevoegen, zoek dan zo mogelijk een open source-gegevensbron om uw gegevens aan de bijbehorende items te koppelen. Een andere geweldige manier om zowel nieuwe cases als nieuwe functies te verkrijgen, is door de gegevens van het web te schrapen. Vaak zijn gegevens beschikbaar tussen verschillende bronnen of via een applicatie-programmeerinterface (API). Google API's bieden bijvoorbeeld veel geografische en zakelijke informatiebronnen.