PCA Для категоричных функций?
В моем понимании, я думал, что PCA может выполняться только для непрерывных функций. Но, пытаясь понять разницу между кодировкой onehot и кодировкой меток, пришло сообщение в следующей ссылке:
Когда использовать One Hot Encoding против LabelEncoder против DictVectorizor?
В нем говорится, что одно горячее кодирование, за которым следует PCA, является очень хорошим методом, что в основном означает, что PCA применяется для категориальных функций. Следовательно, запутался, пожалуйста, предложите мне по тому же
7 ответов
Я не согласен с другими.
В то время как вы можете использовать PCA для двоичных данных (например, данных с горячим кодированием), это не означает, что это хорошая вещь, или она будет работать очень хорошо.
PCA предназначен для непрерывных переменных. Он пытается минимизировать дисперсию (= квадратичные отклонения). Понятие квадратов отклонений разрушается, когда у вас есть бинарные переменные.
Так что да, вы можете использовать PCA. И да, вы получите выход. Это даже наименьший квадрат выходных данных - это не так, как если бы PCA перестал работать с такими данными. Это работает, но это гораздо менее значимо, чем вы хотели бы; и предположительно менее значимый, чем, например, частая добыча паттернов.
MCA - это известный метод сокращения категориальных данных. В R есть много пакетов для использования MCA и даже смешивания с PCA в смешанных контекстах. В питоне тоже есть библиотека mca. MCA применяет те же математические методы, которые PCA, как говорил французский статистик, "анализ данных заключается в поиске правильной матрицы для диагонализации".
http://gastonsanchez.com/visually-enforced/how-to/2012/10/13/MCA-in-R/
По сути, PCA находит и устраняет менее информативную (дублирующую) информацию о наборе функций и уменьшает размерность пространства признаков. Другими словами, представьте себе N-мерное гиперпространство, PCA находит такие особенности M (M Таким образом, не важно, являются ли функции непрерывными или нет. PCA широко используется во многих приложениях. Главным образом для устранения шумных, менее информативных данных, которые поступают от какого-либо датчика или оборудования перед классификацией / распознаванием.
Недавняя публикация показывает большие и значимые результаты при вычислении PCA на категориальных переменных, рассматриваемых как симплексные вершины.
Ковариация и PCA для категориальных переменных, Хиротака Ниитсума и Такаши Окада, 2018.
В этой статье автор использует PCA для объединения категориальных признаков высокой кардинальности. Если я правильно понял, они сначала вычисляют условные вероятности для каждого целевого класса. Затем они выбирают пороговый гиперпараметр и создают новую бинарную переменную для каждой условной вероятности класса для каждого объединяемого категориального признака. PCA выполняется для объединения новых двоичных переменных с количеством оставшихся компонентов, указанным в качестве гиперпараметра.
PCA - это метод уменьшения размерности, в котором может применяться любой набор функций. Вот пример использования OneHotEncoded (то есть категориальных) данных:
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X = enc.fit_transform([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]).toarray()
print(X)
> array([[ 1., 0., 1., 0., 0., 0., 0., 0., 1.],
[ 0., 1., 0., 1., 0., 1., 0., 0., 0.],
[ 1., 0., 0., 0., 1., 0., 1., 0., 0.],
[ 0., 1., 1., 0., 0., 0., 0., 1., 0.]])
from sklearn.decomposition import PCA
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X)
print(X_pca)
> array([[-0.70710678, 0.79056942, 0.70710678],
[ 1.14412281, -0.79056942, 0.43701602],
[-1.14412281, -0.79056942, -0.43701602],
[ 0.70710678, 0.79056942, -0.70710678]])
Я думаю, что pca уменьшает var, используя линейное соотношение между переменными. Если есть только одна категоральная переменная, закодированная в одном снимке, между одноцветными столбцами нет линейной зависимости. поэтому он не может уменьшиться на pca.
Но если существуют другие переменные, однонаправленные столбцы могут быть представлены линейным отношением других переменных.
Так что, может быть, он может уменьшиться на pca, зависит от отношения vars.