Hvornår skal man bruge forskellige maskinlæringsalgoritmer: en enkel guide

Hvis du har været ved maskinlæring længe nok, ved du, at der er et ”ingen gratis frokost” -princip - der er ingen algoritme, der passer til alle, der hjælper dig med at løse ethvert problem og tackle hvert datasæt.

Jeg arbejder for Springboard - vi har forsket meget i maskinlæringstræning og ressourcer. På Springboard tilbyder vi det første online kursus med en maskinlæring jobgaranti.

Hvad der hjælper meget, når man konfronteres med et nyt problem, er at have en primer til, hvilken algoritme der passer bedst til bestemte situationer. Her taler vi om forskellige problemer og datatyper og diskuterer, hvad der kan være den mest effektive algoritme at prøve for hver enkelt sammen med en ressource, der kan hjælpe dig med at implementere den pågældende model.

Husk: beviset er i budding: den bedste tilgang til dine data er den model, der empirisk giver dig de bedste resultater. Denne guide er beregnet til at finpudse dine første instinkter og hjælpe dig med at huske, hvilke modeller der kan være de mest effektive for hvert problem, og hvilke der er upraktiske at bruge.

Lad os starte med at tale om de variabler, vi skal overveje.

U nsupervised læring vs overvåget indlæring

Uovervåget læring er, hvor du tillader maskinlæringsalgoritmen at begynde at lære og udsende et resultat uden nogen eksplicit menneskelig behandling af dataene på forhånd.

Overvåget læring involverer en vis mærkning og behandling af træningsdataene på forhånd for at strukturere dem til behandling.

Den slags læring, du kan udføre, betyder meget, når du begynder at arbejde med forskellige maskinlæringsalgoritmer.

S tempo og tid overvejelser

Der er plads- og tidsovervejelser for hver maskinlæringsalgoritme. Mens du i praksis sandsynligvis vil arbejde med optimerede versioner af hver algoritme pakket i en ramme, er det godt at overveje, hvordan de algoritmer, du vælger, kan påvirke ydeevnen.

Outputtet

For det tredje og måske det vigtigste er det output, du vil have . Forsøger du at kategorisere data? Brug den til at forudsige fremtidige datapunkter? Hvad du ønsker at få som et resultat, og hvad du vil gøre med dine data, vil i høj grad bestemme de algoritmiske tilgange, du skal tage.

Nogle eksempler

Du ønsker at opbygge en simpel forudsigende model med et velstruktureret datasæt uden for mange komplikationer.

Din bedste satsning her er sandsynligvis lineær regression, noget der kan tage en lang række faktorer og derefter give dig et forudsigende resultat med en simpel fejlrate forklaring og en simpel forklaring på hvilke faktorer der bidrager til forudsigelsen. Det kræver heller ikke meget beregningskraft for at køre en lineær regression.

Ressource : Lineær regression - Detaljeret visning

Du søger at klassificere data, der allerede er mærket i to eller flere skarpt forskellige typer etiketter (f.eks. Forsøge at afgøre, om børn sandsynligvis er mænd eller kvinder baseret på deres vægt og højde) i en overvåget indstilling.

Det første instinkt, du skal have, når du ser en situation som denne, er at anvende den logistiske regressionsmodel . Efter at have kørt modellen ser du, at den tvinger hvert datapunkt i to forskellige kategorier, så du nemt kan output, hvilket punkt der hører til hvilken kategori. Den logistiske regressionsmodel kan også let generaliseres til at arbejde med flere mål- og resultatklasser, hvis det er hvad dit problem kræver.

Ressource : Opbygning af en logistisk regression

Du søger at placere umærkede kontinuerlige data i forskellige grupper (f.eks. At sætte kunder med visse registrerede træk og forsøge at finde kategorier / grupper, de kan tilhøre).

Den første naturlige pasform til dette problem er K-Means-klyngealgoritmen, som grupperer og grupperer data ved at måle afstanden mellem hvert punkt. Derefter er der en række klyngealgoritmer, såsom tæthedsbaseret rumlig klyngedannelse af applikationer med støj- og middel-skift-algoritmer.

Ressource : De 5 grupperingsalgoritmer, som data forskere har brug for at vide

Du ønsker at forudsige, om en streng af tegn eller en gruppering af træk falder ind i en eller anden datakategori (klassificeret overvåget tekst) - f.eks. Om en anmeldelse er positiv eller negativ.

Dit bedste valg her er sandsynligvis Naive Bayes, som er en enkel, men kraftfuld model, der kan bruges til tekstklassificering. Med tekstforbehandling og -rensning (vær især forsigtig med at fjerne fyldstofstopord som “og”, der kan føje støj til dit datasæt), kan du få et bemærkelsesværdigt sæt resultater med en meget enkel model.

En anden anstændig indsats er logistisk regression, som er en simpel model at forstå og forklare og mindre svært at vælge fra hinanden end Naive Bayes (som ofte tildeler sandsynligheder ord for ord snarere end holistisk at mærke et tekstuddrag som en del af en eller anden gruppe ).

Når vi går videre til noget mere kraftfuldt, vil en Lineær Support Vector Machine-algoritme sandsynligvis hjælpe med at forbedre din præstation. Hvis du vil springe lige foran her, kan du (selvom jeg foreslår at prøve begge modeller og sammenligne hvilken der fungerer bedst - Naive Bayes har en absurd nem implementering på rammer som scikit-learning, og det er ikke meget beregningsdygtigt, så du har råd for at teste begge dele).

Endelig kunne analyse af taske med ord også fungere - overvej at lave et ensemble af forskellige metoder og teste alle disse metoder mod hinanden afhængigt af det aktuelle datasæt.

Ressource : Sammenligning og markering af tekstklassificering i flere klasser

Du ønsker at udføre ustruktureret læring på store eller mindre datasæt (f.eks. Billedklassificering).

Den bedste algoritme til at tackle gennem forskellige billeder er et nedbrydningsneuralt netværk, der er organiseret på samme måde som, hvordan dyrevisuelle cortexer analyseres.

Målt efter ydeevne (reduceret fejlprocent) i ImageNet-konkurrencen kommer SE-Resnet-arkitekturen på toppen, selvom feltet stadig udvikler sig, kommer nye fremskridt næsten hver dag.

Du skal dog være opmærksom på, at nedbrydningsneurale netværk er tætte og kræver en masse computerkraft - så sørg for at du har hardwarefunktionen til at køre disse modeller på store datasæt.

Ressource : Gennemgang af dyb læringsalgoritmer til billedklassificering

Du søger at klassificere resultatpoint, der kommer ud af en veldefineret proces (f.eks. Antal ansættelser fra en forudbestemt interviewproces, hvor du kender eller beregningsmæssigt kan udlede sandsynlighederne for hver begivenhed).

Den bedste mulighed for dette er sandsynligvis en beslutningstræalgoritme, der tydeligt forklarer, hvad splitpunkterne er mellem at klassificere noget i en eller anden gruppe.

Ressource : Beslutningstræer i maskinindlæring

Du ønsker at lave tidsserie-analyse med veldefinerede, overvågede data (f.eks. Forudsigelse af aktiekurser baseret på historiske mønstre på aktiemarkedet arrangeret på en kronologisk basis fra fortiden til nutiden).

Et tilbagevendende neuralt netværk er indstillet til at foretage sekvensanalyse ved at indeholde en in-stream intern hukommelse af data, det behandler, så det kan tage højde for forholdet mellem data og tidshorisonten og rækkefølgen, det er implementeret i.

Ressource : Tilbagevendende neurale netværk og LSTM

Afslutter

Tag anbefalingerne og ressourcerne ovenfor, og anvend dem som en slags første instinkt til din modellering - det hjælper dig med at hoppe ind i ethvert arbejde, du udfører bare en smule hurtigere. Hvis du er interesseret i at blive mentoreret af en maskinindlæringsekspert i at lære at træne dine instinkter yderligere, skal du tjekke Springboards AI / Machine Learning karrierebane.