Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

Ei, no, tietenkään en ole tosissani. Aiheen yksinkertaistamisella on oltava raja. Mutta ensimmäisissä vaiheissa peruskäsitteiden ymmärtäminen ja aiheen nopea "syöttäminen" voi olla hyväksyttävää. Keskustelemme lopuksi kuinka nimetä tämä materiaali oikein (vaihtoehdot: "Koneoppiminen nukkeille", "Data-analyysi vaippoista", "Algoritmit pienimmille").

Asiaan. Kirjoitti MS Excelissä useita sovellusohjelmia prosessien visualisointiin ja visuaaliseen esitykseen, joita esiintyy erilaisissa koneoppimismenetelmissä dataa analysoitaessa. Näkeminen on kuitenkin uskomista, kuten kulttuurin kantajat sanovat, joka kehitti suurimman osan näistä menetelmistä (muuten, ei kaikkia. Tehokkain "tukivektorikone", eli SVM, tukivektorikone on keksitty maanmiehimme Vladimir Vapnik, Moskovan johtamisinstituutti. 1963, muuten! Nyt hän kuitenkin opettaa ja työskentelee Yhdysvalloissa).

Kolme tiedostoa tarkistettavaksi

1. K- tarkoittaa klusterointia

Tämän tyyppiset ongelmat viittaavat "ohjaamattomaan oppimiseen", kun meidän on jaettava lähtötiedot tiettyyn määrään etukäteen tunnettuja kategorioita, mutta meillä ei ole yhtään "oikeita vastauksia", vaan ne on poimittava itse tiedosta. . Klassinen perusongelma iiriskukkien alalajien löytämisessä (Ronald Fisher, 1936!), jota pidetään tämän tietokentän ensimmäisenä merkkinä, on juuri tämäntyyppinen.

Menetelmä on melko yksinkertainen. Meillä on joukko objekteja, jotka esitetään vektoreina (N numeron joukko). Irisissä nämä ovat 4 numeron sarjaa, jotka kuvaavat kukkaa: perianthin ulomman ja sisemmän lohkon pituus ja leveys, vastaavasti (Fischerin iirikset - Wikipedia). Tavallinen karteesinen metriikka valitaan kohteiden väliseksi etäisyydeksi tai läheisyyden mittaksi.

Seuraavaksi klusterin keskukset valitaan satunnaisesti (tai ei satunnaisesti, katso alla), ja etäisyydet kustakin kohteesta lasketaan klusterin keskusten välillä. Jokainen objekti tietyssä iteraatiovaiheessa on merkitty kuuluvaksi lähimpään keskustaan. Sitten kunkin klusterin keskipiste siirretään sen jäsenten koordinaattien aritmeettiseen keskiarvoon (vastaavasti fysiikan kanssa sitä kutsutaan myös "massakeskukseksi"), ja toimenpide toistetaan.

Prosessi sulautuu melko nopeasti. Kuvissa kahdessa ulottuvuudessa se näyttää tältä:

1. Pisteiden alkuperäinen satunnaisjakauma tasossa ja klusterien lukumäärä

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

2. Klusterikeskusten määrittäminen ja pisteiden osoittaminen niiden klustereille

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

3. Siirretään klusterin keskusten koordinaatit, lasketaan uudelleen pisteiden yhteenkuuluvuus, kunnes keskukset vakiintuvat. Klusterin keskuksen liikerata lopulliseen asemaansa on näkyvissä.

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

Voit milloin tahansa asettaa uusia klusterikeskuksia (luomatta uutta pistejakaumaa!) ja nähdä, että osiointiprosessi ei ole aina yksiselitteinen. Matemaattisesti tämä tarkoittaa, että optimoitavalle funktiolle (pisteiden ja niiden klustereiden keskipisteiden välisten neliöetäisyyksien summa) emme löydä globaalia, vaan paikallista minimiä. Tämä ongelma voidaan ratkaista joko valitsemalla ei-satunnaisia ​​alkuperäisiä klusterikeskuksia tai luettelemalla mahdollisia keskuksia (joskus on edullista sijoittaa ne täsmälleen johonkin pisteestä, niin ainakin on takuu, että emme tyhjene klusterit). Joka tapauksessa äärellisellä joukolla on aina epäkohta.

Voit pelata tällä tiedostolla tästä linkistä (älä unohda ottaa makrotuki käyttöön. Tiedostot on tarkistettu virusten varalta)

Menetelmän kuvaus Wikipediassa - k-keino menetelmä

2. Approksimaatio polynomeilla ja datan erittely. Uudelleenkoulutus

Merkittävä tiedemies ja tietotieteen popularisoija K.V. Vorontsov kuvailee koneoppimismenetelmiä lyhyesti "tieteeksi piirtää käyriä pisteiden läpi". Tässä esimerkissä löydämme tiedoista kuvion pienimmän neliösumman menetelmällä.

Tekniikka lähdetietojen jakamiseksi "koulutukseen" ja "valvontaan" on esitetty, samoin kuin sellainen ilmiö kuin uudelleenkoulutus tai "uudelleensopeutuminen" tietoihin. Oikealla approksimaatiolla meillä on tietty virhe harjoitustiedoissa ja hieman suurempi virhe ohjaustiedoissa. Jos se on väärin, se johtaa tarkan säätöön harjoitustietoihin ja valtavaan virheeseen testitiedoissa.

(On hyvin tunnettu tosiasia, että N pisteen kautta voidaan piirtää yksittäinen N-1 asteen käyrä, eikä tämä menetelmä yleensä anna toivottua tulosta. Lagrangen interpolaatiopolynomi Wikipediassa)

1. Aseta alkuperäinen jakelu

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

2. Jaamme pisteet "koulutukseen" ja "kontrolliin" suhteessa 70-30.

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

3. Piirrämme approksimoivan käyrän harjoituspisteitä pitkin, näemme sen antaman virheen ohjaustiedoissa

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

4. Piirrämme tarkan käyrän harjoituspisteiden läpi ja näemme hirviömäisen virheen ohjaustiedoissa (ja nollan harjoitustiedoissa, mutta mitä järkeä on?).

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

Näytetään tietysti yksinkertaisin vaihtoehto, jossa on yksi jako "koulutus" ja "ohjaus" osajoukkoon; yleensä tämä tehdään monta kertaa kertoimien parhaan säädön saavuttamiseksi.

Tiedosto löytyy täältä, virustorjuntaohjelmalla skannattuna. Ota makrot käyttöön oikean toiminnan varmistamiseksi

3. Gradientin laskeutuminen ja virhemuutoksen dynamiikka

Tulee 4-ulotteinen tapaus ja lineaarinen regressio. Lineaariset regressiokertoimet määritetään vaiheittain gradienttilaskumenetelmällä, aluksi kaikki kertoimet ovat nollia. Erillinen kaavio esittää virheenvähennysdynamiikkaa kertoimien säädössä entistä tarkemmin. On mahdollista tarkastella kaikkia neljää 2-ulotteista projektiota.

Jos asetat kaltevuuden laskuaskeleen liian suureksi, voit nähdä, että joka kerta ohitamme minimin ja saavutamme tuloksen suuremmalla askelmäärällä, vaikka lopulta tulemme silti perille (ellemme viivytä myös laskeutumisaskelta paljon - silloin algoritmi menee " patakoossa"). Ja iteraatiovaiheesta riippuen virhekaavio ei ole sileä, vaan "nykivä".

1. Luo tiedot, aseta gradientin laskeutumisaskel

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

2. Oikealla kaltevuuden laskuaskeleen valinnalla saavutamme tasaisesti ja nopeasti minimin

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

3. Jos gradientin laskeutumisaskel on valittu väärin, ylitämme maksimiarvon, virhekaavio on "nykivä", konvergenssi vie suuremman määrän askelia

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita
и

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

4. Jos valitsemme gradientin laskeutumisaskeleen täysin väärin, siirrymme pois minimistä

Koneoppiminen ilman Pythonia, Anacondaa ja muita matelijoita

(Jos haluat toistaa prosessin kuvissa näkyvillä gradientin laskeutumisaskelarvoilla, valitse "viitetiedot" -ruutu).

Tiedosto on tästä linkistä, makrot on otettava käyttöön, viruksia ei ole.

Onko arvostetun yhteisön mukaan tällainen yksinkertaistaminen ja materiaalin esittämistapa hyväksyttävä? Kannattaako artikkeli kääntää englanniksi?

Lähde: will.com

Lisää kommentti