Я попытаюсь объяснить это на примере. Предположим, у вас есть набор данных, который включает в себя множество функций о жилье, и ваша цель - классифицировать, является ли покупка хорошей или плохой (двоичная классификация). Набор данных включает в себя некоторые категориальные переменные (например, местоположение дома, состояние, доступ к общественному транспорту и т. Д.) И некоторые числа с плавающей точкой или целые числа (например, рыночная цена, количество спален и т. Д.). Первое, что вы можете сделать, это кодировать категориальные переменные. Например, если у вас есть 100 местоположений в вашем наборе данных, общий способ - кодировать их от 0 до 99. Возможно, вы даже можете кодировать эти переменные в режиме горячего кодирования (т. Е. Столбец 1 и 0 для каждого местоположения) в зависимости от классификатора, который вы планируете использовать. Теперь, если вы используете цену в миллион долларов, функция цены будет иметь гораздо более высокую дисперсию и, следовательно, более высокое стандартное отклонение. Помните, что мы используем квадратное значение разницы от среднего для вычисления дисперсии. Более крупный масштаб создавал бы большие значения, а квадрат большой стоимости возрастал бы быстрее. Но это не означает, что цена несет значительно больше информации по сравнению с местом расположения. В этом примере, однако, PCA придаст очень большой вес функции цены, и, возможно, вес категориальных функций почти снизится до 0. Если вы нормализируете свои функции, это обеспечивает справедливое сравнение объясненной дисперсии в наборе данных. Таким образом, хорошей практикой является нормализация среднего значения и масштабирование функций перед использованием PCA.
Да, вы должны означают нормализацию. Кроме того, вам может понадобиться масштабировать ваши функции, если функции имеют очень разные диапазоны. Я часто использую 'sklearn.preprocessing.StandardScaler'. – MhFarahani
Спасибо за информацию, вы сможете разместить это сообщение, если хотите. Но одна вещь все еще ставит меня под сомнение - почему масштаб, когда СПС рассматривает направления наибольшей дисперсии? Разве я не буду нарушать это при стандартизации данных до PCA? – Marko
Правило большого пальца состоит в том, что если ваши данные уже находятся в другом масштабе (например, каждая функция равна XX на 100 жителей), масштабирование будет удалять информацию, содержащуюся в том, что ваши функции имеют неравные отклонения. Если данные находятся в разных масштабах, вы должны нормализовать их перед запуском PCA. Однако всегда центрируйте данные. Если вам нужна более подробная информация, я рекомендую проверить [перекрестный перехват] (http://stats.stackexchange.com/). – ursan