Machine learning zonder Python, Anaconda en andere slangen

Nee, natuurlijk neem ik dat niet serieus. Er moet toch een grens zijn aan hoe ver je een onderwerp kunt vereenvoudigen. Maar voor de eerste stappen, om de basisconcepten te begrijpen en snel in het onderwerp te komen, kan het misschien acceptabel zijn. En hoe we dit materiaal goed kunnen noemen (opties: 'Machine Learning voor Dummies', 'Data-analyse voor Beginners', 'Algoritmen voor de Kleinsten'), zullen we aan het eind bespreken.

Laten we ter zake komen. Ik heb een aantal praktische programma's in MS Excel geschreven voor de visualisatie en het duidelijke weergave van de processen die plaatsvinden in verschillende methoden van machine learning bij data-analyse. Seeing is believing, tenslotte, zoals de cultuurelleftalingen zeggen, die de meeste van deze methoden hebben ontwikkeld (overigens zijn er zeker uitzonderingen. De krachtige 'Support Vector Machine' of SVM is een uitvinding van onze landgenoot Vladimir Vapnik, van het Moskouse Instituut voor Beheer. 1963, trouwens! Tegenwoordig geeft hij echter les en werkt hij in de VS).

Drie bestanden ter inzage

1. K-means clustering

Dit soort taken valt onder 'unsupervised learning', waarbij we de oorspronkelijke gegevens moeten splitsen in een vooraf bekend aantal categorieĆ«n, maar waarbij we geen 'juiste antwoorden' hebben; deze moeten we uit de gegevens zelf halen. De fundamentale klassieke taak van het vinden van rassen van irisbloemen (Ronald Fisher, 1936!) wordt beschouwd als de eerste stap in dit kennisgebied – is precies van deze aard.

De methode is vrij eenvoudig. We hebben een set objecten, voorgesteld als vectoren (sets van N getallen). Voor de irissen is dit een set van 4 getallen die de bloem karakteriseren: de lengte en breedte van de buitenste en binnenste delen van de bloembekers, respectievelijk (Iris van Fisher - Wikipedia). Voor de afstand, of maat voor nabijheid tussen objecten, wordt de gebruikelijke Euclidische metric gekozen.

Vervolgens worden willekeurig (of niet willekeurig, zie verder) de clustercentra gekozen, en worden de afstanden van elk object tot de clustercentra berekend. Elk object wordt in deze iteratiefase gemarkeerd als behorende tot het dichtstbijzijnde centrum. Vervolgens wordt het centrum van elk cluster verplaatst naar het gemiddelde van de coƶrdinaten van zijn leden (in de natuurkunde wordt dit ook wel het 'zwaartepunt' genoemd), en de procedure wordt herhaald.

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

1. Initiƫle willekeurige spreiding van punten op het vlak en het aantal clusters

Machine learning zonder Python, Anaconda en andere slangen

2. Het instellen van de centra van de clusters en het toewijzen van punten aan hun clusters

Machine learning zonder Python, Anaconda en andere slangen

3. Het verplaatsen van de coƶrdinaten van de clustercentra, herschikken van de toewijzing van punten, totdat de centra stabiliseren. De bewegingsroute van het clustercentrum naar de eindpositie is zichtbaar.

Machine learning zonder Python, Anaconda en andere slangen

Op elk moment kunnen nieuwe clustercentra worden ingesteld (zonder een nieuwe spreiding van punten te genereren!) en je kunt zien dat het splitsingsproces niet altijd eenduidig is. Wiskundig betekent dit dat we in de geoptimaliseerde functie (de som van de kwadraten van de afstanden van de punten tot de centra van hun clusters) geen globaal, maar een lokaal minimum vinden. Dit probleem kan worden overwonnen door de begincentra van de clusters niet willekeurig te kiezen, of door mogelijke centra systematisch te onderzoeken (soms is het voordelig om ze precies in een van de punten te plaatsen, dan is er tenminste de garantie dat we geen lege clusters krijgen). In ieder geval heeft een eindige set altijd een exacte ondergrens.

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

Een beschrijving van de methode op Wikipedia — De k-means methode

2. Benadering met functies en dataverdeling. Overfitting

De opmerkelijke wetenschapper en popularisator van de wetenschap van gegevens, K.V. Vorontsov, zegt kort over de methoden van machine learning dat het "de wetenschap van het trekken van krommen door punten" is. In dit voorbeeld zullen we patronen in de gegevens vinden met de methode van de kleinste kwadraten.

De techniek van het splitsen van de originele gegevens in "trainings-" en "testset" wordt getoond, evenals het fenomeen van overfitting, of "overtraining" op de gegevens. Bij een juiste benadering zullen we een bepaalde fout hebben op de trainingsgegevens en een iets grotere op de testset. Bij een onjuiste benadering – exacte afstemming op de trainingsgegevens en een enorme fout op de testset.

(Een bekend feit is dat door N punten een unieke kromme van de N-1de graad kan worden getrokken, en deze manier levert in het algemeen niet het gewenste resultaat op. De interpolerende Lagrange-polynoom op Wikipedia)

1. We geven de initiƫle spreiding op

Machine learning zonder Python, Anaconda en andere slangen

2. We verdelen de punten in "trainings-" en "testset" in een verhouding van 70 naar 30.

Machine learning zonder Python, Anaconda en andere slangen

3. We draw an approximating curve through the training points and see the error it produces on the validation data.

Machine learning zonder Python, Anaconda en andere slangen

4. We draw an exact curve through the training points and see a monstrous error on the validation data (and zero on the training data, but what’s the use?).

Machine learning zonder Python, Anaconda en andere slangen

This shows the simplest case with a single split into 'training' and 'validation' subsets; generally, this is done multiple times for better tuning of the coefficients.

The file is available here, checked by antivirus. Enable macros for proper functionality.

3. Gradient descent and the dynamics of error change.

Here will be the 4-dimensional case and linear regression. The coefficients of linear regression will be determined step by step using the gradient descent method, initially all coefficients are zeros. A separate graph shows the dynamics of error reduction as the coefficients are fine-tuned more accurately. There is an option to view all four 2-dimensional projections.

If the step size of the gradient descent is too large, we can see that every time we jump over the minimum, and it takes more steps to reach the result, although in the end, we will still get there (unless the step is raised too high—then the algorithm will 'run wild'). The graph of error dependence on the iteration step will not be smooth but 'jumpy'.

1. Generate data, specify the gradient descent step.

Machine learning zonder Python, Anaconda en andere slangen

2. With the correct choice of gradient descent step, we smoothly and quickly reach the minimum.

Machine learning zonder Python, Anaconda en andere slangen

3. With an incorrect choice of the gradient descent step, we overshoot the maximum; the error graph is 'jumpy', convergence takes more steps.

Machine learning zonder Python, Anaconda en andere slangen
en

Machine learning zonder Python, Anaconda en andere slangen

4. With a completely incorrect choice of the gradient descent step, we move away from the minimum.

Machine learning zonder Python, Anaconda en andere slangen

(To reproduce the process with the shown values for the gradient descent step, check the 'reference data' box).

The file is available via this link; you need to enable macros, there are no viruses.

How does the esteemed community view this simplification and method of presenting the material? Is it worth translating the article into English?

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster