Нормализация перед PCA на разных типах данных - PullRequest
2 голосов
/ 18 марта 2019

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

    0       1       2       3       4    ...
  0.112   'Bob'   68.47   'Right'  9493  ...

Что-то вроде этого, где может быть строка, которая не имеет категориальной поддержки, например, имя,Хотя «Право» можно перечислить в категорию.

Я не уверен, что это даже необходимо, но я был бы признателен за некоторые предложения.

1 Ответ

3 голосов
/ 18 марта 2019

Во-первых, вы должны быть очень осторожны при запуске PCA с переменными, которые не имеют собственного порядка.Такие как категориальные данные.

Во-вторых, подумайте, что вообще означает применять PCA к таким вещам, как имена.PCA работает с векторами, длина которых имеет направление.Какова длина боб и в каком направлении он будет указывать?

Одна вещь, которую вы можете попробовать, - это преобразовать ваши строковые данные в N-граммы, которые были бы идеальными векторами.Еще одна попытка - применить преобразование TF-IDF, что опять-таки даст вам вектор.

После того, как вы применили одно из этих преобразований.У вас проблема с наличием векторов, встроенных в векторы.Вы можете попробовать объединить их в один вектор путем конкатенации и нормализации.Или вы можете отказаться от PCA и рассматривать свой набор данных как набор тензоров и применять что-то вроде многолинейного компонентного анализа , который является расширением PCA для тензоров.

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

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