СПС для категориальных признаков?
В моем понимании, я думал, что PCA может выполняться только для непрерывных объектов. Но при попытке понять разницу между кодировкой onehot и кодировкой label пришел через сообщение по следующей ссылке:
Когда использовать одно горячее кодирование vs LabelEncoder vs DictVectorizor?
Он утверждает, что одно горячее кодирование, за которым следует PCA, является очень хорошим методом, который в основном означает, что PCA применяется для категориальных признаков. Отсюда путаница, пожалуйста, предложите мне на такой же.4 ответа:
Я не согласен с остальными.
В то время как Вы можете использовать PCA на двоичных данных (например, один-горячие закодированные данные), что не означает, что это хорошая вещь, или это будет работать очень хорошо.
PCA определяется длянепрерывных переменных. Он пытается минимизировать дисперсию (=квадратные отклонения). Концепция квадратичных отклонений разрушается, когда у вас есть двоичные переменные.
Так что да, вы можете использовать PCA. И да, вы получаете выход. Это даже наименее квадратный результат-это не так, как если бы ППШ бы обработка выхода онлайн / оффлайн на такие данные. Это работает, но это просто гораздо менее значимо, чем вы хотели бы; и предположительно менее значимо, чем, например, частый поиск паттернов.
В основном, PCA находит и устраняет менее информативную (дублирующую) информацию о наборе признаков и уменьшает размерность пространства признаков. Другими словами, представим себе N-мерное гиперпространство, в котором PCA находит такие M (M
Таким образом, не важно, являются ли объекты непрерывными или нет. нет.
PCA широко используется на многих приложениях. В основном для устранения шумных, менее информативных данных, которые поступают от некоторых датчиков или оборудования до классификации / распознавания.
MCA-это известный метод уменьшения размерности категориальных данных. В R есть много пакетов для использования MCA и даже смешивания с PCA в смешанных контекстах. В python также существует библиотека mca. MCA применяет аналогичную математику, что PCA, действительно, французский статистик говорил: "анализ данных заключается в том, чтобы найти правильную матрицу для диагонализации"
Http://gastonsanchez.com/visually-enforced/how-to/2012/10/13/MCA-in-R/
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]])