Machine learning na walang Python, Anaconda at iba pang reptilya

Hindi, siyempre, hindi ako seryoso. Dapat mayroong limitasyon sa lawak kung saan posible na gawing simple ang isang paksa. Ngunit para sa mga unang yugto, pag-unawa sa mga pangunahing konsepto at mabilis na "pagpasok" sa paksa, maaaring ito ay katanggap-tanggap. Tatalakayin natin kung paano tamang pangalanan ang materyal na ito (mga opsyon: "Pag-aaral ng makina para sa mga dummies", "Pagsusuri ng data mula sa mga diaper", "Mga algorithm para sa maliliit na bata") sa dulo.

Sa punto. Sumulat ng ilang application program sa MS Excel para sa visualization at visual na representasyon ng mga proseso na nagaganap sa iba't ibang paraan ng machine learning kapag nagsusuri ng data. Ang nakakakita ay paniniwala, pagkatapos ng lahat, gaya ng sinasabi ng mga tagapagdala ng kultura, na bumuo ng karamihan sa mga pamamaraang ito (nga pala, hindi lahat ng mga ito. Ang pinakamakapangyarihang "support vector machine", o SVM, support vector machine ay ang pag-imbento ng ang aming kababayan na si Vladimir Vapnik, Moscow Institute of Management. 1963, nga pala! Ngayon, gayunpaman, nagtuturo at nagtatrabaho siya sa USA).

Tatlong file para sa pagsusuri

1. K-ay nangangahulugang clustering

Ang mga problema sa ganitong uri ay tumutukoy sa "hindi pinangangasiwaang pag-aaral," kapag kailangan nating hatiin ang paunang data sa isang tiyak na bilang ng mga kategorya na alam nang maaga, ngunit wala tayong anumang bilang ng "mga tamang sagot"; dapat nating kunin ang mga ito mula sa data mismo . Ang pangunahing klasikal na problema ng paghahanap ng mga subspecies ng mga bulaklak ng iris (Ronald Fisher, 1936!), Na kung saan ay itinuturing na unang tanda ng larangan ng kaalaman na ito, ay may ganitong kalikasan.

Ang pamamaraan ay medyo simple. Mayroon kaming isang hanay ng mga bagay na kinakatawan bilang mga vectors (mga set ng N numero). Sa mga iris, ito ay mga hanay ng 4 na numero na nagpapakilala sa bulaklak: ang haba at lapad ng panlabas at panloob na lobe ng perianth, ayon sa pagkakabanggit (Mga iris ni Fischer - Wikipedia). Ang karaniwang sukatan ng Cartesian ay pinili bilang distansya, o sukatan ng kalapitan sa pagitan ng mga bagay.

Susunod, ang mga cluster center ay pinipili nang random (o hindi random, tingnan sa ibaba), at ang mga distansya mula sa bawat bagay patungo sa mga cluster center ay kinakalkula. Ang bawat bagay sa isang naibigay na hakbang sa pag-ulit ay minarkahan bilang kabilang sa pinakamalapit na sentro. Pagkatapos ang gitna ng bawat kumpol ay inilipat sa arithmetic mean ng mga coordinate ng mga miyembro nito (sa pamamagitan ng pagkakatulad sa pisika, tinatawag din itong "center of mass"), at ang pamamaraan ay paulit-ulit.

Ang proseso ay nagtatagpo nang napakabilis. Sa mga larawan sa dalawang dimensyon, ganito ang hitsura:

1. Paunang random na pamamahagi ng mga puntos sa eroplano at ang bilang ng mga kumpol

Machine learning na walang Python, Anaconda at iba pang reptilya

2. Pagtukoy sa mga cluster center at pagtatalaga ng mga punto sa kanilang mga cluster

Machine learning na walang Python, Anaconda at iba pang reptilya

3. Paglilipat ng mga coordinate ng mga sentro ng kumpol, muling pagkalkula ng kaakibat ng mga puntos hanggang sa maging matatag ang mga sentro. Ang trajectory ng cluster center na lumilipat sa huling posisyon nito ay makikita.

Machine learning na walang Python, Anaconda at iba pang reptilya

Sa anumang oras, maaari kang magtakda ng mga bagong cluster center (nang hindi bumubuo ng isang bagong pamamahagi ng mga puntos!) at makita na ang proseso ng paghahati ay hindi palaging hindi malabo. Sa matematika, nangangahulugan ito na para sa pag-andar na na-optimize (ang kabuuan ng mga squared na distansya mula sa mga punto hanggang sa mga sentro ng kanilang mga kumpol), hindi namin mahanap ang isang global, ngunit isang lokal na minimum. Ang problemang ito ay maaaring malampasan alinman sa pamamagitan ng isang hindi random na pagpili ng mga paunang cluster center, o sa pamamagitan ng pagbilang ng mga posibleng sentro (kung minsan ay kapaki-pakinabang na ilagay ang mga ito nang eksakto sa isa sa mga punto, at least may garantiya na hindi tayo mawawalan ng laman. mga kumpol). Sa anumang kaso, ang isang finite set ay laging may infimum.

Maaari mong laruin ang file na ito sa link na ito (huwag kalimutang paganahin ang macro support. Ang mga file ay na-scan para sa mga virus)

Paglalarawan ng pamamaraan sa Wikipedia - paraan ng k-means

2. Approximation sa pamamagitan ng polynomials at data breakdown. Muling pagsasanay

Kahanga-hangang siyentipiko at popularizer ng data science K.V. Maikling inilalarawan ni Vorontsov ang mga pamamaraan sa pag-aaral ng makina bilang "ang agham ng pagguhit ng mga kurba sa pamamagitan ng mga punto." Sa halimbawang ito, makakahanap tayo ng pattern sa data gamit ang least squares method.

Ang pamamaraan ng paghahati ng pinagmulan ng data sa "pagsasanay" at "kontrol" ay ipinapakita, pati na rin ang isang kababalaghan tulad ng muling pagsasanay, o "muling pagsasaayos" sa data. Sa tamang pagtatantya, magkakaroon kami ng isang tiyak na error sa data ng pagsasanay at isang bahagyang mas malaking error sa control data. Kung hindi tama, nagreresulta ito sa tumpak na pagsasaayos sa data ng pagsasanay at isang malaking error sa data ng pagsubok.

(Ito ay isang kilalang katotohanan na sa pamamagitan ng N puntos ay maaaring gumuhit ng isang kurba ng N-1th degree, at ang pamamaraang ito sa pangkalahatang kaso ay hindi nagbibigay ng nais na resulta. Lagrange interpolation polynomial sa Wikipedia)

1. Itakda ang paunang pamamahagi

Machine learning na walang Python, Anaconda at iba pang reptilya

2. Hinahati namin ang mga puntos sa "pagsasanay" at "kontrol" sa isang ratio na 70 hanggang 30.

Machine learning na walang Python, Anaconda at iba pang reptilya

3. Iginuhit namin ang approximating curve kasama ang mga training point, nakikita namin ang error na ibinibigay nito sa control data

Machine learning na walang Python, Anaconda at iba pang reptilya

4. Gumuhit kami ng eksaktong kurba sa mga punto ng pagsasanay, at nakikita namin ang isang napakalaking error sa data ng kontrol (at zero sa data ng pagsasanay, ngunit ano ang punto?).

Machine learning na walang Python, Anaconda at iba pang reptilya

Ang ipinapakita, siyempre, ay ang pinakasimpleng opsyon na may isang solong dibisyon sa "pagsasanay" at "kontrol" na mga subset; sa pangkalahatang kaso, ito ay ginagawa ng maraming beses para sa pinakamahusay na pagsasaayos ng mga coefficient.

Available ang file dito, na-scan ng antivirus. Paganahin ang mga macro para sa tamang operasyon

3. Gradient descent at dynamics ng error change

Magkakaroon ng 4-dimensional na case at linear regression. Ang mga linear regression coefficient ay tutukuyin nang hakbang-hakbang gamit ang gradient descent method, sa simula lahat ng coefficient ay zero. Ang isang hiwalay na graph ay nagpapakita ng dynamics ng pagbawas ng error habang ang mga coefficient ay inaayos nang higit at mas tumpak. Posibleng tingnan ang lahat ng apat na 2-dimensional na projection.

Kung itinakda mo ang gradient descent step na masyadong malaki, makikita mo na sa bawat oras na lalaktawan namin ang minimum at darating sa resulta sa mas malaking bilang ng mga hakbang, bagama't sa huli ay darating pa rin kami (maliban kung ipagpaliban din namin ang descent step. magkano - pagkatapos ang algorithm ay pupunta " sa mga spades"). At ang graph ng error depende sa hakbang ng pag-ulit ay hindi magiging makinis, ngunit "jerky".

1. Bumuo ng data, itakda ang gradient descent step

Machine learning na walang Python, Anaconda at iba pang reptilya

2. Sa tamang pagpili ng gradient descent step, maayos at mabilis nating naaabot ang minimum

Machine learning na walang Python, Anaconda at iba pang reptilya

3. Kung mali ang napiling gradient descent step, na-overshoot namin ang maximum, ang error graph ay "jerky", ang convergence ay tumatagal ng mas malaking bilang ng mga hakbang

Machine learning na walang Python, Anaconda at iba pang reptilya
ΠΈ

Machine learning na walang Python, Anaconda at iba pang reptilya

4. Kung ganap nating mali ang pagpili ng gradient descent step, lalayo tayo sa minimum

Machine learning na walang Python, Anaconda at iba pang reptilya

(Upang kopyahin ang proseso gamit ang mga halaga ng gradient descent step na ipinapakita sa mga larawan, lagyan ng tsek ang kahon ng β€œreference data”).

Ang file ay nasa link na ito, kailangan mong paganahin ang mga macro, walang mga virus.

Ayon sa iginagalang na komunidad, katanggap-tanggap ba ang gayong pagpapasimple at paraan ng paglalahad ng materyal? Ito ba ay nagkakahalaga ng pagsasalin ng artikulo sa Ingles?

Pinagmulan: www.habr.com

Magdagdag ng komento