Python, Anaconda және басқа бауырымен жорғалаушыларсыз машиналық оқыту

Жоқ, әрине, мен байсалды емеспін. Пәнді жеңілдету мүмкіндігінің шегі болуы керек. Бірақ алғашқы кезеңдер үшін негізгі ұғымдарды түсіну және тақырыпқа тез «енгізу» қолайлы болуы мүмкін. Біз бұл материалды қалай дұрыс атауға болатынын талқылаймыз (параметрлер: «Манекендерге арналған машинада оқыту», «Жаялықтардан деректерді талдау», «Кішкентайларға арналған алгоритмдер»).

Нүктеге. Деректерді талдау кезінде машиналық оқытудың әртүрлі әдістерінде орын алатын процестерді визуализациялау және визуалды көрсету үшін MS Excel-де бірнеше қолданбалы бағдарламаларды жазды. Көру - бұл мәдениет иелері айтқандай, осы әдістердің көпшілігін әзірлеген (айтпақшы, олардың барлығы емес. Ең қуатты «тірек векторлық машина» немесе SVM, тірек векторлық машинасы өнертабыс болып табылады. жерлесіміз Владимир Вапник, Мәскеу басқару институты. 1963, айтпақшы, қазір ол АҚШ-та сабақ береді және жұмыс істейді).

Қарау үшін үш файл

1. К- кластерленуді білдіреді

Бұл түрдегі мәселелер бастапқы деректерді алдын ала белгілі санаттардың белгілі бір санына бөлу қажет болған кезде, бірақ бізде «дұрыс жауаптардың» саны болмаған кезде, «бақыланбайтын оқытуға» жатады; біз оларды деректердің өзінен алуымыз керек. . Бұл білім саласының алғашқы белгісі болып саналатын ирис гүлдерінің кіші түрлерін табудың іргелі классикалық мәселесі (Роналд Фишер, 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 және басқа бауырымен жорғалаушыларсыз машиналық оқыту

(Суреттерде көрсетілген градиенттің төмендеу қадамының мәндерін пайдаланып процесті ойнату үшін «анықтамалық деректер» ұяшығына белгі қойыңыз).

Файл осы сілтемеде, макростарды қосу керек, вирустар жоқ.

Құрметті қауымның пікірінше, материалды осылайша жеңілдету және беру әдісі қолайлы ма? Мақаланы ағылшын тіліне аудару керек пе?

Ақпарат көзі: www.habr.com

пікір қалдыру