📚 Bekijk onze tutorial die ingaat op eenvoudige lineaire regressie met wiskunde en Python. 📚
Wat is machinaal leren?
Een computerprogramma leert van ervaring E met betrekking tot een bepaalde klasse van taken T en prestatiemaatstaf P, als de prestaties ervan bij taken in T, zoals gemeten door P, verbeteren met ervaring E. ~ Tom M. Mitchell
Machine-leren gedraagt zich ongeveer hetzelfde als de groei van een kind. Naarmate een kind groeit, neemt haar ervaring E in het uitvoeren van taak T toe, wat resulteert in een hogere prestatiemaat (P).
Bij voorbeeld, we geven een kind een “vormsorteerblok” speelgoed. (Nu weten we allemaal dat er in dit speelgoed verschillende vormen en vormgaten zitten). In dit geval is onze taak T om voor een vorm een passend vormgat te vinden. Daarna observeert het kind de vorm en probeert deze in een vormgat te passen. Laten we zeggen dat dit speelgoed drie vormen heeft: een cirkel, een driehoek, en een vierkant. Bij haar eerste poging om een gat te vinden, is haar prestatiemaat (P) 1/3, wat betekent dat het kind 1 van de 3 juiste gaten heeft gevonden.
Tweede keer probeert het kind het nog een keer en merkt dat ze een beetje ervaren is in deze taak. Gezien de opgedane ervaring (E), probeert het kind deze taak nog een keer, en bij het meten van de prestatie (P), blijkt deze 2/3 te zijn. Na deze taak (T) 100 keer te hebben herhaald, heeft de baby nu uitgevogeld welke vorm in welk vormgat gaat.
Dus haar ervaring (E) is toegenomen, haar prestatie(P) is ook toegenomen, en dan zien we dat naarmate het aantal pogingen met dit speeltje toeneemt. De prestatie ook toeneemt, wat resulteert in een hogere nauwkeurigheid.
Deze uitvoering is vergelijkbaar met machine learning. Wat een machine doet is, hij neemt een taak (T), voert die uit, en meet de prestaties (P). Nu heeft een machine een groot aantal gegevens, dus als hij die gegevens verwerkt, neemt zijn ervaring (E) in de loop van de tijd toe, wat resulteert in een hogere prestatiemaatstaf (P). Dus na het doorlopen van alle gegevens neemt de nauwkeurigheid van ons machine learning-model toe, wat betekent dat de voorspellingen van ons model zeer nauwkeurig zullen zijn.
Een andere definitie van machine learning door Arthur Samuel:
Machine Learning is het deelgebied van de computerwetenschap dat “computers het vermogen geeft om te leren zonder expliciet geprogrammeerd te worden.” ~ Arthur Samuel
Laten we proberen deze definitie te begrijpen: Er staat “leren zonder expliciet geprogrammeerd te zijn” – wat betekent dat we de computer niet gaan onderwijzen met een specifieke set regels, maar dat we de computer in plaats daarvan voldoende gegevens gaan geven en hem de tijd geven om daarvan te leren, door zijn eigen fouten te maken en die te verbeteren. We hebben het kind bijvoorbeeld niet geleerd hoe het de vormen moet inpassen, maar door dezelfde taak een aantal keren uit te voeren, leerde het kind uit zichzelf de vormen in het speelgoed in te passen.
Daarom kunnen we zeggen dat we het kind niet expliciet hebben geleerd hoe het de vormen moet inpassen. Hetzelfde doen we met machines. We geven het genoeg gegevens om mee te werken en voeden het met de informatie die we van het willen hebben. Zo verwerkt het de gegevens en voorspelt het nauwkeurig.
Waarom hebben we machine learning nodig?
Bij voorbeeld, we hebben een set afbeeldingen van katten en honden. Wat we willen doen is ze classificeren in een groep katten en honden. Om dat te doen, moeten we verschillende kenmerken van dieren achterhalen, zoals:
- Hoeveel ogen heeft elk dier?
- Wat is de oogkleur van elk dier?
- Wat is de lengte van elk dier?
- Wat is het gewicht van elk dier?
- Wat eet elk dier over het algemeen?
We vormen een vector op de antwoorden van elk van deze vragen. Vervolgens passen we een aantal regels toe, zoals:
Als hoogte > 1 voet en gewicht > 15 lbs, dan zou het een kat kunnen zijn.
Nu moeten we voor elk gegevenspunt zo’n set regels maken. Verder plaatsen we een beslisboom van als, anders, anders-statements en controleren we of het in een van de categorieën valt.
Laten we aannemen dat het resultaat van dit experiment niet vruchtbaar was omdat het veel van de dieren verkeerd classificeerde, wat ons een uitstekende gelegenheid geeft om machine learning te gebruiken.
Wat machine learning doet is de gegevens verwerken met verschillende soorten algoritmen en ons vertellen welk kenmerk belangrijker is om te bepalen of het een kat of een hond is. Dus in plaats van vele reeksen regels toe te passen, kunnen we het vereenvoudigen op basis van twee of drie kenmerken, en als resultaat geeft het ons een hogere nauwkeurigheid. De vorige methode was niet gegeneraliseerd genoeg om voorspellingen te doen.
Machine learning-modellen helpen ons bij vele taken, zoals:
- Objectherkenning
- Samenvatten
- Voorspelling
- Classificatie
- Clustering
- Recommender systemen
- En andere
Wat is een machine learning-model?
Een machine learning model is een vraag/antwoord systeem dat zorgt voor de verwerking van machine-learning gerelateerde taken. Zie het als een algoritmesysteem dat gegevens weergeeft bij het oplossen van problemen. De methoden die we hieronder zullen aanpakken zijn gunstig voor industrie-gerelateerde doeleinden om zakelijke problemen aan te pakken.
Bijvoorbeeld, laten we ons voorstellen dat we werken aan het ML-systeem van Google Adwords, en onze taak is om een ML-algoritme te implementeren om een bepaalde demografie of gebied over te brengen met behulp van gegevens. Een dergelijke taak heeft als doel om van het gebruik van gegevens naar het verzamelen van waardevolle inzichten om de bedrijfsresultaten te verbeteren.
Grootste Machine Learning Algoritmen:
We gebruiken regressie-algoritmen voor het voorspellen van continue waarden.
Regressie-algoritmen:
- Lineaire regressie
- Polynomiale regressie
- Exponentiële regressie
- Logistische regressie
- Logaritmische regressie
Classificatie
Wij gebruiken classificatiealgoritmen voor het voorspellen van de klasse of categorie van een reeks items.
Classificatiealgoritmen:
- K-Nearest Neighbors
- Decision Trees
- Random Forest
- Support Vector Machine
- Naive Bayes
Clustering
We gebruiken clusteringalgoritmen voor het samenvatten of om gegevens te structureren.
Clustering-algoritmen:
- K-means
- DBSCAN
- Mean Shift
- Hierarchisch
Associatie
We gebruiken associatie-algoritmen om samenvallende items of gebeurtenissen te associëren.
Associatie-algoritmen:
- Apriori
Anomaliedetectie
We gebruiken anomaliedetectie voor het ontdekken van abnormale activiteiten en ongebruikelijke gevallen, zoals fraudedetectie.
Sequence Pattern Mining
We gebruiken sequentiële patroonmining voor het voorspellen van de volgende gegevensgebeurtenissen tussen gegevensvoorbeelden in een sequentie.
Dimensionaliteitsreductie
We gebruiken dimensionaliteitsreductie om de grootte van gegevens te verkleinen en alleen nuttige kenmerken uit een dataset te halen.
Aanbevelingssystemen
We gebruiken aanbevelingsalgoritmen om aanbevelingsengines te bouwen.
Voorbeelden:
- Netflix-aanbevelingssysteem.
- Een boekaanbevelingssysteem.
- Een productaanbevelingssysteem op Amazon.
Nu horen we veel buzz-woorden als kunstmatige intelligentie, machine learning, deep learning, en anderen.
Wat zijn de fundamentele verschillen tussen kunstmatige intelligentie, machine learning en deep learning?
📚 Bekijk onze redactionele aanbevelingen voor de beste boeken over machine learning. 📚
Artificiële intelligentie (AI):
Artificiële intelligentie (AI), zoals gedefinieerd door professor Andrew Moore, is de wetenschap en techniek om computers zich te laten gedragen op manieren waarvan we tot voor kort dachten dat daar menselijke intelligentie voor nodig was.
Daaronder vallen:
- Computer Vision
- Taalverwerking
- Creativiteit
- Summarization
Machine Learning (ML):
Zoals gedefinieerd door professor Tom Mitchell, verwijst machine learning naar een wetenschappelijke tak van AI, die zich richt op de studie van computeralgoritmen die computerprogramma’s in staat stellen automatisch te verbeteren door ervaring .
Deze omvatten:
- Classificatie
- Neuraal Netwerk
- Clustering
Deep Learning:
Deep learning is een subset van machine learning waarin gelaagde neurale netwerken, gecombineerd met hoge rekenkracht en grote datasets, krachtige machine learning-modellen kunnen creëren.
Waarom geven we de voorkeur aan Python om machine learning algoritmen te implementeren?
Python is een populaire en algemene programmeertaal. We kunnen machine learning-algoritmen schrijven met Python, en het werkt goed. De reden waarom Python zo populair is onder datawetenschappers is dat Python al een verscheidenheid aan modules en bibliotheken heeft geïmplementeerd die ons leven comfortabeler maken.
Laten we eens een korte blik werpen op enkele opwindende Python-bibliotheken.
- Numpy: Het is een wiskunde bibliotheek om te werken met n-dimensionale arrays in Python. Het stelt ons in staat om berekeningen effectief en efficiënt uit te voeren.
- Scipy: Het is een verzameling van numerieke algoritmen en domeinspecifieke tool-box, waaronder signaalverwerking, optimalisatie, statistiek, en nog veel meer. Scipy is een functionele bibliotheek voor wetenschappelijke en high-performance berekeningen.
- Matplotlib: Het is een trendy plotpakket dat zowel 2D-plotten als 3D-plotten biedt.
- Scikit-learn: Het is een gratis machine learning bibliotheek voor python programmeertaal. Het heeft de meeste van de classificatie, regressie en clustering algoritmen, en werkt met Python numerieke bibliotheken zoals Numpy, Scipy.
Machine learning algoritmen classificeren in twee groepen :
- Supervised Learning algoritmen
- Lineaire regressie
- Logistische regressie
- K-Nest Neighbors
- Decision Tree
- Random Forest
- Support Vector Machine
- Dimensiebeperking
- Dichtheidsschatting
- Marktmandanalyse
- Generative adversarial networks (GANs)
- Clustering
- Unsupervised Learning algoritmen
I. Supervised Learning-algoritmen:
Doel: Voorspellen van klasse of waarde label.
Supervised learning is een tak van machine learning(misschien is het de mainstream van machine/deep learning voor nu) met betrekking tot het afleiden van een functie van gelabelde trainingsdata. Trainingsgegevens bestaan uit een set van *(input, target)* paren, waarbij de input een vector van kenmerken kan zijn, en het target aangeeft wat we willen dat de functie uitvoert. Afhankelijk van het type *doel*, kunnen we leren onder toezicht ruwweg in twee categorieën verdelen: classificatie en regressie. Bij classificatie gaat het om categorische doelen; voorbeelden variëren van eenvoudige gevallen, zoals beeldclassificatie, tot geavanceerde onderwerpen, zoals automatische vertalingen en beeldopschriften. Regressie heeft betrekking op continue doelen. Toepassingen zijn onder meer voorraadvoorspelling en beeldmaskering, die alle in deze categorie vallen.
Om te begrijpen wat begeleid leren is, zullen we een voorbeeld gebruiken. We geven een kind bijvoorbeeld 100 opgezette dieren, waarvan er tien van elke soort zijn, zoals tien leeuwen, tien apen, tien olifanten, enzovoort. Vervolgens leren we het kind de verschillende soorten dieren te herkennen op basis van verschillende kenmerken (eigenschappen) van een dier. Bijvoorbeeld als de kleur oranje is, dan zou het een leeuw kunnen zijn. Als het een groot dier is met een slurf, dan is het misschien een olifant.
We leren het kind hoe hij dieren van elkaar kan onderscheiden, dit kan een voorbeeld zijn van begeleid leren. Als we het kind nu verschillende dieren geven, moet hij ze in de juiste diergroep kunnen indelen.
In dit voorbeeld zien we dat 8/10 van zijn indelingen juist waren. We kunnen dus zeggen dat het kind zijn werk behoorlijk goed heeft gedaan. Hetzelfde geldt voor computers. We voorzien ze van duizenden datapunten met hun werkelijke gelabelde waarden (gelabelde gegevens zijn gegevens die in verschillende groepen zijn ingedeeld, samen met hun kenmerkwaarden). Dan leert het van de verschillende kenmerken in zijn trainingsperiode. Nadat de trainingsperiode voorbij is, kunnen we ons getraind model gebruiken om voorspellingen te doen. Vergeet niet dat we de machine reeds hebben gevoed met gelabelde gegevens, zodat haar voorspellingsalgoritme gebaseerd is op supervised learning. Kortom, we kunnen zeggen dat de voorspellingen van dit voorbeeld zijn gebaseerd op gelabelde gegevens.
Voorbeeld van algoritmen voor gesuperviseerd leren :
II. Leren zonder toezicht:
Doel: bepalen van gegevenspatronen/groeperingen.
In tegenstelling tot leren onder toezicht. Bij niet-begeleid leren wordt uit ongelabelde gegevens een functie afgeleid die verborgen structuren in gegevens beschrijft.
Het meest basale type van niet-begeleid leren zijn misschien de methoden voor dimensieverkleining, zoals PCA, t-SNE, terwijl PCA meestal wordt gebruikt bij de voorbewerking van gegevens, en t-SNE meestal bij de visualisatie van gegevens.
Een meer geavanceerde tak is clustering, waarbij de verborgen patronen in gegevens worden verkend en vervolgens voorspellingen worden gedaan; voorbeelden zijn K-mean clustering, Gaussian mixture models, hidden Markov models, en anderen.
Gelijk met de renaissance van deep learning, krijgt leren zonder toezicht steeds meer aandacht omdat het ons bevrijdt van het handmatig labelen van gegevens. In het licht van deep learning beschouwen we twee soorten leren zonder toezicht: representatieleren en generatieve modellen.
Representatieleren heeft tot doel een representatieve eigenschap op hoog niveau te destilleren die nuttig is voor sommige downstream-taken, terwijl generatieve modellen tot doel hebben de invoergegevens te reproduceren aan de hand van enkele verborgen parameters.
Onsupervised learning werkt zoals het klinkt. In dit type algoritmen hebben we geen gelabelde gegevens. De machine moet dus de inputgegevens verwerken en proberen conclusies te trekken over de output. Bijvoorbeeld, herinner je het kind dat we een vormspeeltje gaven? In dit geval zou hij van zijn eigen fouten leren om het perfecte vormgat voor verschillende vormen te vinden.
Maar het addertje onder het gras is dat we het kind niet voeden door de methoden te leren om de vormen te passen (voor machine learning doeleinden gelabelde data genoemd). Het kind leert echter van de verschillende kenmerken van het speelgoed en probeert daar conclusies uit te trekken. Kortom, de voorspellingen zijn gebaseerd op ongelabelde gegevens.
Voorbeelden van algoritmen voor ongesuperviseerd leren: