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

Но наш мозг быстро отличает частицы песка, какими бы разнообразными они ни были по форме, от «примесей». Довольно просто, правда? Давайте перевернем ситуацию и попросим вас сделать вывод, что представляет собой данный образец горных пород, песка и минералов. Ответ, вроде, очевиден. Если в образце преобладают минеральные кристаллы, песок и камни являются примесями. С другой стороны, если фрагменты горных пород составляют большую часть образца, это нечистый «образец горной породы». Это наивный пример выбора главного компонента (компонентов) данной выборки. Анализ основных компонентов (PCA) — это метод, позволяющий сделать именно это. Проще говоря, PCA рисует точечную диаграмму всех N обучающих примеров в k-мерном пространстве признаков и находит, так сказать, наилучшее приближение распределения на нижнее p-мерное пространство.

Конечно, визуализировать этот процесс при k›3 невозможно, и нужна более четкая формулировка процесса. PCA выбирает измерения pk, которые охватываются направлениями p с наибольшей дисперсией. Существуют различные альтернативы этому определению: например, PCA выбирает направления p, которые лучше всего объясняют дисперсию в выборке. В этом есть смысл, поскольку многие функции могут практически не иметь корреляции с выходными данными. Давайте продемонстрируем.

Рассмотрим набор данных PIMA Indians Diabetes, доступный бесплатно на Kaggle. Набор данных состоит из нескольких переменных медицинских предикторов и одной целевой переменной Outcome, которая сообщает, есть ли у определенного пациента диабет. Кажется, что все переменные положительно коррелируют с Outcome, за исключением того, что Glucose и BMI больше коррелируют с ним, с более высоким значением корреляции Пирсона.

Если некоторые предикторы больше коррелируют с выходными данными, то они, безусловно, лучше объясняют дисперсию выборки! Таким образом, 1-й главный компонент должен интуитивно быть предиктором с наибольшей корреляцией с выходными данными. Хотя эта интуиция почти верна, есть одна загвоздка: может случиться так, что линейная комбинация этих предикторов на самом деле более коррелирована, чем любой из предикторов по отдельности! Например, количество спален/площадь лучше предсказывает цены на жилье, чем количество спален или площадь пола по отдельности. Удобно сформулировать все это в терминах линейной алгебры — на самом деле, название «пространство признаков» происходит ретроспективно от этой связи, где признаки являются направлениями (или координатными осями) Xᵢ в этом пространстве.

То, что вычисляет PCA, скорее является линейной комбинацией F(Xᵢ)=a.X=0, которая представляет собой гиперплоскость в пространстве признаков. Коэффициенты aᵢ выбираются так, чтобы максимизировать общую дисперсию проекций обучающих примеров на эту плоскость. 2-й главный компонент будет располагаться вдоль некоторой гиперплоскости, перпендикулярной 1-му, и так далее. Этот процесс усекается, когда основные компоненты p получены.

Хотя это красивая техника, очевидной проблемой PCA является интерпретируемость. Конечно, это работает и интуитивно понятно, но главный компонент F(Xᵢ)=3X₁-7X₂-2X₄+… не дает нам слишком много информации о данных. Решение этой проблемы интерпретируемости называется NMF, или Nон-негативной Mатриксной Fакторизацией. В то время как PCA работает в большинстве воспринимаемых ситуаций, NMF работает только в особых ситуациях. Рассмотрим обучающий набор данных X размером rстрокиcстолбцов/функций. Стремление уменьшить количество признаков превращается в задачу матричной факторизации, см. ниже.

Выберем количество компонентов n_components=k и разложим матрицу X (r,c) как X. = W x H, где W равно (r,k) и H равно (k,c). Такая факторизация уникальна, когда элементы X неотрицательны (за исключением некоторых технических моментов: см. эту статью), и поэтому W является основой в который X может быть расширен. Благодаря этой уникальности матрица X может быть повторно получена из W и H, поэтому это преобразование почти без потерь. Говоря простым языком, NMF позволяет записывать целое как сумму частей, а PCA — нет. Например, если бы мы применили NMF к статьям Википедии (TF-IDF), компоненты k автоматически сгруппировали бы слова, логически имеющие сходное значение: , фильмы и т.д.

Применим наши рассуждения к случаю светодиодных ламп. Любая цифра/буква, отображаемая с помощью светодиодных индикаторов, может быть записана как сумма 7 частей: выбор состояния 1 или 0 для каждой части вытягивает цифру/букву. Если мы используем PCA для распознавания изображений (относительно небольшой выборки) дисплеев, мы увидим первую строку следующего изображения.

Понятно, что, несмотря на то, что он имеет правильный формат, он не может разделить изображения на интуитивной основе. С другой стороны, невозможно простым способом восстановить исходный набор данных (изображения) с точки зрения этих компонентов. Термин, который специалисты по обработке изображений используют для такой ситуации, заключается в том, что проецирование на главные компоненты представляет собой процесс с потерями. Тем не менее, NMF справляется с этой задачей довольно хорошо. Как видно в нижнем ряду, он разбивает светодиодные вывески на отдельные компоненты, которые мы ожидаем. Поскольку процесс возврата X представляет собой простое матричное умножение H=model.components_ на W=nmf_features=fit_transform(dateset), NMF не имеет потерь и интерпретируется! Неудивительно, что NMF имеет множество применений в обработке изображений, обработке естественного языка и т. д.