Ні, ну я, звичайно, не всерйоз. Повинна бути межа, наскільки можна спрощувати предмет. Але для перших етапів, розуміння базових концепцій та швидкого «в'їзду» в тему, можливо, і допустимо. А як правильно назвати цей матеріал (варіанти: "Машинне навчання для чайників", "Аналіз даних з пелюшок", "Алгоритми для найменших"), обговоримо наприкінці.
До справи. Написав кілька прикладних програм на MS Excel для візуалізації та наочного уявлення процесів, що відбуваються у різних методах машинного навчання при аналізі даних. Seeing is believing, зрештою, як кажуть носії культури, яка і розробила більшість цих методів (до речі, далеко не все. Найпотужніший «метод опорних векторів», або SVM, support vector machine – винахід нашого співвітчизника Володимира Вапника, Московський Інститут управління). 1963 рік, між іншим, зараз він, щоправда, викладає і працює в США).
1. Кластеризація методом k-середніх
Завдання цього виду відносяться до «навчання без вчителя», коли нам потрібно розбити вихідні дані на деяке заздалегідь відоме число категорій, але при цьому у нас немає жодної кількості «правильних відповідей», які ми маємо отримати з самих даних. Фундаментальне класичне завдання знаходження підвидів квіток ірису (Рональд Фішер, 1936 рік!), яке вважається першою ластівкою цієї галузі знання – саме такої природи.
Метод досить простий. Ми маємо набір об'єктів, представлених у вигляді векторів (наборів N чисел). У ірисів це – набори 4 чисел, що характеризують квітку: довжина та ширина зовнішньої та внутрішньої частки оцвітини, відповідно (
Далі, довільним чином (або не довільним, дивіться далі) вибираються центри кластерів і підраховуються відстані від кожного об'єкта до центрів кластерів. Кожен об'єкт на цьому етапі ітерації позначається як той, що належить до найближчого центру. Потім центр кожного кластера переноситься в середнє арифметичне координат своїх членів (за аналогією з фізикою його називають ще центром мас), і процедура повторюється.
Процес досить швидко сходиться. На картинках у двомірності це виглядає так:
1. Початковий випадковий розподіл точок на площині та число кластерів
2. Завдання центрів кластерів та віднесення точок до своїх кластерів
3. Перенесення координат центрів кластерів, перерахунок належності точок, доки центри не стабілізуються. Видно траєкторію руху центру кластера в кінцеве положення.
Будь-якої миті можна задати нові центри кластерів (не генеруючи новий розподіл точок!) і побачити, що процес розбиття не завжди є однозначним. Математично це означає, що в функції, що оптимізується (сумі квадратів відстаней від точок до центрів своїх кластерів) ми знаходимо не глобальний, а локальний мінімум. Перемогти цю проблему можна або невипадковим вибором початкових центрів кластерів, або перебором можливих центрів (іноді їх вигідно помістити точно в якусь точку, тоді хоча б є гарантія, що ми не отримаємо порожніх кластерів). У будь-якому випадку, у кінцевої множини завжди є точна нижня грань.
Опис методу у Вікіпедії
2. Апроксимація багаточленами та розбивка даних. Перенавчання
Чудовий вчений та популяризатор науки про дані К.В. Воронцов коротко говорить про методи машинного навчання як про «науку проведення кривих через точки». У цьому прикладі знаходимо закономірність у даних шляхом найменших квадратів.
Показано техніку розбиття вихідних даних на «навчальні» та «контрольні», а також такий феномен, як перенавчання, або «перепідстроювання» під дані. При правильній апроксимації ми матимемо якусь помилку на навчальних даних і трохи більшу – на контрольних. При неправильній – точне підстроювання під навчальні дані та величезну помилку на контрольних.
(Відомий факт, що через N точок можна провести єдину криву N-1 й ступеня, і цей спосіб у загальному випадку не дає потрібного результату.
1. Задаємо початковий розподіл
2. Ділимо точки на «навчальні» та «контрольні» у співвідношенні 70 на 30.
3. Проводимо апроксимуючу криву по навчальних точках, бачимо помилку, яку вона дає на контрольних даних
4. Проводимо точну криву через навчальні точки, і бачимо жахливу помилку на контрольних даних (і нульову на навчальних, але що толку?).
Показаний, звичайно, найпростіший варіант з єдиним розбиттям на «навчальні» та «контрольні» підмножини, у загальному випадку це робиться багаторазово для найкращого підстроювання коефіцієнтів.
3. Градієнтний спуск та динаміка зміни помилки
Тут буде 4-вимірний випадок та лінійна регресія. Коефіцієнти лінійної регресії будуть визначатися кроками шляхом градієнтного спуску, спочатку всі коефіцієнти – нулі. На окремому графіку видно динаміку зменшення помилки в міру дедалі більш точного підстроювання коефіцієнтів. Є можливість подивитися всі чотири двовимірні проекції.
Якщо задати занадто великий крок градієнтного спуску, то видно, що кожного разу ми будемо проскакувати мінімум і до результату прийдемо за більшу кількість кроків, хоча, зрештою, все одно прийдемо (якщо тільки не надто задеремо крок спуску - тоді алгоритм піде. у рознесення»). І графік залежності помилки від кроку ітерації буде не плавним, а «смиканим».
1. Генеруємо дані, задаємо крок градієнтного спуску
2. При правильному підборі кроку градієнтного спуску плавно і досить швидко приходимо до мінімуму
3. При неправильному підборі кроку градієнтного спуску проскакуємо максимум, графік помилки – «дерганний», збіжність займає більше кроків
и
4. При зовсім неправильному підборі кроку градієнтного спуску віддаляємося від мінімуму
(Щоб відтворити процес при показаних на картинках значення кроку градієнтного спуску, поставте галочку «еталонні дані»).
Як вважає шановне співтовариство, чи допустиме таке спрощення та метод подачі матеріалу? Чи варто перекласти статтю англійською?
Джерело: habr.com