Machine learning zonder Python, Anaconda en andere reptielen

Nee, natuurlijk, ik meen het niet. Er moet een grens zijn aan de mate waarin een onderwerp kan worden vereenvoudigd. Maar voor de eerste fases, het begrijpen van de basisconcepten en het snel “betreden” van het onderwerp, kan het acceptabel zijn. We zullen aan het einde bespreken hoe we dit materiaal de juiste naam kunnen geven (opties: "Machine learning voor dummies", "Data-analyse van luiers", "Algoritmen voor de kleintjes").

Ter zake. Schreef verschillende applicatieprogramma's in MS Excel voor visualisatie en visuele weergave van processen die plaatsvinden in verschillende machine learning-methoden bij het analyseren van gegevens. Zien is immers geloven, zoals de dragers van de cultuur zeggen, die de meeste van deze methoden heeft ontwikkeld (trouwens niet allemaal). De krachtigste ‘support vector machine’, of SVM, support vector machine is de uitvinding van onze landgenoot Vladimir Vapnik, Moskou Institute of Management, trouwens 1963! Nu geeft hij echter les en werkt hij in de VS).

Drie bestanden ter beoordeling

1. K-betekent clustering

Dit soort problemen hebben betrekking op ‘leren zonder toezicht’, wanneer we de initiële gegevens moeten verdelen in een bepaald aantal categorieën die van tevoren bekend zijn, maar we geen enkel aantal ‘juiste antwoorden’ hebben; we moeten ze uit de gegevens zelf halen. . Het fundamentele klassieke probleem van het vinden van ondersoorten van irisbloemen (Ronald Fisher, 1936!), dat wordt beschouwd als het eerste teken van dit kennisgebied, is precies van deze aard.

De methode is vrij eenvoudig. We hebben een reeks objecten die worden weergegeven als vectoren (sets van N-nummers). Bij irissen zijn dit sets van 4 cijfers die de bloem karakteriseren: respectievelijk de lengte en breedte van de buitenste en binnenste lobben van het bloemdek (Fischer's irissen - Wikipedia). De gebruikelijke cartesiaanse metriek wordt gekozen als de afstand of maatstaf voor de nabijheid tussen objecten.

Vervolgens worden clustercentra willekeurig geselecteerd (of niet willekeurig, zie hieronder) en worden de afstanden van elk object tot de clustercentra berekend. Elk object bij een gegeven iteratiestap wordt gemarkeerd als behorend tot het dichtstbijzijnde centrum. Vervolgens wordt het centrum van elke cluster overgebracht naar het rekenkundig gemiddelde van de coördinaten van zijn leden (naar analogie met de natuurkunde wordt het ook wel het "massamiddelpunt" genoemd), en wordt de procedure herhaald.

Het proces convergeert vrij snel. Op afbeeldingen in twee dimensies ziet het er als volgt uit:

1. Initiële willekeurige verdeling van punten op het vlak en het aantal clusters

Machine learning zonder Python, Anaconda en andere reptielen

2. Clustercentra specificeren en punten aan hun clusters toewijzen

Machine learning zonder Python, Anaconda en andere reptielen

3. Overbrengen van de coördinaten van de clustercentra, herberekenen van de aansluiting van de punten totdat de centra stabiliseren. Het traject van het clustercentrum dat zich naar zijn uiteindelijke positie beweegt, is zichtbaar.

Machine learning zonder Python, Anaconda en andere reptielen

U kunt op elk moment nieuwe clustercentra instellen (zonder een nieuwe puntenverdeling te genereren!) en zien dat het partitieproces niet altijd eenduidig ​​is. Wiskundig gezien betekent dit dat we voor de functie die wordt geoptimaliseerd (de som van de kwadratische afstanden van punten tot de middelpunten van hun clusters) geen globaal, maar een lokaal minimum vinden. Dit probleem kan worden overwonnen door een niet-willekeurige keuze van initiële clustercentra, of door mogelijke centra op te sommen (soms is het voordelig om ze precies op een van de punten te plaatsen, dan is er tenminste een garantie dat we niet leeg raken clusters). Hoe dan ook, een eindige verzameling heeft altijd een infimum.

Je kunt met dit bestand spelen via deze link (vergeet niet macro-ondersteuning in te schakelen. De bestanden zijn gescand op virussen)

Beschrijving van de methode op Wikipedia - k-betekent methode

2. Benadering door polynomen en uitsplitsing van gegevens. Omscholing

Opmerkelijk wetenschapper en popularisator van data science K.V. Vorontsov beschrijft methoden voor machinaal leren kort als ‘de wetenschap van het tekenen van curven door punten’. In dit voorbeeld zullen we een patroon in de gegevens vinden met behulp van de kleinste kwadratenmethode.

De techniek van het verdelen van de brongegevens in ‘training’ en ‘controle’ wordt getoond, evenals een fenomeen als herscholing of ‘opnieuw aanpassen’ aan de gegevens. Bij een correcte benadering zullen we een bepaalde fout hebben in de trainingsgegevens en een iets grotere fout in de controlegegevens. Indien onjuist, resulteert dit in een nauwkeurige aanpassing van de trainingsgegevens en een grote fout in de testgegevens.

(Het is een bekend feit dat men door N punten een enkele kromme van de N-1e graad kan tekenen, en deze methode geeft in het algemeen niet het gewenste resultaat. Lagrange-interpolatiepolynoom op Wikipedia)

1. Stel de initiële distributie in

Machine learning zonder Python, Anaconda en andere reptielen

2. We verdelen de punten in “training” en “controle” in een verhouding van 70 tot 30.

Machine learning zonder Python, Anaconda en andere reptielen

3. We tekenen de benaderende curve langs de trainingspunten, we zien de fout die deze geeft op de controlegegevens

Machine learning zonder Python, Anaconda en andere reptielen

4. We tekenen een exacte curve door de trainingspunten en we zien een monsterlijke fout op de controlegegevens (en nul op de trainingsgegevens, maar wat heeft dat voor zin?).

Machine learning zonder Python, Anaconda en andere reptielen

Uiteraard wordt de eenvoudigste optie getoond met een enkele opdeling in subsets van “training” en “controle”; in het algemene geval wordt dit vele malen gedaan voor de beste aanpassing van de coëfficiënten.

Het bestand is hier beschikbaar, gescand door antivirus. Schakel macro's in voor een correcte werking

3. Gradiëntdaling en dynamiek van foutverandering

Er zal sprake zijn van een vierdimensionaal geval en lineaire regressie. Lineaire regressiecoëfficiënten zullen stap voor stap worden bepaald met behulp van de gradiënt-afdalingsmethode, aanvankelijk zijn alle coëfficiënten nul. Een aparte grafiek toont de dynamiek van de foutreductie naarmate de coëfficiënten steeds nauwkeuriger worden aangepast. Het is mogelijk om alle vier de tweedimensionale projecties te bekijken.

Als je de gradiënt-afdaalstap te groot instelt, kun je zien dat we elke keer het minimum overslaan en in een groter aantal stappen tot het resultaat zullen komen, hoewel we uiteindelijk nog steeds zullen aankomen (tenzij we de afdalingsstap te lang uitstellen). veel - dan zal het algoritme “in schoppen”) gaan. En de grafiek van de fout, afhankelijk van de iteratiestap, zal niet vloeiend zijn, maar "schokkerig".

1. Genereer gegevens, stel de gradiënt-afdalingsstap in

Machine learning zonder Python, Anaconda en andere reptielen

2. Met de juiste selectie van de gradiëntafdalingsstap bereiken we soepel en snel het minimum

Machine learning zonder Python, Anaconda en andere reptielen

3. Als de gradiënt-afdalingsstap verkeerd is geselecteerd, overschrijden we het maximum, is de foutgrafiek “schokkerig” en duurt de convergentie een groter aantal stappen

Machine learning zonder Python, Anaconda en andere reptielen
и

Machine learning zonder Python, Anaconda en andere reptielen

4. Als we de gradiënt-afdalingsstap volledig verkeerd selecteren, wijken we af van het minimum

Machine learning zonder Python, Anaconda en andere reptielen

(Om het proces te reproduceren met behulp van de gradiënt-afdalingsstapwaarden die in de afbeeldingen worden weergegeven, vinkt u het vakje “referentiegegevens” aan).

Het bestand staat op deze link, je moet macro's inschakelen, er zijn geen virussen.

Is een dergelijke vereenvoudiging en methode om het materiaal te presenteren volgens de gerespecteerde gemeenschap aanvaardbaar? Is het de moeite waard om het artikel in het Engels te vertalen?

Bron: www.habr.com

Voeg een reactie