Захотелось мне поковыряться в Scipy-библиотеке 8 марта. Почему именно 8-го? А как ещё провести этот день, когда наши соотечественницы сотню лет назад боролись за права женщин? Недолго думая, я попросила рассказать о библиотеке своего репетитора (бесплатного и очень послушного!). Итак:
Думаете, что там только два модуля? Ха-ха-ха. Не угадали. В общем, когда до меня дошел весь ужас моей аферы, то я поняла, что надо будет изрядно поскрипеть шестерёнками, чтобы что-то уяснить. Какой важный навык хорошего прогера? Правильно, разбивать большую задачу на маленькие. И я решила начать с оптимизации.
Ирония в том, что мы сталкиваемся с ней постоянно:
* Навигатор (Google Maps/Yandex.Карты)
Задача: найти самый короткий/быстрый маршрут из точки А в точку Б.
Это оптимизация пути!
* Настройка громкости на телефоне
Мы крутим ползунок, чтобы звук был не слишком тихим и не слишком громким — ищем "золотую середину".
Это оптимизация комфорта!
* Выбор товаров в магазине
Хочется купить максимум полезного, потратив минимум денег.
Это оптимизация бюджета
Оптимизация — это поиск лучшего варианта, а не «правильного ответа».
Всегда спрашивайте себя:
▪️ Что я хочу улучшить? → это целевая функция
▪️ Что я могу менять? → это переменные
▪️ Что нельзя нарушать? → это ограничения
И вот вам наглядный пример:
У нас есть замеры роста детей и их возрасты. Мы хотим провести прямую линию y = a·x + b, которая «лучше всего ложится» на эти точки — то есть сумма квадратов ошибок минимальна.
Наша цель — минимизировать сумму квадратов отклонений:
Нейросеть любезно написала скрипт на питоне, я его скопировала, запустила и получила график:
Что произошло?
SciPy перебрал миллионы комбинаций (a, b), пока не нашёл те, при которых «линия проходит ближе всего ко всем точкам».
Это основа машинного обучения: обучение = оптимизация параметров модели под данные.
Можно расширить тему сказав, что мы построили регрессионную модель. Регрессионная модель — статистическая модель, которая описывает взаимосвязь между переменными в виде линии на графике. Говоря проще, если мы знаем рост очередного ребенка, то мы (или модель) можем предсказать его возраст (с небольшой неточностью). Или наоборот.
А что вам удавалось в своей жизни оптимизировать? Напишите в комментариях.
До новых встреч!