Лучший способ выбора функции с помощью PCA (обсуждение) - PullRequest
0 голосов
/ 29 мая 2020

Терминология :

Компонент: P C

loading-score[i,j]: функция j в PC[i]

Вопрос:

Я знаю, что вопрос о выборе функции задается несколько раз здесь, в StackOverflow (SO) и на других технических страницах, и предлагает разные ответы / обсуждения. Вот почему я хочу открыть обсуждение различных решений, а не публиковать его как общий вопрос, поскольку это уже сделано. между исходными функциями и компонентами (здесь) , чтобы получить их корреляцию, обсуждение на SO здесь предполагает, что вы можете говорить только о важных функциях как о показателях загрузки в компоненте (и не использовать эту важность в пространстве ввода), и другое обсуждение в SO (которое я не могу найти в данный момент) предполагает, что важность для feature[j] будет abs(sum(loading_score[:,j]), т.е. сумма абсолютного значения loading_score[i,j] для всех i компонентов.

Я лично думаю, что способ получить важность функции - это абсолютная сумма, где каждое loading_score[i,j] взвешивается объясненной дисперсией компонента i т.е.

imp_feature[j]=sum_i (abs(loading_score[i,j])*explained_variance[i].

1 Ответ

0 голосов
/ 30 мая 2020

Ну, универсального способа выбора функций нет; это полностью зависит от набора данных и некоторых имеющихся сведений о наборе данных. Я приведу несколько примеров, которые могут быть полезны.

Поскольку вы спросили о PCA, изначально он разделяет весь набор данных на два набора, в которых есть дисперсии. С другой стороны, ICA (Независимый анализ компонентов) может извлекать несколько функций одновременно. Посмотрите на в этом примере ,

enter image description here

В этом примере мы смешиваем три независимых сигнала и пытаемся разделить их с помощью ICA и PCA. В этом случае ICA делает это лучше, чем PCA. В общем, если вы выполните поиск по Blind Souce Separation (BSS), вы можете найти больше информации об этом. Кроме того, в этом примере мы знаем независимые компоненты, поэтому разделение выполняется легко. В общем, мы не знаем количество компонентов. Следовательно, вам, возможно, придется предположить, основываясь на некоторой предварительной информации о наборе данных. Кроме того, вы можете использовать LDA (линейный дискриминантный анализ), чтобы уменьшить количество функций.

После того, как вы извлечете компоненты P C, используя любой из методов, мы можем визуализировать это следующим образом. Если предположить, что эти извлеченные компоненты являются случайными величинами, то есть x, y, z

enter image description here enter image description here

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

Возвращаясь к вашему предложению,

imp_feature[j]=sum_i (abs(loading_score[i,j])*explained_variance[i]

Я бы не рекомендовал этот способ по следующим причинам: abs(loading_score[i,j]) когда мы получим абсолютные значения, вы можете потерять положительные или отрицательные корреляции рассматриваемых функции. explained_variance[i] можно использовать для нахождения корреляции между функциями, но умножение не имеет никакого смысла.

Изменить: В PCA каждый компонент имеет объясненную дисперсию. Объясненная дисперсия - это соотношение между дисперсией отдельных компонентов и общей дисперсией (суммой всех дисперсий отдельных компонентов). Значимость характеристики может быть измерена величиной объясненной дисперсии.

В общем, то, что я хочу сказать, выбор функций полностью зависит от набора данных и значимости функций. PCA - это всего лишь одна из техник. Frist разбирается в свойствах объектов и набора данных. Затем попробуйте извлечь функции. Надеюсь это поможет. Если вы можете предоставить нам точный пример, мы можем предоставить больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...