Глубокое введение в квадратичный дискриминантный анализ (QDA) с теорией и реализацией Python

СОДЕРЖАНИЕ

Этот пост является частью серии постов, которые я буду делать. Вы можете прочитать более подробную версию этого поста в моем личном блоге, нажав здесь. Ниже вы можете увидеть обзор серии.

1. Введение в машинное обучение

2. Регресс

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

Настройка и цель

Как упоминалось в предыдущем посте, генеративные классификаторы моделируют совместное распределение вероятностей входных и целевых переменных P (x, т). Это означает, что мы получим дистрибутив, который может генерировать (отсюда и название) новые входные переменные с соответствующими целями.

Модель, которую мы рассмотрим в этом посте, относится к категории моделей, называемых моделями Гауссовского дискриминантного анализа (GDA). Теперь, когда номенклатура начинает усложняться! Обратите внимание, что модель дискриминантного анализа по Гауссу является генеративной моделью! Это не дискриминационная модель, несмотря на свое название.

Учитывая набор обучающих данных из N входных переменных x с соответствующими целевыми переменными t, модели GDA предполагают, что условные плотности классов нормально распределены

где μ - это вектор среднего значения для класса, а Σ - это ковариационная матрица для конкретного класса. . Используя теорему Байеса, теперь мы можем вычислить апостериорную

Затем мы классифицируем x на класс

Вывод и обучение

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

Для упрощения записи позвольте θ обозначать все априорные значения класса, средние векторы для каждого класса и ковариационные матрицы. Как мы знаем, максимизация вероятности эквивалентна максимизации логарифмической вероятности. Логарифмическая вероятность

Расширение (1) очень поможет нам в следующих выводах:

Мы должны найти решение максимального правдоподобия для конкретных классов априорных, средних и ковариационных матриц. Начиная с априорных значений, мы должны взять производную от (2), установить ее равной 0 и найти априорную величину. Однако мы должны поддерживать ограничение

Это делается с помощью множителя Лагранжа λ, и вместо этого

Используя результат из (2), мы затем берем производную от (3) по предшествующему классу, устанавливаем его равным 0 и решаем

где Nc - количество точек данных в классе c. Используя знание ограничения, мы можем найти λ

Подставляя λ = −N обратно в (4), получаем

(5) сообщает нам, что предшествующий класс - это просто пропорция точек данных, принадлежащих классу, что также интуитивно понятно.

Теперь мы переходим к максимизации логарифма правдоподобия по отношению к средним классам. Опять же, использование результата из (2) позволяет нам легко взять производную, установить ее равной 0 и решить

Чтобы оценить эту производную, мы используем тождество матричного исчисления. Вы можете найти конкретную личность в моем более подробном посте в моем личном блоге.

Затем мы получаем

Давайте поймем момент, чтобы понять, о чем говорит (6). Сумма в левой части (6) включает только входные переменные x, принадлежащие классу c. После этого мы делим эту сумму векторов на количество точек данных в классе, что аналогично усреднению векторов. Это означает, что вектор среднего для класса является средним значением входных переменных, принадлежащих этому классу. Еще раз, это тоже имеет интуитивный смысл.

Наконец, мы должны максимизировать логарифмическую вероятность по отношению к ковариационной матрице, зависящей от класса. Опять же, мы берем производную, используя результат из (2), устанавливаем ее равной 0 и решаем

Эта производная требует 3 свойств, которые я перечислил в моей более подробной версии этого сообщения в моем личном блоге. Затем мы получаем

Так же, как зависящий от класса средний вектор - это просто среднее значение векторов класса, зависящая от класса ковариационная матрица - это просто ковариация векторов класса, и мы получаем наш максимум правдоподобные решения (5), (6) и (7). Таким образом, мы можем классифицировать, используя следующие

Реализация Python

Начнем с некоторых данных - вы можете увидеть их на графике ниже. Вы можете скачать данные здесь.

Код ниже - это простая реализация QDA, которую мы только что рассмотрели.

Теперь мы можем делать прогнозы с помощью следующего кода.

Это дает нам гауссовские распределения вместе с прогнозами, которые показаны ниже.

Чтобы упростить нам иллюстрацию того, как работает QDA и насколько хорошо он работает, мы можем нанести на диаграмму исходные классы точек данных по границам решения. Это показано ниже.

Резюме

  • Квадратичный дискриминантный анализ (QDA) - это генеративная модель.
  • QDA предполагает, что каждый класс подчиняется гауссовскому распределению.
  • Приоритет для конкретного класса - это просто доля точек данных, принадлежащих к классу.
  • Вектор среднего для класса - это среднее значение входных переменных, принадлежащих этому классу.
  • Зависящая от класса ковариационная матрица - это просто ковариация векторов, принадлежащих этому классу.