Машинное обучение

Модели, извлекающие закономерности из данных: постановка задачи, классические алгоритмы, нейронные сети и конвейер scikit-learn

Вячеслав Федоров

Лекция 16

Разработка и применение ПО

в физических исследованиях

fit

Содержание

От постановки задачи до конвейера, которому можно доверять

01

Постановка задачи

02

Соседи и регрессия

03

Классификация

04

Ансамбли

05

Без учителя

06

Нейронные сети

07

Конвейер sklearn

Цель лекции

Понимать, что делает модель, и измерять её качество так, чтобы измерению можно было доверять

Для физика обучение модели представляет собой минимизацию функционала, а регуляризация — способ сделать некорректную задачу корректной. Новое состоит в другом: модель оценивается не по невязке на подогнанных точках, а по качеству на данных, которых она не видела.

Постановка задачи

Термины, типы задач, признаки и модель как параметрическая функция

01

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Термины

и данные

Искусственный интеллект

решения на основе восприятия мира

Машинное обучение

решения на основе накопленных данных

Глубокое обучение

глубокие нейронные сети

01

Датасет, выборка

набор объектов, поданный алгоритму

02

Признак X

измеряемый параметр объекта

03

Целевая переменная y

метка или значение, которое предсказывается

04

Закон природы

скрытое отображение X → y, которое восстанавливает модель

Для физика

Модель приближает неизвестную функцию, известную лишь в точках измерений.

Типы

задач

ЗадачаМетка yПример
Классификацияконечное множествоотбор событий «сигнал / фон»
Регрессиявещественное числоэнергия по отклику калориметра
Ранжированиепорядок объектоввыдача поиска
Кластеризациянетгруппы спектров по форме линий
Снижение размерностинетмногомерная выборка на плоскости
Генерацияобразцы выборкиновые объекты, похожие на обучающие

Пояснение

С учителем: разметка у каждого объекта, цель — закон X → y.

Пояснение

Без учителя: разметки нет, ищется структура самих данных.

Модель

и обучение

Model: X → y
ŷ = f(x; w)

01

Параметры

веса w, подобранные по данным

02

Гиперпараметры

заданы до обучения: K, λ, глубина, шаг

03

Обучение

минимизация функции потерь на выборке

04

Проверка

качество — только на отложенных данных

01

Бинарные

да / нет

02

Номинальные

тип детектора, режим

03

Порядковые

плохо, хорошо, отлично

04

Числовые

ток, энергия, расстояние

Для физика

Числовой признак, разбитый на интервалы, становится порядковым.

Соседи и регрессия

Метод ближайших соседей, метод наименьших квадратов, градиентный спуск и регуляризация

02

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Метод

ближайших соседей

Пояснение

Гипотеза компактности: объекты одного класса лежат близко в пространстве признаков, разных классов — далеко.

01

Расстояния

от нового объекта до всех объектов выборки

02

K ближайших

K является гиперпараметром

03

Голосование

класс большинства, вес соседа ~ 1/d

СвойствоkNN
Обучениезапоминание выборки
ПредсказаниеO(N) расстояний на объект
Параметрынет
ГиперпараметрыK, метрика, веса
Объяснениепо конкретным соседям

Важно

Малое K — шум и выбросы, большое K — сглаженная граница.

Расстояние

и масштаб

манхэттенское: d = Σ |x − x'|
евклидово:     d = √Σ (x − x')²
косинусное:    d = 1 − x·x' / (|x|·|x'|)

Для физика

Косинусное расстояние сравнивает направления векторов признаков, а не их длины.

01

Масштаб

признак в тысячах подавляет признаки в долях единицы

02

Нормировка

стандартизация μ = 0, σ = 1 или приведение к [0, 1]

03

Скорость

kD-дерево, Ball tree, HNSW, эталоны FRiS-Stolp

Демонстрация:

kNN и масштаб

01

Wine: 178 образцов, 13 признаков

02

Масштабы признаков: СКО от 0,12 до 315

03

kNN без масштабирования и со StandardScaler

04

Вклад proline в квадрат расстояния

Что наблюдается

Без масштабирования 0,78–0,81, после StandardScaler 0,97–1,00: proline даёт 99,97 % квадрата расстояния.

root@lab — запись со стенда

Линейная регрессия

и МНК

ŷ = Xw   (в X добавлен столбец единиц)
Q(w) = ‖Xw − y‖² → min
∇Q = 2X⊤(Xw − y) = 0
X⊤X·w = X⊤y   (нормальное уравнение)
 
w = np.linalg.solve(X.T @ X, X.T @ y)
w = np.linalg.lstsq(X, y)[0]   # SVD

01

Необратимость

коллинеарные признаки или признаков больше, чем объектов

02

Сложность

обращение матрицы — O(k³)

03

Практика

QR или SVD вместо явного обращения

Для физика

Подгонка прямой из лабораторного практикума, записанная для k признаков.

Градиентный

спуск

w ← w − α·∇Q(w)
∇Q = (2/N)·X⊤(Xw − y)
 
H = (2/N)·X⊤X:  α < 2/λmax(H)

01

Полный

градиент по всей выборке

02

Стохастический

по одному случайному объекту

03

Мини-батч

по небольшой случайной подвыборке

01

Скорость α

велика — расходится, мала — медленно

02

Обусловленность

отношение λmax/λmin задаёт число шагов

03

Momentum

v ← ρv + α∇Q, w ← w − v

Пояснение

MSE выпукла: локальный минимум совпадает с глобальным.

Коллинеарность

и регуляризация

x2 = 2·x1:
y = 6·x1 + 8·x2 + 5
  = 0·x1 + 11·x2 + 5
  = 22·x1 + 0·x2 + 5

Важно

Веса линейно зависимых признаков неустойчивы и не интерпретируются.

МетодШтрафДействие
Ridge, L2λ·‖w‖²уменьшает и выравнивает веса
Lasso, L1λ·Σ|w|обнуляет лишние веса
λ = 0—обычная регрессия
λ → ∞—все веса стремятся к нулю

Пояснение

λ является гиперпараметром и подбирается на отложенной выборке.

Демонстрация:

МНК и регуляризация

01

Калибровка: энергия по амплитуде

02

Нормальное уравнение, lstsq и LinearRegression

03

Градиентный спуск при α от 0,1 до 1,1

04

Почти копия признака: Ridge и Lasso

Что наблюдается

Три решения совпадают. Спуск сходится при α < 1 и расходится при 1,1. При x2 ≈ 2·x1 веса 458 и −218 у Ridge становятся 4,41 и 8,79, у Lasso — 0 и 10,97.

root@lab — запись со стенда

Классификация

Логистическая регрессия, метрики качества, порог и деревья решений

03

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Логистическая

регрессия

f(x) = w⊤x
log(p / (1 − p)) = f(x)
p = σ(f) = 1 / (1 + e^(−f))
 
M = y·f(x),  y ∈ {−1, +1}
L(w) = Σ log(1 + e^(−M)) → min

01

Шанс

логарифм шанса равен линейной функции

02

Отступ M

M > 0 — верно; чем больше, тем увереннее

03

Log loss

максимум правдоподобия независимых объектов

04

Обучение

градиентный спуск, L1 или L2

Метрики

классификации

предсказан 1предсказан 0
реально 1TPFN
реально 0FPTN

precision = TP / (TP + FP)
recall    = TP / (TP + FN)
F1 = 2·P·R / (P + R)

Важно

100 000 здоровых и 10 больных: ответ «здоров» даёт accuracy 99,99 % и не находит ни одного больного.

Для физика

При отборе событий recall называют эффективностью отбора, precision — чистотой выборки.

Пояснение

Положительный класс указывается всегда: его смена меняет смысл чисел.

Порог

и ROC-кривая

01

Вероятность p

класс задаёт сравнение p с порогом

02

TPR = recall

доля найденных положительных

03

FPR = FP / (FP + TN)

доля ложных срабатываний

04

ROC-кривая

TPR от FPR при всех порогах

AUCСмысл
1идеальное ранжирование
0,5случайное угадывание
любоевероятность, что положительный объект оценён выше отрицательного

Для физика

Порог выбирает задача: при поиске сигнала — максимум значимости S/√B, при измерении сечения — минимум погрешности √(S + B)/S.

Демонстрация:

метрики при дисбалансе

01

Сигнал — 1 % событий, два признака

02

Классификатор «всегда фон»

03

Логистическая регрессия: пороги 0,5; 0,2; 0,05

04

ROC-AUC и положительный класс «фон»

Что наблюдается

«Всегда фон»: accuracy 0,990, recall 0. Порог 0,5 → 0,05: recall 0,21 → 0,71, precision 0,77 → 0,19; AUC 0,960.

root@lab — запись со стенда

Дерево

решений

Q → L (x < t),  R (x ≥ t)
G = |L|/|Q|·H(L) + |R|/|Q|·H(R) → min
 
доля ошибок: H = 1 − max p
энтропия:    H = −Σ p·log2 p
Джини:       H = 1 − Σ p²

01

Жадное построение

лучшее разбиение в каждом узле

02

Регрессия

мера неоднородности — дисперсия

03

Глубина

без ограничений дерево запоминает выборку

04

Остановка

глубина, объекты в узле и листе, обрезка

Дерево:

сильные и слабые стороны

01

Объяснимость

решение читается как схема правил

02

Масштаб

нормировать признаки не требуется

03

Пропуски

часть реализаций их обрабатывает

04

Настройка

гиперпараметров немного

01

Ступенчатая граница

разбиения перпендикулярны осям

02

Подстройка под шум

глубокое дерево запоминает выборку

03

Нестабильность

сдвиг нескольких точек меняет дерево

04

Экстраполяция

за пределами данных — константа

Важно

Модель, обученная на токах до 2 кА, на 3 кА предскажет то же, что на 2, и не предупредит об этом.

Демонстрация:

экстраполяция

01

Закон k = 0,8·I², токи от 0 до 2 кА

02

Дерево, лес, бустинг, kNN, линейная по I и I²

03

Предсказания на 2,5 и 3 кА

04

Рисунок

Что наблюдается

При 3 кА закон даёт 7,20; дерево, лес, бустинг и kNN — 3,11–3,21, как при 2 кА; линейная модель по I и I² — 7,16.

root@lab — запись со стенда

Результат:

экстраполяция

Фокусирующая сила от тока: измерения до 2 кА, закон k = 0,8·I² и предсказания леса, дерева и линейной модели до 3 кА

Что наблюдается

Внутри данных все модели совпадают с законом; за 2 кА дерево и лес дают горизонтальную линию, линейная модель по I и I² продолжает параболу.

Ансамбли

Смещение и разброс, бэггинг, случайный лес и градиентный бустинг

04

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Смещение

и разброс

y = f(x) + ε,  Mε = 0,  Dε = σ²
 
MSE = M(y − b)²
    = (f − Mb)² + Db + σ²
    = bias² + variance + σ²

Для физика

Смещение играет роль систематической погрешности, разброс — случайной.

01

Bias

простая модель не достигает закона

02

Variance

сложная подстраивается под выборку

03

σ²

шум измерения — неустранимая часть

Демонстрация:

смещение и разброс

01

Закон sin 2πx, шум σ = 0,3

02

Сто выборок по 50 точек

03

Линейная регрессия, два дерева и лес

04

Разложение и прямая проверка

Что наблюдается

Линейная: bias² 0,156. Дерево без ограничений: variance 0,093, лес — 0,046, вдвое меньше, а не в сто раз. Сумма совпадает с проверкой до 0,003.

root@lab — запись со стенда

Бэггинг

и случайный лес

Для физика

Ярмарка: около 800 человек угадывали вес быка, 1198 фунтов; среднее всех догадок — 1197.

01

Bootstrap

подвыборки с возвращением

02

Усреднение

разброс падает, если ошибки не коррелированы

03

Случайные признаки

разбиение ищется по случайной части признаков

Случайный лес
Точностьвысокая без настройки
Выбросыустойчив
Параллельностьдеревья на всех ядрах
Прозрачностьсотни деревьев не прочитать
Экстраполяциянет, как у дерева

Градиентный

бустинг

ВозрастЦенаf₁ОстатокДеревоf₂
25700560140140700
50800560240140700
7560056040140700
80400560−160−210350
100300560−260−210350

Важно

Деревья неглубокие, три-четыре уровня: сила ансамбля в их числе.

01

Начало

приближение — среднее, 560

02

Шаг

дерево обучается на остатках

03

Остаток

антиградиент потерь: для MSE — y − f

04

Скорость η

вклад каждого дерева уменьшается

Демонстрация:

бустинг главы

01

Пять товаров: возраст и цена

02

Пень глубины 1 на остатках

03

Шаг 1,0 и 0,1, от 1 до 20 деревьев

Что наблюдается

Порог 77,5 дня, листья 140 и −210, приближение 700, 700, 700, 350, 350 — как в таблице главы. Двадцать деревьев: MSE 13,5 при шаге 1,0 и 2492 при 0,1.

root@lab — запись со стенда

Бэггинг

против бустинга

СвойствоБэггинг, лесБустинг
Деревьянезависимыцепочка
Глубинаглубокие3–4 уровня
Снижаетразброссмещение
Переобучениеустойчивсклонен, нужен тест
Параллельностьпо деревьямвнутри дерева
Таблицыточенобычно точнее

Для физика

Ни лес, ни бустинг не экстраполируют: оба составлены из деревьев.

Без учителя

Понижение размерности: PCA и t-SNE; кластеризация: k-средних, иерархическая, DBSCAN

05

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Метод

главных компонент

cov(X) = X⊤X / N   (выборка центрирована)
cov·v = λ·v
λ — дисперсия вдоль оси v
потеря = Σ отброшенных λ / Σ всех λ

Важно

Структуры, не похожие на эллипс, линейный метод не передаёт.

01

Новый базис

оси эллипса рассеяния

02

Отбрасывание

оси с наименьшей дисперсией

03

Стандартизация

иначе первая ось — признак в больших единицах

t-SNE:

пружины между точками

p(j|i) ~ exp(−|xi − xj|² / 2σi²)
q(ij)  ~ 1 / (1 + |yi − yj|²)
KL(P, Q) = Σ p·log(p / q) → min

Пояснение

Тяжёлые хвосты распределения Стьюдента устраняют скученность точек на карте.

01

Сходства

гауссовы в исходном пространстве

02

Карта

распределение Стьюдента на плоскости

03

Силы

градиент KL — притяжение и отталкивание

04

Ограничения

новые точки не проецируются, счёт долгий

Демонстрация:

PCA и t-SNE

01

Wine: PCA без стандартизации

02

Wine: PCA после StandardScaler

03

Цифры 8×8: PCA и t-SNE на плоскости

04

kNN по двум координатам карты

Что наблюдается

Без стандартизации PC1 — это proline, 99,8 % дисперсии; после неё две компоненты дают 55 %. На цифрах kNN по карте: PCA 0,603, t-SNE 0,976.

root@lab — запись со стенда

Результат:

PCA и t-SNE

Рукописные цифры на плоскости: слева две главные компоненты, справа карта t-SNE, цвет и подпись — цифра

Что наблюдается

PCA сохраняет глобальные направления, и цифры в центре перекрываются; t-SNE сохраняет соседство: десять групп разделены.

Кластеризация:

три метода

МетодЧисло кластеровФормаВыбросы
k-среднихзадаётся, по «локтю»выпуклаянет
иерархическаяразрез дендрограммыпо связинет
DBSCANопределяет самлюбаяметка −1

Пояснение

DBSCAN: eps — радиус окрестности, min_samples — число точек в ней, включая саму точку.

Для физика

Выбросы DBSCAN — готовый инструмент поиска аномалий в данных установки.

Демонстрация:

кластеризация

01

k-средних на четырёх облаках: локоть

02

Два полумесяца и 20 выбросов

03

k-средних, иерархическая и DBSCAN

04

Рисунок

Что наблюдается

Локоть при k = 4: сумма падает в 5,2 раза, далее в 1,1. На полумесяцах ARI: k-средних 0,253, иерархическая 0,239, DBSCAN 1,000 и 14 выбросов из 20.

root@lab — запись со стенда

Результат:

кластеризация

Слева сумма квадратов расстояний k-средних от числа кластеров; в центре k-средних и справа DBSCAN на двух полумесяцах, крестики — выбросы DBSCAN

Что наблюдается

Локоть при k = 4. k-средних делит полумесяцы прямой линией; DBSCAN повторяет их форму и отмечает крестиками сбои вдали от них.

Нейронные сети

Нейрон, скрытые слои, обратное распространение ошибки, оптимизаторы, инициализация и регуляризация

06

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Нейрон

и скрытый слой

S = W1·X1 + W2·X2 + W3·X3
Y = 1, если S ≥ 0.5
W = (0.5, −0.5, 0.5)

01

X1

задавал вопросы на лекциях

02

X2

попал к лектору на экзамене

03

X3

сдал лабораторные работы

01

Один слой

одна разделяющая плоскость

02

XOR

ровно одно из двух — плоскостью не разделить

03

Скрытый слой

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

04

Активация

дифференцируемая: σ, tanh, ReLU

Демонстрация:

нейрон и XOR

01

Нейрон главы: таблица истинности

02

XOR: логистическая регрессия

03

Сеть со скрытым слоем из 1, 2 и 4 нейронов

04

Новые признаки скрытого слоя

Что наблюдается

Нейрон главы: 0 несовпадений из 8. XOR: логистическая регрессия 0,500, один скрытый нейрон 0,750, два — 1,000; углы (0, 0) и (1, 1) переходят в одну точку.

root@lab — запись со стенда

Обратное

распространение ошибки

f = (x + y)·z,   q = x + y
df/dx = df/dq · dq/dx = z · 1
 
σ'(x) = σ(x)·(1 − σ(x))
δ_скрытый = (W⊤δ)·σ'

01

Цепное правило

производная композиции — произведение производных

02

Прямой проход

вычисляет выходы слоёв

03

Обратный проход

переносит ошибку к входу через веса

04

Сигмоида

затухающий градиент, выход > 0, дорогая экспонента

Демонстрация:

обратный проход

01

Сеть 2–3–1 с сигмоидой на XOR

02

Градиенты по цепному правилу

03

Сверка с центральными разностями

04

Обучение: 5000 эпох

Что наблюдается

Градиенты 13 параметров совпали с разностями до восьмого знака. Log loss 1,048 → 0,002, выходы 0,000; 0,997; 0,998; 0,003.

root@lab — запись со стенда

Оптимизаторы

градиентного спуска

МетодИдеяОбновление
SGDшаг против градиентаx ← x − α·g
Momentumинерцияv ← ρv + α·g; x ← x − v
Nesterovградиент после сдвига инерциейv ← ρv − α·g(x + ρv); x ← x + v
Adagradшаг по истории параметраc ← c + g²; x ← x − α·g/√c
RMSPropистория забываетсяc ← βc + (1 − β)·g²
AdamRMSProp + инерцияпоправки 1 − γ^t и 1 − β^t

Пояснение

Отправная точка — Adam или метод Нестерова: сеть из типовых слоёв обучается без ручного подбора.

Инициализация

и нормализация

D(s) = D(Σ w·x) = n·D(w)·D(x)
D(s) = D(x)  ⇒  D(w) = 1/n   ЛеКун
D(w) = 2/(n_in + n_out)      Ксавье
D(w) = 2/n для ReLU          Хе
 
z = (x − μ) / √(σ² + ε),  y = γ·z + β

01

Нули, константа

нейроны слоя одинаковы — слой вырождается

02

По умолчанию

Keras — Ксавье; PyTorch — kaiming, a = √5

03

Batch norm

нормировка по батчу, γ и β обучаются

04

Инференс

скользящие средние вместо статистик батча

Регуляризация

сети

01

L1, L2, Elastic Net

штраф за большие веса, как в регрессии

02

Dropout

случайное выключение нейронов при обучении

03

Остаточные связи

обход слоёв для обучения глубоких сетей, не регуляризация

04

Аугментация

повороты, сдвиги и шум обучающих примеров

Пояснение

Inverted dropout делит на долю оставленных нейронов при обучении: на инференсе слой просто отключается.

Демонстрация:

оптимизаторы

01

Овраг (x² + 50·y²)/2: SGD при трёх шагах

02

Momentum, Nesterov, Adagrad, RMSProp, Adam

03

Рисунок траекторий

04

СКО сигнала через 20 слоёв

Что наблюдается

SGD: 394 шага, при lr 0,041 > 2/50 расходится; Nesterov — 86, RMSProp без поправки на смещение — 22. Через 20 слоёв ReLU: ЛеКун 0,001, Хе 0,76.

root@lab — запись со стенда

Результат:

траектории

Первые 60 шагов SGD, Momentum и Adam на овраге (x² + 50·y²)/2 из точки (−4, 1) на фоне линий уровня

Что наблюдается

SGD сразу гасит поперечную координату и медленно идёт вдоль оврага; Momentum разгоняется, но раскачивается; Adam идёт по плавной кривой.

Конвейер sklearn

Единый API, разбиение и утечка данных, Pipeline, кросс-валидация, подбор гиперпараметров, сохранение модели

07

Постановка задачи

Соседи и регрессия

Классификация

Ансамбли

Без учителя

Нейронные сети

Конвейер sklearn

Единый

API

МетодМодельПреобразователь
fit(X, y)подбирает параметрызапоминает статистики
predict(X)метки новых объектов—
predict_proba(X)вероятности классов—
transform(X)—преобразует данные
fit_transform(X)—обучает и преобразует

Пояснение

load_* — учебные наборы пакета, fetch_* — загрузка из сети, make_* — синтетические данные.

Проверка

Замена kNN на лес или сеть — одна строка: интерфейс общий.

Разбиение

и утечка данных

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y)
 
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)

01

Тест

откладывается первым, до любой обработки

02

stratify=y

доли классов совпадают

03

Утечка

сведения о тесте попали в обучение

04

Категории

OneHotEncoder, OrdinalEncoder, ColumnTransformer

Pipeline

и подбор

model = Pipeline([("scaler", StandardScaler()),
                  ("knn", KNeighborsClassifier(5))])
cv = StratifiedKFold(5, shuffle=True, random_state=42)
cross_val_score(model, X_train, y_train, cv=cv,
                scoring="f1_macro")
GridSearchCV(model, {"knn__n_neighbors": [1, 3, 5, 7, 9, 15],
                     "knn__weights": ["uniform", "distance"]},
             cv=cv, scoring="f1_macro")

01

Pipeline

предобработка обучается внутри фолда

02

Кросс-валидация

среднее и разброс по k фолдам

03

GridSearchCV

сетка, имя «шаг__параметр»

04

Тест

один раз, после выбора модели

Демонстрация:

конвейер главы

01

Pipeline: метрики на тесте

02

Кросс-валидация по пяти фолдам

03

GridSearchCV по K и весам

04

Ridge на Diabetes

Что наблюдается

Числа главы воспроизведены: F1 0,951 ± 0,036, лучшие K = 15 и uniform, тест 1,000, MAE 46,1, R² 0,419. K = 7 и 15 различаются на 0,001 при разбросе 0,04.

root@lab — запись со стенда

Демонстрация:

утечка данных

01

100 объектов, 10 000 признаков-шумов

02

Отбор 20 признаков до кросс-валидации

03

Тот же отбор внутри Pipeline

04

StandardScaler на Wine

Что наблюдается

Отбор до кросс-валидации: 0,870 на чистом шуме; внутри Pipeline — 0,470, уровень угадывания. Для StandardScaler на Wine разницы нет: 0,961 и 0,961.

root@lab — запись со стенда

Сохранение

модели

joblib.dump(best_model, "wine_knn.joblib")
loaded = joblib.load("wine_knn.joblib")
loaded.predict(X_test)   # предобработка внутри

Важно

Файл модели из непроверенного источника равносилен чужому скрипту.

01

Весь конвейер

масштабирование и модель одним файлом

02

Доверие

загрузка pickle выполняет код

03

Версия

scikit-learn закреплена в зависимостях

04

Признак

InconsistentVersionWarning при другой версии

Демонстрация:

сохранение модели

01

joblib.dump: конвейер в файл

02

joblib.load: F1 на тесте

03

Файл с меткой версии 1.5.2

04

Файл, выполняющий код при загрузке

Что наблюдается

Файл 36 144 байта, F1 1,000 без предупреждений. С меткой 1.5.2 — три InconsistentVersionWarning. Чужой файл напечатал строку при загрузке.

root@lab — запись со стенда

Итоги

лекции

01

Обучение — минимизация функционала; качество — только на невиденных данных.

02

Методы на расстояниях и градиентах требуют масштабирования признаков.

03

Регуляризация стабилизирует веса при коллинеарности и шуме; λ — на валидации.

04

При дисбалансе accuracy бесполезна: precision, recall, порог, класс.

05

Деревья не экстраполируют; лес снижает разброс, бустинг — смещение.

06

Градиент сверяется с разностями, инициализация — под активацию.

07

Всё, что обучается на данных, — в Pipeline; версия — в зависимостях.

Упражнения

и задание

01

Свой kNN

на NumPy, сравнение с KNeighborsClassifier

02

Ridge и Lasso

подбор λ кросс-валидацией на Diabetes

03

Порог

ROC-кривая metrics.py и порог для чистоты 0,9

04

Экстраполяция

MLPRegressor на законе k = 0,8·I²

Пояснение

Практикум книги «Базовые методы ИИ в физических исследованиях»: свои kNN, линейная и логистическая регрессия, соревнование Kaggle, сеть прямого распространения.

Для физика

Вывод о модели подкрепляется отложенной выборкой, а не невязкой на обучающих данных.

Источники

1

Книга курса: главы части «Машинное обучение» — основные понятия, классические алгоритмы, нейронные сети, scikit-learn

phys-dev.github.io/soft-dev-book

2

Hastie T., Tibshirani R., Friedman J. The elements of statistical learning. – 2nd ed. – Springer, 2009; Bishop C. M. Pattern recognition and machine learning. – Springer, 2006

3

Гудфеллоу Я., Бенджио И., Курвилль А. Глубокое обучение. – ДМК Пресс, 2018; Жерон О. Прикладное машинное обучение с помощью Scikit-Learn, Keras и TensorFlow. – 2-е изд. – Диалектика, 2020

4

Федоров В. В. Базовые методы ИИ в физических исследованиях

phys-dev.github.io/basic-ml-book

5

Федоров В. В. Рецепты по обучению моделей машинного обучения

phys-dev.github.io/ml-recipe-book

6

scikit-learn: руководство пользователя и справочник API

scikit-learn.org/stable

Спасибо за внимание

Вопросы

phys-dev.github.io/soft-dev-book

16