Дискриминативная модель сразу проводит границу. Порождающий классификатор
сначала рассказывает, как каждый класс порождает свои признаки, и только потом
сравнивает эти рассказы по правилу Байеса. Форма облаков и частота классов
становятся частью решения — а значит, ошибиться можно не только в границе, но
и в самой истории.
Два вида ириса как два облака
Возьмём знаменитую таблицу ирисов и оставим два вида, которые действительно
трудно различить: versicolor и virginica, по 50 цветков каждого. Признаков
два — длина и ширина лепестка. Средние получаются такими:
μversicolor=(4,26;1,33),μvirginica=(5,55;2,03).
Дискриминативный подход спросил бы сразу: где провести черту? Порождающий
задаёт другой вопрос — как выглядит облако каждого вида. Для класса k мы
задаём плотность p(x∣y=k) и априорную вероятность P(y=k)=πk. После
измерения цветка правило Байеса переворачивает историю:
P(y=k∣x)=∑jp(x∣y=j)πjp(x∣y=k)πk.
Знаменатель одинаков для всех k, поэтому побеждает класс с наибольшим
числителем. Удобнее сравнивать логарифмы: граница между классами a и b —
это множество точек, где
logp(x∣y=a)+logπa=logp(x∣y=b)+logπb.
Из этой одной строки вырастает весь урок. Слева и справа стоят два слагаемых:
«насколько признаки похожи на класс» и «насколько класс вообще част». Меняя
предположение о форме плотности, мы получаем LDA, QDA или naive Bayes. Меняя
πk, мы двигаем границу, не трогая ни одной точки. Сама формула — это
урок 42, просто записанный для непрерывных признаков.
Рис. 54.1. Класс — это плотность, а не только цвет точек
Реальные данные: versicolor и virginica по 50 цветков. Эллипсы — уровни
p(x∣y=k) при общей матрице разброса, кресты — средние классов. Чёрная
линия проходит там, где взвешенные на prior плотности равны; на этих же точках
она даёт 94% верных ответов, то есть ошибается на шести цветках из ста.
Обратите внимание: линия не перпендикулярна отрезку между центрами — метрику
задаёт ковариация, а не глаз.
Развилка: описывать мир или сразу отвечать
У двух подходов разная валюта. Дискриминативная модель тратит всю
выразительность на границу и ничего не знает про то, как устроены признаки.
Порождающая тратит её на описание облаков — и получает бонусы, которые границе
недоступны: маргинализацию пропусков, генерацию новых объектов, обнаружение
аномалий (объект, лежащий далеко от всех классов, имеет маленькую p(x)),
пересчёт под другой prior.
Плата тоже понятна: если история про облака неверна, страдает и граница.
Дискриминативная модель может ошибиться в форме границы; порождающая может
ошибиться в форме мира — а это более сильное утверждение, и потому более
уязвимое.
Совет Бокса здесь не отговорка, а рабочая инструкция: нормальность облаков
почти наверняка неверна, вопрос лишь в том, насколько эта неверность мешает
конкретному решению. Ниже мы дважды увидим, как одно и то же неверное
предположение оказывается безобидным для ранжирования и разрушительным для
вероятностей.
Оценка параметров: правдоподобие снова даёт средние
Откуда берутся μk и Σk? Из того же принципа максимума
правдоподобия, что и в уроке 45. Логарифм правдоподобия выборки
разбивается на независимые куски по классам:
ℓ(θ)=i=1∑n[logπyi+logp(xi∣yi)],
и максимум по μk достигается на выборочном среднем класса
μk=nk1i:yi=k∑xi,
а максимум по πk — на выборочной частоте πk=nk/n. Для
ковариаций QDA берёт внутриклассовые матрицы, а LDA — их взвешенное среднее,
объединённую (pooled) оценку:
Σ=n−K∑k(nk−1)Σk.
Никакой итерационной оптимизации: порождающий классификатор обучается
пересчётом сумм. В этом его практическая прелесть — обучение занимает один
проход по данным.
LDA: одна общая форма разброса
Linear Discriminant Analysis делает самое экономное предположение:
x∣y=k∼N(μk,Σ),
средние разные, а матрица разброса общая. Подставим логарифм нормальной
плотности
Направление нормали к границе — не μa−μb, а Σ−1(μa−μb).
Ковариация выступает метрикой: отличие вдоль шумного направления весит меньше,
чем такое же евклидово отличие вдоль стабильного. Тот же приём «поделить на
разброс» мы видели в уроке 38, когда искали главные оси.
Граница становится квадрикой — параболой, гиперболой или эллипсом. Модель
способна описать компактный класс внутри рассеянного или два облака с разной
ориентацией. На наших ирисах разброс virginica заметно больше: отношение
определителей ковариаций равно 6,26, то есть «площадь» облака virginica
примерно в шесть раз больше. Неудивительно, что QDA на тех же точках даёт
97% против 94% у LDA, а на честном разбиении 60/40 — 97,5% против
95,0%.
Слева общая Σ заставляет эллипсы обоих классов иметь одинаковую форму и
ориентацию, и граница выходит прямой. Справа каждому классу разрешена своя
матрица: эллипс virginica крупнее и повёрнут иначе, поэтому равенство
дискриминантов содержит квадраты координат и граница изгибается, огибая более
компактное облако versicolor.
Когда гибкость становится обузой
Проверим этот счёт на реальных данных. Возьмём таблицу диагностики рака груди
из sklearn (30 признаков), обучим на маленькой выборке из 60 объектов и
проверим на оставшихся 509. Будем добавлять признаки по одному и смотреть,
что происходит с точностью на тесте.
При пяти признаках QDA впереди: 93,5% против 90,8% у LDA — данные
действительно не устроены с общей ковариацией, и гибкость окупается. Но при
всех тридцати признаках QDA обваливается до 62,7%, тогда как LDA держит
88,8%. Причина не в том, что QDA «хуже», а в том, что при d=30 она
просит 930 ковариационных параметров, имея примерно 30 объектов на класс.
Матрицы почти вырождены, и модель начинает верить случайным направлениям.
Заметьте, чему именно равны эти 62,7%: это в точности доля частого класса в
тесте. QDA не просто ошибается чаще — она перестаёт различать классы и отвечает
одинаково на всех 509 объектах.
Компромисс лечит болезнь. Стягивание ковариаций к сферической матрице,
Σk=(1−γ)Σk+γσ2I,
при γ=0,5 даёт 93,7% — лучший результат из трёх. Это та же идея
регуляризации, что и в уроке 51: чуть-чуть сместить оценку, чтобы
резко уменьшить её разброс.
Рис. 54.3. Обучающих объектов 60: гибкость становится обузой
Реальные данные диагностики: 60 объектов в обучении, 509 в тесте. До
дюжины признаков QDA выигрывает — форма классов действительно различна. После
двадцати её ковариационные матрицы становятся почти вырожденными, и кривая
садится ровно на пунктир 62,7% — это доля частого класса в тесте. Совпадение
не случайно: числа logdetΣk разъезжаются настолько, что один класс
перевешивает везде, и QDA вырождается в постоянный ответ. Стягивание
(γ=0,5) забирает лучшее у обеих моделей: 93,7% при всех тридцати
признаках и не ниже 91,9% везде, начиная с пяти.
Лаборатория эллипсов
LDA, QDA, naive Bayes и редкий класс
График шире экрана — листайте по горизонтали →
Загружается живая иллюстрация…
Порядок опытов такой. Сначала не трогайте ползунки формы: облака почти
одинаковы, и все три модели дают близкие границы — но QDA при этом оценивает
десять параметров вместо семи, то есть платит за гибкость, которой не
пользуется. Затем растяните и поверните красный класс: прямая LDA перестаёт
справляться, а дуга QDA огибает вытянутое облако. Переключитесь на naive Bayes
— его эллипсы принудительно выпрямляются по осям, и на повёрнутом облаке он
проигрывает обоим соседям. Наконец, не двигая ни одной точки, уменьшите prior
редкого класса до нескольких процентов: красная область сжимается, доля
пойманных объектов редкого класса падает. Данные не изменились — изменилось
представление о том, как часто такой класс вообще встречается.
Prior двигает границу, не трогая точек
Разберём этот эффект в самом прозрачном виде — на модельном одномерном примере
(данных здесь нет, только две нормальные плотности, зато всё считается до
конца). Пусть для обычного класса X∣Y=0∼N(0,1), а для редкого
X∣Y=1∼N(2,1). Логарифм отношения плотностей линеен:
logp(x∣0)p(x∣1)=2x−2.
При равных prior граница P(Y=1∣x)=1/2 проходит через x=1. Пусть теперь
редкий класс встречается лишь в 2% случаев. К логарифму отношения
правдоподобий добавляется
log0,980,02≈−3,89,
и граница уезжает вправо:
x∗=1−21log0,980,02≈2,95.
Наблюдение x=2 лежит ровно в центре редкого класса, но апостериорная
вероятность для него — всего 13,1% вместо 88,1% при равных prior.
Похожий сигнал слишком часто возникает среди гораздо более многочисленных
обычных объектов. Это ровно ошибка прокурора из урока 43, только
записанная плотностями.
Модельный пример с фиксированными числами. Умножение на prior не меняет формы
колоколов, но опускает красный почти до нуля: чтобы перевесить, редкому классу
нужно куда более убедительное совпадение. Внизу — те же данные в терминах
апостериорной вероятности: сигмоида просто сдвигается по горизонтали на
−log(π1/π0)/2.
Практический вывод жёсткий. Если модель обучали на искусственно
сбалансированной таблице, а в реальности редкий класс составляет 2%, то
граница x=1 поймает 84,1% редких объектов, но лишь 9,8% её тревог
окажутся верными — меньше каждой десятой. Сдвиг границы к x∗=2,95
поднимает долю верных тревог до 68,6% ценой падения полноты до 17,2%.
Это не улучшение и не ухудшение модели: это выбор точки на кривой компромисса,
и делать его должен тот, кто знает цену ошибок.
Naive Bayes: смелая независимость
Для текста с тысячами признаков полная ковариация безнадёжна: матрицу
3000×3000 по нескольким тысячам писем не оценить. Naive Bayes делает
предположение, которое заведомо неверно, но спасает счёт:
p(x∣y=k)=j=1∏dp(xj∣y=k).
Для счётчиков слов берут мультиномиальную модель со сглаживанием из
урока 48, и решающая функция превращается в сумму вкладов слов:
Проверим на настоящем корпусе SMS Spam Collection: 5574 сообщения, из них
13,4% спама, словарь после отсечения редких слов — 3236 слов, тест
1673 сообщения. Наивный Байес даёт 98,6% верных ответов, точность на
спаме 95,9%, полноту 93,3%. Логистическая регрессия на тех же
признаках — 97,9%. Модель, чьё главное предположение очевидно ложно (слова
«машинное» и «обучение» приходят вместе), обыгрывает аккуратную
дискриминативную модель.
Ранжирует хорошо, вероятности врёт
А теперь посмотрим не на решение, а на число, которое модель выдаёт вместе с
ним. У наивного Байеса 89,4% ответов лежат вне интервала
[0,01;0,99] — он почти всегда абсолютно уверен. У логистической
регрессии таких ответов 66,8%. Середина шкалы у наивного Байеса
практически пуста: в диапазоне «сомневаюсь» почти нет писем.
Причина прямо в формуле произведения. Если два признака дублируют друг друга,
их вклады складываются дважды. Для двух нормальных признаков с корреляцией
ρ=0,9 верная модель даёт в точке x1=x2=0,5 апостериорную
вероятность 74,1%, а наивная — 88,1%: одно и то же свидетельство
засчитано дважды. В тексте, где слова идут устойчивыми оборотами, такой
пересчёт происходит десятки раз, и log-odds раздуваются.
Рис. 54.5. Хорошее ранжирование не значит честную вероятность
Реальный SMS-корпус, тестовая часть. Слева: почти все ответы прижаты к нулю и
единице. Справа: кривая калибровки; рядом с точками подписано, сколько писем
попало в корзину. Точность решений 98,6%, но заявленные вероятности не
соответствуют долям — в средних корзинах лежат единицы и десятки писем, и
кривая пляшет.
Хороший классификатор и хороший измеритель вероятности — разные достижения,
проверять их надо порознь.
Порождающая модель умеет работать с пропусками
Вот бонус, ради которого стоит описывать облака. Если у объекта не измерен один
признак, порождающая модель не обязана ничего выдумывать — она интегрирует
неизвестную координату:
p(xobs∣y=k)=∫p(xobs,xmiss∣y=k)dxmiss.
Для многомерной нормали интеграл берётся руками: маргинальное распределение
наблюдаемых координат — снова нормальное, с соответствующим куском среднего и
соответствующим блоком ковариации:
xobs∣y=k∼N(μkobs,Σkobs,obs).
Никакой подстановки среднего, никакого «заполним нулём» — просто честное
взвешивание всех возможных значений пропущенной координаты.
Проверим на ирисах, насколько это важно. Возьмём цветок с длиной лепестка
5,0 и шириной 1,5 см. По двум признакам модель уверенно говорит
versicolor: вероятность virginica всего 20,2%. Забудем ширину — остаётся
только длина, граница по ней проходит в 4,91 см, и наш цветок оказывается
справа от неё: вероятность virginica 61,4%. Приговор поменялся на
противоположный. Всего таких переворотов среди ста цветков — 10, а точность
падает с 94,0% до 92,0%.
Рис. 54.6. Пропуск признака меняет не только уверенность, но и приговор
Слева полная двумерная картина: звезда лежит ниже границы, в области
versicolor. Справа ширина проинтегрирована, остались две одномерные плотности;
по одной длине тот же объект попадает в область virginica. Маргинализация —
правильная операция, но она честно теряет информацию, и уверенность (а иногда
и ответ) обязана измениться.
Однако сам механизм пропуска нельзя игнорировать. Если лаборатория реже
назначает дорогой анализ здоровым пациентам, то факт отсутствия значения —
это улика. Формула маргинализации молча предполагает, что пропуск не зависит от
класса при известных наблюдаемых признаках. Если это не так, надо моделировать
индикатор измерения m как ещё один признак:
p(xobs,m∣y=k)=p(m∣y=k)p(xobs∣m,y=k).
Связь с логистической регрессией
Есть удивительный факт: для двух нормальных классов с общей ковариацией
логарифм отношения апостериорных вероятностей строго линеен по x:
logP(y=0∣x)P(y=1∣x)=w⊤x+b,w=Σ−1(μ1−μ0).
То есть
P(y=1∣x)=σ(w⊤x+b),
в точности форма логистической регрессии из урока 53. Две модели
дают один и тот же класс решающих функций и различаются лишь способом подбора
параметров. LDA оценивает μk,Σ,πk по правдоподобию совместного
распределения p(x,y); логистическая регрессия максимизирует условное
правдоподобие P(y∣x) и вообще не описывает p(x).
Отсюда честный компромисс. Если нормальная история близка к правде, LDA
использует дополнительную структуру и на малых выборках выигрывает: она берёт
информацию из расположения признаков, а не только из меток. Если история
неверна — тяжёлые хвосты, категориальные признаки, смеси, — LDA тратит силы на
описание того, что ей не нужно, и логистическая регрессия оказывается
устойчивее. Выбор делают по диагностике и честной проверке на отложенных
данных (урок 32), а не по ярлыкам «классический» и
«современный».
Ченцов: решающие правила как геометрия
Порождающий подход — часть общей теории статистических решений, и здесь уместно
вспомнить Николая Николаевича Ченцова (1930–1992), математика из Института
прикладной математики. В 1962 году он предложил проекционные оценки плотности:
неизвестную p(x) раскладывают по ортогональной системе функций и оценивают
конечное число коэффициентов
p(x)=j=1∑mcjφj(x),cj=n1i=1∑nφj(xi),
— прямой ответ на вопрос «как оценивать p(x∣y=k), не предполагая
нормальности». Число m здесь играет роль сложности модели ровно так же, как
степень полинома в уроке 50. А в монографии «Статистические
решающие правила и оптимальные выводы» (1972) Ченцов показал, что семейство
распределений естественно рассматривать как многообразие, на котором есть
единственная (с точностью до множителя) метрика, не меняющаяся при разумных
преобразованиях данных, — информационная метрика Фишера.
Для нас это не абстракция. Возьмём семейство N(μ,Σ) с фиксированной
Σ и параметром μ: матрица информации Фишера равна ровно
Σ−1, а расстояние по метрике Ченцова—Фишера между N(μa,Σ) и
N(μb,Σ) — это в точности dM(μa,μb). Та же формула, которой мы
меряли близость точки к центру класса. Когда мы делим отклонение на разброс,
мы не подгоняем формулу под удобство, а пользуемся единственной метрикой,
которую не портит замена признаков. Теорема Ченцова объясняет, почему все
разумные способы измерять различие распределений приводят в одну и ту же точку.
Матрица цен: от вероятности к действию
Даже идеально откалиброванная вероятность ещё не решение. Выбирают действие a
с минимальным условным риском
R(a∣x)=k∑c(a,k)P(y=k∣x),
где c(a,k) — цена действия a, когда истина есть k. Для двух действий
«тревога» и «молчание» с ценами cFP и cFN сравнение
рисков даёт порог
P(y=1∣x)>cFP+cFNcFP.
Если пропуск больного в двадцать раз дороже ложной тревоги, порог равен
1/21≈0,048 — далеко не 0,5. Получается ясное разделение труда:
плотности описывают форму классов, prior описывает популяцию, матрица цен
задаёт действие. Каждый из трёх кусков ошибается по-своему и чинится отдельно;
подробно риск разбирается в уроке 57.
Что проверять на практике
Соберём чек-лист порождающего классификатора. Первое: откуда взялись πk —
из естественной выборки или из дизайна сбора данных. Второе: похожи ли облака
на эллипсы; если признаки скошены, помогает логарифмирование или ранговое
преобразование — до подгонки, а не после. Третье: хватает ли объектов на
ковариации; правило грубое, но полезное — на каждый класс нужны хотя бы
десятки объектов на каждый признак, иначе стягивание обязательно. Четвёртое:
отдельно измерить качество решений (точность, полнота) и качество вероятностей
(кривая калибровки, логарифмическая потеря). Пятое: если данные приходят с
пропусками, выяснить, как они возникают, а не только чем их заполнить. И
последнее — помнить, что за пределами области, где облака поддержаны данными,
любая плотность экстраполирует, а значит, нужна отдельная
карта неопределённости.
Итог
Порождающий классификатор описывает, как класс порождает признаки, и добавляет
частоту классов; правило Байеса превращает это описание в ответ. LDA с общей
ковариацией даёт линейную границу и метрику Махаланобиса, QDA с отдельными
матрицами — квадратичную границу и куда более дорогой счёт параметров, naive
Bayes заменяет совместную плотность произведением и выживает там, где признаков
тысячи. Сильная сторона подхода — содержательная модель мира: пропуски,
аномалии, смена prior обрабатываются одной формулой. Слабая — та же самая
модель: если история про облака неверна, ошибка уходит в вероятности, даже
когда решения остаются правильными.