Машыннае навучанне без Python, Anaconda і іншых паўзуноў

Не, ну я, вядома, не ўсур'ёз. Павінна ж быць мяжа, да якой ступені можна спрашчаць прадмет. Але для першых этапаў, разумення базавых канцэпцый і хуткага "заязджання" ў тэму, можа быць, і дапушчальна. А як правільна назваць дадзены матэрыял (варыянты: "Машыннае навучанне для чайнікаў", "Аналіз дадзеных з пялёнак", "Алгарытмы для самых маленькіх"), абмяркуем у канцы.

Да справы. Напісаў некалькі прыкладных праграм на MS Excel для візуалізацыі і навочнага прадстаўлення працэсаў, якія адбываюцца ў розных метадах машыннага навучання пры аналізе даных. Seeing is believing, у выніку, як кажуць носьбіты культуры, якая і распрацавала большасць гэтых метадаў (дарэчы, далёка не ўсё. Наймагутны «метад апорных вектараў», або SVM, support vector machine – вынаходства нашага суайчынніка Уладзіміра Вапніка, Маскоўскі Інстытут кіравання. 1963 год, між іншым!Цяпер ён, праўда, выкладае і працуе ў ЗША).

Тры файлы на агляд

1. Кластарызацыя метадам k-сярэдніх

Задачы гэтага віду адносяцца да «навучання без настаўніка», калі нам трэба разбіць зыходныя дадзеныя на некаторы загадзя вядомы лік катэгорый, але пры гэтым у нас няма ніякай колькасці «правільных адказаў», іх мы павінны атрымаць з саміх дадзеных. Фундаментальная класічная задача знаходжання падвідаў кветак касача (Рональд Фішэр, 1936!), Якая лічыцца першай ластаўкай гэтай галіне веды - як раз такой прыроды.

Метад дастаткова просты. У нас ёсць набор аб'ектаў, прадстаўленых у выглядзе вектараў (набораў N лікаў). У касач гэта - наборы 4 лікаў, якія характарызуюць кветка: даўжыня і шырыня вонкавай і ўнутранай долі калякветніка, адпаведна (Ірысы Фішэра - Вікіпедыя.). У якасці адлегласці, ці меры блізкасці паміж аб'ектамі, выбіраецца звычайная дэкартава метрыка.

Далей, адвольнай выявай (ці не адвольнай, гледзіце далей) выбіраюцца цэнтры кластараў, і падлічваюцца адлегласці ад кожнага аб'екта да цэнтраў кластараў. Кожны аб'ект на дадзеным кроку ітэрацыі пазначаецца як які належыць да найбліжэйшага цэнтра. Затым цэнтр кожнага кластара пераносіцца ў сярэдняе арыфметычнае каардынат сваіх чальцоў (па аналогіі з фізікай яго завуць яшчэ «цэнтрам мас»), і працэдура паўтараецца.

Працэс дастаткова хутка сыходзіцца. На малюначках у двухмернасці гэта выглядае так:

1. Першапачатковае выпадковае размеркаванне кропак на плоскасці і колькасць кластараў

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

2. Заданне цэнтраў кластараў і аднясенне кропак да сваіх кластараў

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

3. Перанясенне каардынат цэнтраў кластараў, пераразлік прыналежнасці кропак, пакуль цэнтры не стабілізуюцца. Бачная траекторыя руху цэнтра кластара ў канцавое становішча.

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

У любы момант можна задаць новыя цэнтры кластараў (не генеруючы новае размеркаванне кропак!) і ўбачыць, што працэс разбіцця не заўсёды з'яўляецца адназначным. Матэматычна гэта азначае, што ў якая аптымізуецца функцыі (суме квадратаў адлегласцяў ад кропак да цэнтраў сваіх кластараў) мы знаходзім не глабальны, а лакальны мінімум. Перамагчы гэтую праблему можна альбо невыпадковым выбарам пачатковых цэнтраў кластараў, альбо пераборам магчымых цэнтраў (часам іх выгадна змясціць сапраўды ў якую-небудзь з кропак, тады хаця б ёсць гарантыя, што мы не атрымаем пустых кластараў). У любым выпадку, у канчатковага мноства заўсёды ёсць дакладная ніжняя грань.

Пагуляць з гэтым файлам можна па гэтай спасылцы (не забудзьцеся ўключыць падтрымку макрасаў. На вірусы файлы правераны)

Апісанне метаду ў Вікіпедыі Метад k-сярэдніх

2. Апраксімацыя мнагачленамі і разбіўка дадзеных. Перанавучанне

Выдатны вучоны і папулярызатар навукі аб дадзеных К.В. Варанцоў коратка кажа аб метадах машыннага навучання як аб «навуцы аб правядзенні крывых праз кропкі». У гэтым прыкладзе будзем знаходзіць заканамернасць у дадзеных метадам найменшых квадратаў.

Паказана тэхніка разбіцця зыходных дадзеных на "навучальныя" і "кантрольныя", а таксама такі феномен, як перанавучанне, або "перападладка" пад дадзеныя. Пры правільнай апраксімацыі мы будзем мець нейкую памылку на навучальных дадзеных і некалькі большую - на кантрольных. Пры няправільнай - дакладную падладку пад навучальныя дадзеныя і вялікую памылку на кантрольных.

(Вядомы факт, што праз N кропак можна правесці адзіную крывую N-1 й ступені, і гэты спосаб у агульным выпадку не дае патрэбнага выніку. Інтэрпаляцыйны мнагачлен Лагранжа ў Вікіпедыі)

1. Задаем першапачатковае размеркаванне

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

2. Дзелім кропкі на «навучальныя» і «кантрольныя» ў суадносінах 70 на 30.

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

3. Праводзім апраксімуючую крывую па навучальных кропках, бачым памылку, якую яна дае на кантрольных дадзеных

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

4. Праводзім дакладную крывую праз навучальныя кропкі, і бачым жахлівую памылку на кантрольных дадзеных (і нулявую на навучалых кропкі, але што толку?).

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

Паказаны, вядома, найпросты варыянт з адзіным разбіццём на «навучальныя» і «кантрольныя» падмноствы, у агульным выпадку гэта робіцца шматкроць для найлепшай падладкі каэфіцыентаў.

Файл даступны тут, антывірусам правераны. Уключыце макрасы для карэктнай працы

3. Градыентны спуск і дынаміка змены памылкі

Тут будзе 4-мерны выпадак і лінейная рэгрэсія. Каэфіцыенты лінейнай рэгрэсіі будуць вызначацца па кроках метадам градыентнага спуску, першапачаткова ўсе каэфіцыенты - нулі. На асобным графіку бачная дынаміка памяншэння памылкі па меры ўсё больш дакладнай падладкі каэфіцыентаў. Ёсць магчымасць паглядзець усе чатыры 2-мерныя праекцыі.

Калі задаць занадта вялікі крок градыентнага спуску, то відаць, што кожны раз мы будзем праскокваць мінімум і да выніку прыйдзем за большую колькасць крокаў, хоць, у рэшце рэшт, усё роўна прыйдзем (калі толькі не занадта моцна задерем крок спуску - тады алгарытм пойдзе у разнос»). І графік залежнасці памылкі ад кроку ітэрацыі будзе не плыўным, а "дерганным".

1. Генеруем дадзеныя, задаем крок градыентнага спуску

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

2. Пры правільным падборы кроку градыентнага спуску плаўна і досыць хутка прыходзім да мінімуму

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

3. Пры няправільным падборы кроку градыентнага спуску праскокваем максімум, графік памылкі - «дерганный», збежнасць займае большую колькасць крокаў

Машыннае навучанне без Python, Anaconda і іншых паўзуноў
и

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

4. Пры зусім няправільным падборы кроку градыентнага спуску выдаляемся ад мінімуму

Машыннае навучанне без Python, Anaconda і іншых паўзуноў

(Каб прайграць працэс пры паказаных на малюначках значэннях кроку градыентнага спуску, пастаўце галачку "эталонныя дадзеныя").

Файл - па гэтай спасылцы, трэба ўключыць макрасы, вірусаў няма.

Як лічыць паважаная супольнасць, ці дапушчальна такое спрашчэнне і метад падачы матэрыялу? Ці варта перавесці артыкул на ангельскую?

Крыніца: habr.com

Дадаць каментар