Устранение распространенных заблуждений

Введение

Анализ главных компонентов (PCA) - это метод уменьшения количества функций, часто используемый в задачах кластеризации. Возникает вопрос: можем ли мы использовать PCA в задачах классификации? Является ли PCA лекарством от проклятия размерности?

PCA для классификации

Это ловушка: мы не должны использовать PCA в задачах классификации.

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

В качестве практического примера рассмотрим двухмерный набор данных игрушек с двумя классами:

  • c1=[(1,2),(2,3),(3,3),(4,5),(5,5)]
  • c2=[(1,0),(2,1),(3,1),(3,2),(5,3),(6,5)]

Постройте данные в виде разброса:

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

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

Хотя PCA «распределяет» данные в новом базисе и может очень помочь в обучении без учителя, нет никакой гарантии, что новые оси согласуются с дискриминационными особенностями в задаче классификации.

Линейный дискриминант Фишера

Чтобы уменьшить количество признаков, мы можем вместо этого рассмотреть линейный дискриминант Фишера (FLD). Представьте, что у нас есть 2 класса и d-мерные образцы (x.1, x.2,… x.n), и для простоты предположим, что у нас есть двумерный набор данных.

Рассмотрите возможность проецирования точки наблюдения xi на синюю линию, показанную на рисунке ниже. Направление линии задается единичным вектором v. Следовательно, скаляр vT xi - это расстояние проекции xi от начала координат. Следовательно, это vT xi является проекцией xi на одномерное подпространство.

Если µ1 и µ2 являются средними значениями классов 1 и 2 соответственно, то мы обозначаем µ1_hat и µ2_hat как средние значения проекций классов 1 и 2. В математической записи это выражается как:

Что, если бы мы использовали абсолютную разницу прогнозируемых средств в качестве меры разделения? То есть что, если мы максимизируем это:

На диаграмме разброса ниже показан пример проецирования наблюдений на любую из осей.

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

Решением этой проблемы является нормализация абсолютной разницы коэффициентом, пропорциональным дисперсии: разброс. Разброс - это просто дисперсия выборки, умноженная на количество наблюдений. Если yi - это спроецированные отсчеты для xi, то разброс для спроецированных отсчетов класса 1 определяется как:

Следовательно, FLD должен проецировать точки данных на линию в направлении v, которое максимизирует это уравнение:

  • Высокий номинал означает, что средства находятся далеко друг от друга.
  • Маленький s1_hat означает, что образцы класса 1 сгруппированы вокруг прогнозируемого среднего µ1_hat.
  • Маленький s2_hat означает, что образцы класса 2 сгруппированы вокруг прогнозируемого среднего µ2_hat.

Пусть S1 и S2 обозначают матрицы разброса исходных выборок классов 1 и 2 соответственно. Мы можем написать S1 as:

Кроме того, определите внутри матрицы разброса классов SW и между матрицей разброса классов SB as:

Возвращаясь к J (v), полученному относительно v, мы получаем обобщенную задачу на собственные значения и аккуратную окончательную формулу:

Реализация Python

Ниже представлена ​​математическая реализация. Для более полной реализации см. Sklearn.

использованная литература

Эта статья основана на лекции Университета Ватерлоо, которую можно найти здесь: https://www.csd.uwo.ca/~oveksler/Courses/CS434a_541a/Lecture8.pdf