Maskininlärning är algoritmer som implementeras som modeller kapabla att lära sig av träningsdata och göra förutsägelser om ny och osedd data, detta utan att någon har givit uttryckliga instruktioner.
Maskininlärning bygger på datautvinning, matematik, statistik och programmering. Datautvinning är en process som syftar till att hitta mönster, relationer och trender i stora datamängder.
Maskininlärning används bland annat för skräppostdetektering, bildklassificering, hudcancerupptäckt, objektdetektering i bilder, textkategorisering, språkdetektering, textöversättningar och skapande av konst.
Historia
Alan Turing publicerade ”Computing Machinery and Intelligence” år 1950 och anses vara fadern till artificiell intelligens. Alan Turing var intresserad av att veta om maskiner kan tänka och han introducerade Turing-testet. En maskin sägs ha klarat Turing-testet om en människa som pratar med den tror att det är en människa.
Begreppet maskininlärning introducerades först av Arthur Lee Samuel år 1959. Arthur Lee Samuel:s självinlärningsprogram för Dam var ett av de första programmen i världen som demonstrerade artificiell intelligens (AI).
Tom Michael Mitchell publicerade boken Machine Learning år 1997 och han erbjöd en formell definition av maskininlärning: ”Ett datorprogram sägs lära av erfarenhet E med avseende på en klass av uppgifter T och prestandamått P om dess prestanda vid uppgifter i T, mätt med P, förbättras med erfarenhet E ”.
Övervakat och oövervakat lärande
Maskininlärning sägs vara övervakad om träningsdata innehåller både in- och utdata. Uppsättningen av träningsdata inkluderar korrekta svar i övervakad inlärning och det innebär att data kan behöva förberedas av personer med expertis inom det aktuella området. Om vi till exempel vill upptäcka hudcancer, då måste någon som vet hur hudcancer ser ut märka upp varje bild.
Oövervakad inlärning tar in datauppgifter som endast består av inmatningsdata och tillämpar en algoritm för att producera utdata. Oövervakade inlärningsalgoritmer försöker hitta strukturer i inmatningsdata för att producera grupper eller kluster. Vi kan till exempel använda oövervakat lärande för att klassificera nyhetsartiklar i grupper (kluster), liknande artiklar i varje grupp.
Klassificering och regression
Klassificeringsproblem hanterar kategorisk utdata, kategoriska data kan vara nominaldata eller ordinal data. Kategorisk data kan representeras av siffror men dessa nummer har ingen matematisk betydelse. Varje element i en datauppsättning måste klassificeras i en kategori, men inte i mer än en kategori (ömsesidigt uteslutande och uttömmande).
Nominaldata är den mest primitiva typen av data, kan endast klassificeras och summeras baserat på antalet observationer. Nominaldata delas in i kategorier, exempel på denna datatyp är färg, kön och märke.
Ordinal data kan klassificeras och rangordnas, man kan säga att en kategori är bättre än en annan kategori. För ordinal data kan vi inte säga hur mycket bättre en kategori är jämfört med en annan. Ett exempel på ordinal data är betyg i skolan.
Klassificeringsproblem med endast två kategorier kallas binära problem och andra problem kallas flerklassproblem. Klassificeringsproblem kan vara att kategorisera artiklar, att upptäcka skräppost och att klassificera bilder.
Regressionsproblem behandlar numerisk utdata, numeriska data kan vara intervalldata eller kvotdata. Numeriska variabler kan vara diskreta eller kontinuerliga. Diskreta variabler kan endast anta vissa tydligt separerade värden (heltal), kontinuerliga variabler kan anta valfritt värde inom ett intervall.
Intervalldata är den näst högsta datanivån, vi kan rangordna intervalldata och det är möjligt att beräkna skillnaden mellan två värden. Ett exempel på intervalldata är temperatur. En kvot mellan två intervalldatavärden utgör inte användbar information.
Kvotdata är den högsta nivån av data. Kvotdata kan rangordnas, det är möjligt att beräkna skillnaden mellan två värden och det är meningsfullt att beräkna kvoten mellan två värden avseende kvotdata. Exempel på kvotdata är löner, omsättning, vikt och höjd.
Regression innebär att värden återgår till ett medelvärde, långa föräldrar får kortare barn och korta föräldrar får längre barn. Regressionsanalys innebär att vi vill hitta den funktion som bäst passar indata. Regressionsproblem kan vara att förutsäga aktiekurser, förutsäga produktpriser baserat på attribut och att förutsäga temperaturen.
Vi måste använda både klassificering och regression i vissa maskininlärningsproblem. Vid detektering av objekt måste en modell förutsäga vad ett objekt är (katt) och var det är (avgränsningsruta).
Överanpassning och underanpassning
Målet med en maskininlärningsalgoritm är att skapa en modell som gör perfekta förutsägelser avseende ny och osedd data. Generalisering avser en modells förmåga att anpassa sig till nya data.
En modell tränas med en sedd datauppsättning och generaliseringsförmågan kan vara mindre perfekt om vi underanpassar eller överanpassar modellen. Underanpassning innebär att en modell är för enkel och därför inte kan lära sig från träningsdata. Överanpassning innebär att en modell har nästan perfekt passform på träningsdata men fungerar dåligt på osedd data, modellen är för komplex och inte bra på generalisering.
Underanpassning förhindras bäst genom att göra modellen mer komplex (uppdatera inmatningsdata och ändra parametrar) och utvärdera prestationerna på tränings-/valideringsdata. Överanpassning förhindras bäst genom validering. Validering kan implementeras genom att dela upp datauppsättningen i en träningsuppsättning och en valideringsuppsättning eller genom att använda korsvalidering. Korsvalidering är kraftfullt och innebär att du inte behöver slösa bort träningsdata för validering. Korsvalidering kan vara en tidskrävande process och en uppdelning i träningsdata/valideringsdata kan vara bättre om du har mycket träningsdata.
Uppdelning av datauppsättning
En datauppsättning delas vanligtvis upp i en träningsuppsättning och en testuppsättning. Testdata ska aldrig användas vid träning, testdata används för att utvärdera prestationerna hos olika modeller. Testdata används i tävlingar för att kunna utse vinnaren.
Ett vanligt delningsförhållande är 80/20, 80 % av datauppsättningen används för träning och 20 % av datauppsättningen används för testning. Samma förhållande kan användas om du vill dela upp träningsdata i en träningsuppsättning och en valideringsuppsättning. En tränings- / valideringsdelning är inte nödvändig om du kan/vill använda korsvalidering.
Korsvalidering betyder att träningsdata delas upp i lika stora grupper (k), validering utförs på en grupp och träning utförs på resten av grupperna (k-1). Det är en iterativ process som upprepas k-gånger, varje grupp kommer att vara en valideringsuppsättning en gång.