Найти в Дзене

Кому оптимизацию?

Захотелось мне поковыряться в Scipy-библиотеке 8 марта. Почему именно 8-го? А как ещё провести этот день, когда наши соотечественницы сотню лет назад боролись за права женщин? Недолго думая, я попросила рассказать о библиотеке своего репетитора (бесплатного и очень послушного!). Итак:
Думаете, что там только два модуля? Ха-ха-ха. Не угадали. В общем, когда до меня дошел весь ужас моей аферы, то я

Захотелось мне поковыряться в Scipy-библиотеке 8 марта. Почему именно 8-го? А как ещё провести этот день, когда наши соотечественницы сотню лет назад боролись за права женщин? Недолго думая, я попросила рассказать о библиотеке своего репетитора (бесплатного и очень послушного!). Итак:

Думаете, что там только два модуля? Ха-ха-ха. Не угадали. В общем, когда до меня дошел весь ужас моей аферы, то я поняла, что надо будет изрядно поскрипеть шестерёнками, чтобы что-то уяснить. Какой важный навык хорошего прогера? Правильно, разбивать большую задачу на маленькие. И я решила начать с оптимизации.

Ирония в том, что мы сталкиваемся с ней постоянно:

* Навигатор (Google Maps/Yandex.Карты)

Задача: найти самый короткий/быстрый маршрут из точки А в точку Б.

Это оптимизация пути!

* Настройка громкости на телефоне

Мы крутим ползунок, чтобы звук был не слишком тихим и не слишком громким — ищем "золотую середину".

Это оптимизация комфорта!

* Выбор товаров в магазине

Хочется купить максимум полезного, потратив минимум денег.

Это оптимизация бюджета

Оптимизация — это поиск лучшего варианта, а не «правильного ответа».

Всегда спрашивайте себя:

▪️ Что я хочу улучшить? → это целевая функция

▪️ Что я могу менять? → это переменные

▪️ Что нельзя нарушать? → это ограничения

И вот вам наглядный пример:

У нас есть замеры роста детей и их возрасты. Мы хотим провести прямую линию y = a·x + b, которая «лучше всего ложится» на эти точки — то есть сумма квадратов ошибок минимальна.

Наша цель — минимизировать сумму квадратов отклонений:

-2

Нейросеть любезно написала скрипт на питоне, я его скопировала, запустила и получила график:

-3

Что произошло?

SciPy перебрал миллионы комбинаций (a, b), пока не нашёл те, при которых «линия проходит ближе всего ко всем точкам».

Это основа машинного обучения: обучение = оптимизация параметров модели под данные.

-4

Можно расширить тему сказав, что мы построили регрессионную модель. Регрессионная модель — статистическая модель, которая описывает взаимосвязь между переменными в виде линии на графике. Говоря проще, если мы знаем рост очередного ребенка, то мы (или модель) можем предсказать его возраст (с небольшой неточностью). Или наоборот.

А что вам удавалось в своей жизни оптимизировать? Напишите в комментариях.

До новых встреч!