Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

Ez, beno, noski, ez naiz serioa. Muga bat egon behar da gai bat sinplifikatzea zein neurritan posible den. Baina lehen faseetarako, oinarrizko kontzeptuak ulertu eta gaian azkar "sartzea", onargarria izan daiteke. Material horri behar bezala izendatzeko modua eztabaidatuko dugu (aukerak: “Makina-ikasketa manikinentzako”, “Pixoihalen datuen analisia”, “Txikienentzako algoritmoak”) amaieran.

Punturaino. MS Excel-en hainbat aplikazio-programa idatzi ditu datuak aztertzean makina-ikaskuntza-metodo ezberdinetan gertatzen diren prozesuak bistaratzeko eta irudikatzeko. Ikustea da, azken finean, kulturaren eramaileek dioten bezala, metodo horietako gehienak garatu zituena (bide batez, denak ez. “support vector machine”, edo SVM, euskarri-makina bektoriala asmatzea da. gure herrikide Vladimir Vapnik, Moskuko Kudeaketa Institutua.1963, bide batez!Orain, ordea, AEBetan irakasten eta lan egiten du).

Hiru fitxategi berrikusteko

1. K-ak multzokatzea esan nahi du

Mota honetako arazoek "gainbegiratu gabeko ikaskuntza"ri egiten diote erreferentzia, hasierako datuak aldez aurretik ezagutzen diren kategoria kopuru jakin batean banatu behar ditugunean, baina "erantzun zuzen" kopururik ez daukagunean; datuetatik bertatik atera behar ditugu. . Iris loreen azpiespezieak aurkitzeko oinarrizko arazo klasikoak (Ronald Fisher, 1936!), jakintza-arlo honen lehen seinaletzat hartzen dena, izaera hori besterik ez du.

Metodoa nahiko erraza da. Bektore gisa irudikaturiko objektu multzo bat dugu (N zenbaki multzoak). Irisetan, lorea ezaugarritzen duten 4 zenbakiko multzoak dira: periantoaren kanpoko eta barneko lobuluen luzera eta zabalera, hurrenez hurren (Fischerren irisak - Wikipedia). Ohiko metrika kartesiarra objektuen arteko distantzia edo hurbiltasunaren neurri gisa aukeratzen da.

Ondoren, kluster-zentroak ausaz hautatzen dira (edo ez ausaz, ikus behean), eta objektu bakoitzetik kluster-zentroetara dauden distantziak kalkulatzen dira. Iterazio-urrats jakin batean objektu bakoitza zentro hurbilenekoa dela markatzen da. Ondoren, kluster bakoitzaren zentroa bere kideen koordenatuen batez besteko aritmetikora transferitzen da (fisikaren analogiaz, "masa-zentroa" ere deitzen da) eta prozedura errepikatzen da.

Prozesua nahiko azkar bat egiten du. Bi dimentsiotako irudietan honela ikusten da:

1. Planoko puntuen hasierako ausazko banaketa eta kluster kopurua

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

2. Kluster-zentroak zehaztea eta haien klusterrei puntuak esleitzea

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

3. Kluster-zentroen koordenatuak transferitzea, puntuen afiliazioa berriro kalkulatuz, zentroak egonkortu arte. Kluster-zentroaren azken posiziora mugitzen den ibilbidea ikusten da.

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

Edozein unetan, kluster zentro berriak ezar ditzakezu (puntu banaketa berririk sortu gabe!) eta partizio prozesua ez dela beti anbiguoa dela ikusi. Matematikoki, horrek esan nahi du optimizatzen ari den funtziorako (puntuetatik haien klusterren zentroetara distantzia karratuen batura) ez dela globala, tokiko minimo bat aurkitzen dugula. Arazo hau hasierako kluster-zentroen aukeraketa ez-ausazko baten bidez gaindi daiteke, edo zentro posibleak zenbatuz (batzuetan abantailatsua da punturen batean zehatz-mehatz jartzea, orduan behintzat hutsik geratuko ez garen bermea dago). klusterrak). Nolanahi ere, multzo finitu batek beti du infimo bat.

Esteka honetan fitxategi honekin jolastu dezakezu (Ez ahaztu makro-laguntza gaitzea. Fitxategiak birusen bila aztertu dira)

Metodoaren deskribapena Wikipedian - k-means metodoa

2. Polinomioen bidezko hurbilketa eta datuen banaketa. Birziklatzea

Zientzialari eta datu zientzien dibulgatzaile nabarmena K.V. Vorontsov-ek laburki deskribatzen ditu ikaskuntza automatikoko metodoak "puntuen bidez kurbak marrazteko zientzia" gisa. Adibide honetan, datuetan eredu bat aurkituko dugu karratu txikienen metodoa erabiliz.

Iturburuko datuak "prestakuntza" eta "kontrola" banatzeko teknika erakusten da, baita birziklatzea edo datuetara "berriro egokitzea" bezalako fenomenoa ere. Hurbilketa zuzenarekin, errore jakin bat izango dugu entrenamendu-datuetan eta errore apur bat handiagoa kontrol-datuetan. Okerra bada, entrenamendu-datuen doikuntza zehatza eta proba-datuen errore handi bat eragiten du.

(Jakina da N puntuen bidez N-1. graduko kurba bakarra marraz daitekeela, eta metodo honek kasu orokorrean ez du nahi den emaitza ematen. Lagrange interpolazio polinomioa Wikipedian)

1. Ezarri hasierako banaketa

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

2. Puntuak "entrenamendua" eta "kontrola"tan banatzen ditugu 70 eta 30 arteko ratioan.

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

3. Gutxi gorabeherako kurba marrazten dugu entrenamendu puntuetan zehar, ematen duen errorea ikusten dugu kontrol datuetan

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

4. Kurba zehatz bat marrazten dugu entrenamendu-puntuetan zehar, eta kontrol-datuetan errore izugarria ikusten dugu (eta entrenamendu-datuetan zero, baina zer da?).

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

Erakutsita, noski, aukerarik errazena da "entrenamendu" eta "kontrol" azpimultzoetan zatiketa bakarrarekin; kasu orokorrean, koefizienteen doikuntza onena lortzeko askotan egiten da.

Fitxategia hemen dago eskuragarri, antibirusek eskaneatutakoa. Gaitu makroak funtzionamendu egokia izateko

3. Gradienteen jaitsiera eta akatsen aldaketa dinamika

4 dimentsioko kasua eta erregresio lineala egongo dira. Erregresio linealaren koefizienteak urratsez urrats zehaztuko dira gradienteen jaitsieraren metodoa erabiliz, hasieran koefiziente guztiak zero dira. Aparteko grafiko batek erroreen murrizketaren dinamika erakusten du, koefizienteak gero eta zehatzago doitzen diren heinean. Bi dimentsioko lau proiekzio guztiak ikusteko aukera dago.

Desnibelaren jaitsiera urratsa handiegia ezartzen baduzu, ikusiko duzu aldi bakoitzean minimoa saltatuko dugula eta emaitzara pauso kopuru handiagoan iritsiko garela, nahiz eta azkenean iritsiko garen (jaitsiera urratsa ere atzeratzen ez badugu behintzat askoz - orduan algoritmoa "pika") joango da. Eta iterazio-urratsaren araberako errorearen grafikoa ez da leuna izango, "jerky" baizik.

1. Sortu datuak, ezarri gradientearen jaitsiera urratsa

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

2. Gradientearen jaitsiera urratsa zuzen hautatzean, leun eta azkar iristen gara minimora

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

3. Gradientearen jaitsiera urratsa gaizki hautatzen bada, gehienezkoa gainditzen dugu, errore-grafikoa "aldakorra" da, konbergentzia urrats kopuru handiagoa hartzen du.

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa
и

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

4. Gradientearen jaitsiera urratsa guztiz gaizki hautatzen badugu, minimotik aldentzen gara

Python, Anaconda eta beste narrastirik gabeko ikaskuntza automatikoa

(Argazkietan ageri diren gradiente-jaitsieraren balioak erabiliz prozesua erreproduzitzeko, egiaztatu "erreferentzia-datuak" laukia).

Fitxategia esteka honetan dago, makroak gaitu behar dituzu, ez dago birusik.

Errespetatu den komunitatearen arabera, materiala aurkezteko modu eta sinplifikazio hori onargarria da? Merezi al du artikulua ingelesera itzultzeak?

Iturria: www.habr.com

Gehitu iruzkin berria