Регрессия: предсказываем число
Первая большая задача обучения с учителем — предсказать число.
Регрессия — задача обучения с учителем, в которой модель предсказывает непрерывное число.
Когда это регрессия
Если ответ, который вы хотите получить, — это число на шкале (а не одна из нескольких категорий), перед вами регрессия. Примеры:
- Цена квартиры по её характеристикам.
- Температура завтра по данным за прошлые дни.
- Сколько товара купят на следующей неделе.
- Время доставки заказа.
- Зарплата по опыту и навыкам.
Во всех случаях ответ — число, и между числами есть порядок: 9 миллионов больше 8, а разница «8 и 9» осмысленна. Это отличает регрессию от классификации, где ответ — ярлык («спам»/«не спам») без понятия «больше-меньше».
Интуиция: ищем зависимость
Суть регрессии — найти зависимость метки от признаков. Представьте точки на графике: по горизонтали площадь квартиры, по вертикали цена. Точки лежат не идеально, но видно тенденцию: больше площадь — выше цена. Модель пытается описать эту тенденцию математически, чтобы по новой площади предсказать цену.
Самая простая зависимость — прямая линия. Поэтому первый и базовый метод регрессии так и называется — линейная регрессия. Ей посвящён следующий урок.
Регрессия и классификация рядом
| Вопрос | Тип задачи | Ответ |
| Сколько будет стоить квартира? | Регрессия | Число (12.5 млн) |
| Это спам или нет? | Классификация | Категория |
| Какая завтра температура? | Регрессия | Число (+18°) |
| Кошка на фото или собака? | Классификация | Категория |
Иногда границы размываются: «вероятность, что клиент уйдёт» — это число от 0 до 1, но по сути задача о категориях. Тут важно понимать смысл, а не цепляться за форму.
Грубая регрессия руками
Чтобы почувствовать идею, оценим цену совсем наивно: предположим фиксированную цену за квадратный метр и умножим на площадь. Это ещё не настоящая модель, но уже регрессия — мы предсказываем число. Код запускается:
# Наивная регрессия: цена = площадь * цена_за_метр
price_per_m2 = 200_000 # руб за квадратный метр
flats = [40, 55, 75, 100]
for area in flats:
predicted = area * price_per_m2
print(f"{area} м2 -> {predicted/1_000_000:.1f} млн руб")
Вывод:
40 м2 -> 8.0 млн руб 55 м2 -> 11.0 млн руб 75 м2 -> 15.0 млн руб 100 м2 -> 20.0 млн руб
Здесь коэффициент 200 000 мы взяли с потолка. В настоящей регрессии модель сама подберёт такой коэффициент по данным — так, чтобы предсказания были как можно ближе к реальным ценам. Как именно она это делает, разберём в уроке про функцию потерь.
Итог
- Регрессия предсказывает непрерывное число, между значениями которого есть порядок.
- Примеры: цена, температура, спрос, время, зарплата.
- Отличие от классификации: там ответ — категория без понятия «больше-меньше».
- Базовый метод — линейная регрессия: описать зависимость прямой линией.