Линейный дискриминантный анализ - обучайтесь интуитивно: обучение-1

Математическая интуиция в LDA

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

Одним из таких методов является LDAЛинейный дискриминантный анализ, контролируемый метод, обладающий свойством сохранять разделение классов и дисперсию данных. . LDA помогает нам найти оси, которые максимизируют разделение между классами, а также минимизируют разброс (дисперсию).

И цель LDA состоит в том, чтобы спроецировать пространство признаков (N-мерное) на меньшее подпространство k (k‹=n-1), сохраняя при этом информацию о различении классов.

Таким образом, LDA использует информацию из объектов для создания новой оси и проецирует данные на новую ось таким образом, чтобы минимизировать дисперсию и максимизировать расстояние между средними значениями. из двух классов.

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

Разберемся с LDA с помощью известного набора данных — iris data. Набор данных состоит из 50 образцов каждого из трех видов ириса (Iris setosa, Iris virginica и Iris versicolor). У каждого образца измеряли четыре характеристики: длину и ширину чашелистиков и лепестков в сантиметрах.

Мы рассмотрим только два класса setosa и virginica для лучшего понимания математики, лежащей в основе LDA.

Какая функция лучше подходит для разделения классов с максимальным разделением?

1. sepal.length ?

OR

2. сепал.ширина ?

Очевидно, что sepal.length визуально лучше, но можем ли мы сформулировать это математически?

Да, допустим, мы придумали некоторую функцию f(µ1,σ1,µ2,σ2)

µ1 — среднее значение 1-го класса

σ1 — стандартное отклонение 1-го класса

µ2 — среднее значение 2-го класса

σ2 — стандартное отклонение 2-го класса

Теперь мы можем сказать, что расстояние между классами = квадрат расстояния между классами означает =(µ1-µ2)²

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

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

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

Теперь рассчитайте разделение классов между классами для каждой функции.

мы выбираем sepal.length в качестве нашей функции, которая разделяет классы с максимальным разделением, поскольку разделение между классами максимально для sepal.length.

Теперь возьмите 3-ю функцию, как показано ниже:

лепесток.длина гораздо лучше разделяет классы, чем sepal.length и sepal.width, визуально мы можем сказать, почему?

давайте сделаем еще немного математики, чтобы понять это:

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

WoW, разделение классов для petal.length составляет 16,73, что намного больше, чем разделение классов в случае sepal.length, которое было >2.5 , а как насчет дисперсии?

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

Итак, давайте выясним изменение в пределах класса для каждой функции:

таким образом, минимальная дисперсия внутри класса приходится на sepal.width, но визуально petal.length лучше, что теперь делать?

Пришло время сформулировать нашу функцию оптимизации с целью максимизировать значение функции, поэтому давайте определим функцию как:

f = (между разделением классов)/(внутри дисперсии классов)

= ((µ1-µ2)²)/(σ1²+σ2²)

Поэтому, чтобы максимизировать значение функции, нам нужно минимизировать дисперсию и максимизировать разделение.

Эта функция оптимизации является нашей отличительной функцией.

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

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

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

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

Заключение

Мы сформулировали функцию оптимизации LDA и поняли математику, лежащую в основе формулировки.

Нам еще предстоит обсудить применение LDA и многое другое в этой серии, так что продолжайте читать, продолжайте учиться.

Предстоящие уроки:

1. Значение дискриминанта в мультиклассовой задаче

2. Проекция Фишера и сравнение с реализацией и приложениями LDA в scikit.

3. Иерархический Фишер