← Маршрут ML-инженерии

Урок · 2 мин чтения · упражнения и самопроверка

Математика для первой модели

После урока: объяснить векторы и матрицы и выполнить упражнение «Проверить размерности линейной модели и вычислить MSE», обосновав выбранный подход..

Перед началом

Примеры выполняются локально: скачайте лабораторию и установите зависимости по README. Онлайн-редактор алгоритмических задач не содержит ML-библиотеки.

Вектор, веса и предсказание

Объект с d признаками представим вектором x. Линейная модель вычисляет сумму произведений признаков на веса и добавляет смещение: prediction = x₁w₁ + ... + x_dw_d + b. Для n объектов матрица X имеет форму (n, d), вектор w — (d,), а X @ w даёт n предсказаний. Оператор * для массивов NumPy означает поэлементное умножение, @ — матричное произведение.

Масштаб признака влияет на численное значение веса. Поэтому по величине коэффициента без учёта единиц нельзя автоматически судить о важности. Стандартизация вычитает среднее и делит на стандартное отклонение, вычисленные на train. Для постоянного признака нужна определённая обработка нулевого разброса, которую обеспечивает StandardScaler.

Ошибка и оптимизация

В регрессии MSE — среднее квадратов разностей предсказания и ответа. Квадрат усиливает влияние больших ошибок. Для одного веса производная MSE показывает, как меняется потеря при его небольшом увеличении. Шаг градиентного спуска: новое значение = старое − learning_rate × градиент. Слишком большой шаг может увеличивать потерю, слишком маленький замедляет обучение.

Для X из n строк градиент по w равен (2/n) Xᵀ(Xw + b − y). Размерность результата d; это полезная проверка формулы. Производную можно сверить конечными разностями на маленьком примере, но такая численная проверка не заменяет устойчивый оптимизатор для большого обучения.

Вероятность и неопределённость

В классификации модель может выдавать распределение вероятностей по классам. Сумма равна единице, но уверенность не гарантирует правильность и не означает автоматически хорошую калибровку. Для оценки нужна выборка ответов. Среднее значение метрики на маленьком test имеет неопределённость: несколько наблюдений способны заметно его изменить.

Следующий пример использует маленькие числа только для проверки матричной арифметики; обучающая лаборатория использует реальные данные Wine.

Пошаговый пример

python
import numpy as np
X = np.array([[1., 2.], [3., 4.]])
w = np.array([2., -1.])
y = np.array([1., 2.])
prediction = X @ w
print(prediction.tolist())
print(float(np.mean((prediction-y)**2)))

Ожидаемый вывод

text
[0.0, 2.0]
0.5

Первая строка даёт 1×2 + 2×(-1) = 0; вторая — 2. Ошибки -1 и 0, средний квадрат 0.5.

Сделайте самостоятельно

Для X формы (5, 3) и w формы (3,) укажите форму X @ w и градиента по w. Объясните, почему X * w не является тем же результатом.

Ответ и критерии проверки

Предсказаний пять: форма (5,). Градиент по трём весам имеет форму (3,). Поэлементное умножение с broadcasting создаёт (5, 3); в нём ещё не просуммированы вклады признаков.

Проверьте понимание

1. Какой оператор NumPy выполняет матричное умножение?
2. Вероятность 0.99 доказывает правильность класса?