Sådan analyseres grundlæggende lagerdata med rørledninger til maskinlæring

Brug af rørledninger til at optimere maskinlæringsmodeller

Foto af Carlos Muza på Unsplash

En måde, hvorpå maskinlæring anvendes i finanssektoren, er at analysere og forudsige bevægelsen af ​​aktiekurser. Med hensyn til teknikken til grundlæggende analyse (iagttagelse af en årsregnskab for en bestand for at bestemme dens værdi), kunne maskinlæring bruges til at klassificere, om en bestand er et køb, salg eller tilbageholdelse. Ved at fodre maskinindlæringsmodellen med de relevante økonomiske data, kunne modellen derefter bestemme en bestands værdi baseret på nye, men lignende data. Der er forskellige klassificeringsmodeller for maskinlæring, der kan bruges med mange forskellige fordele og ulemper. Så hvordan vælger vi en?

Det er her en maskinlæringsrørledning ville komme ind. Denne rørledning giver os en fantastisk måde at strømline og afprøve hver model med betydeligt færre kodelinjer, hvilket gør proceduren for valg af model meget hurtigere. Imidlertid dækker denne rørledning kun modelleringsprocessen - ikke dataindsamling, rengøring eller efterforskning. Indsamlings-, efterforsknings-, rengørings- og modelleringsprocesser blev faktisk dækket i vores tidligere stykker. Tjek dem nedenfor for at se de data, vi vil bruge (og hvordan vi har det), samt den mere grundige form for klassificeringsmodellering.

Til dataindsamling, rengøring og efterforskning:

Til klassificering modellering og evaluering:

Oprettelse af en rørledning

Nu hvor vi har dataene og en idé om klassificeringsmodellerne (begge fra artiklene ovenfor), kan vi begynde at bruge en pipeline til at strømline processen.

Import af biblioteker

Denne del af koden svarer til koden til forberedelse af dataene til modellering bortset fra skaleringsdelen. I stedet for skalereres dataene i pipeline for hver model. Vi har også en mulighed for at bruge to forskellige datasæt: Vigtigt kontra korrelerede funktionssæt. Disse to forskellige datasæt blev oprettet i vores tidligere stykke, som kan findes ved at tjekke afsnittet Dataindsamling, rengøring og efterforskning ovenfor.

Kodning af rørledningerne for hver model

Her importerer og opretter vi rørledninger til ti modeller til testkørsel af vores data. På grund af de rørledninger, vi konstruerede, er vi i stand til at skalere dataene før vi kører modeller i stedet for at skalere uden for rørledningerne. I øjeblikket bruger hver model deres standardparametre. I slutningen af ​​koden ovenfor konstruerede vi en enkel løkke til at passe og træne hver af de ti modelrørledninger til vores data. Fra disse ti vælger vi de tre bedste modeller, der bedst fungerer, baseret på en bestemt evalueringsmetrik, som vi vælger.

Klassificeringsrapporter for hver model

Fra denne kode udskriver vi en klassificeringsrapport, der indeholder oplysningerne om vigtige evalueringsmetriks. Evalueringsmetrikerne, vi vil fokusere på på dette tidspunkt, er præcision og F1-score. Årsagen til, at vi fokuserer på disse beregninger, er hovedsageligt, at vi har at gøre med et ubalanceret datasæt. En yderligere forklaring på disse målinger kan findes i vores tidligere artikel om modellering og evaluering.

Grid Searching Model Rørledninger

Nu, hvor vi har etableret vores top 3 modeller, kan vi komme videre med at forbedre deres præstationer ved at bruge GridSearchCV. Dette vil teste hver enkelt model forskellige parametre, som vi har indstillet, for at finde den bedst ydede. Disse nye afstemte modeller sammenlignes derefter med hinanden - kun en vil blive valgt til at være vores primære model for fremtidige klassifikationer.

Dannelse af retsøgning og parametre

Ovenfor har vi kodet de forskellige parametre, som vores top tre klassifikatorer bruger. Vi har givet hver parameter forskellige værdier til at itereere gennem og finde de mest optimale kombinationer. Derefter oprettede vi en lille ordbog, der indeholder pipeline for hver model og deres respektive parametre. Dernæst vil vi gitter søge i disse modeller med de givne parametre.

Starter gitarsøgning

Her begynder vi gissøgningsprocessen. Afhængig af computerspecifikationer vil denne proces sandsynligvis tage en betydelig mængde tid - så rol ikke, hvis du stadig venter på, at dette skal afsluttes et par timer senere. Efter afslutningen af ​​hver gissøgning gemmer vi den bedst udførende model, tilpasset med de optimale parametre, i en ordbog for let adgang senere.

Bagefter udskriver vi klassificeringsrapporten for vores top tre indstillede modeller for at se eventuelle forbedringer i den specifikke evalueringsmetrik, vi ønsker (Macro Average F1-Score).

Forvirringsmatrix

For en mere visuel gengivelse af, hvordan vores indstillede model optrådte, vender vi os til forvirringsmatrixen. Dette viser os vores modellers ydeevne i et mere tiltalende format.

Efter at have udviklet den funktion, der skaber en mere visuelt attraktiv forvekslingsmatrix, er vi i stand til at udpege det endelige billede og den fulde klassificeringsrapport til vores endelige indstillede klassificering af maskinlæring.

Forvirringsmatrix til Tuned Random Forest ClassifierFuld klassificeringsrapport for Tuned Random Forest Classifier

Klassificeringsrapporten her kan fortolkes som at Buy-klassen er korrekt klassificeret 41% af tiden. Af det originale datasæt klassificerede det 45% af dem, mens de andre 55% manglede. Dette lyder måske ikke imponerende, men i betragtning af basismodellens score, hvilket svarer til tilfældigt gætte, er disse tal en forbedring.

Lukende tanker

Vores endelige klassificeringsmodel er fundet ved en kombination af rørledninger og gitter-søgning. Disse rørledninger gav os muligheden for at skalere vores data og derefter passe og træne klassificeringsmaskinerne. Dernæst kunne vi søge i de tre bedste præstationsmodeller baseret på en specifik evalueringsmetrik. Derefter, efter at dette var afsluttet, var vi i stand til at indsnævre vores sidste og sidste model for dette datasæt. Normalt kunne denne proces have optaget flere forskellige filer eller bærbare computere, men med en pipeline kunne vi komprimere den til kun en bærbar computer.

Selvom vores evalueringsnumre ikke synes store, er de stadig bedre end vores baseline-model. I sidste ende er disse tal stadig betydelige for os, fordi vi på en måde forsøger at forudsige fremtiden. Der er stadig potentielle forbedringer, der skal foretages, såsom forfining af det indledende datasæt med andre kilder eller ændring af nogle krav til hver klasse. Imidlertid var det overordnede formål med dette stykke at demonstrere brugen af ​​rørledninger til at strømline og forenkle modellering af maskinindlæring. Du er velkommen til at ændre nogen af ​​de koder, du har set, for at forbedre dette projekt, og så kan du måske oprette en klassifikator bedre end nogen anden aktieekspert!

GitHub: