Анализ основных компонентов (PCA) в сравнении с дополнительным древовидным классификатором для сокращения объема данных - PullRequest
1 голос
/ 21 февраля 2020

У меня есть набор данных, который состоит из 13 столбцов, и я хотел использовать PCA для сокращения данных, чтобы удалить ненужные столбцы. Моя проблема в том, что PCA на самом деле не показывает названия столбцов, но PC1 PC2 et c. Я обнаружил, что дополнительный классификатор дерева делает то же самое, но указывает на изменение каждого столбца. Я просто хотел убедиться, что они оба имеют одинаковую цель или они разные по своему результату. Кроме того, кто-нибудь может предложить более эффективные методы сокращения данных?

Мой последний вопрос: у меня есть код для классификатора Extra tree и я хочу подтвердить, правильно ли он был или нет?

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

from sklearn.ensemble import IsolationForest

from sklearn.ensemble import ExtraTreesClassifier 



df = pd.read_csv('D:\\Project\\database\\5-FINAL2\\Final After Simple Filtering.csv')

extra_tree_forest = ExtraTreesClassifier(n_estimators = 500, 
                                        criterion ='entropy', max_features = 'auto') 

extra_tree_forest.fit(df)

feature_importance = extra_tree_forest.feature_importances_ 

feature_importance_normalized = np.std([tree.feature_importances_ for tree in 
                                        extra_tree_forest.estimators_], 
                                        axis = 0) 

plt.bar(df.columns, feature_importance_normalized) 
plt.xlabel('Feature Labels') 
plt.ylabel('Feature Importances') 
plt.title('Comparison of different Feature Importances') 
plt.show()

Спасибо.

1 Ответ

1 голос
/ 21 февраля 2020

Эти два метода очень разные.

PCA не показывает названия функций, потому что уменьшение размерности с помощью PCA не имеет ничего общего с относительной важностью функций. PCA берет исходные данные и преобразует их в пространство, где каждая новая «особенность» (главный компонент) не зависит от других, и вы можете сказать, насколько важен каждый главный компонент для точного представления данных на основе его соответствующего собственного значения. Удаление наименее важных главных компонентов уменьшает размерность в пространстве главных компонентов, но не в исходном пространстве признаков - поэтому вам также необходимо выполнить PCA для всех будущих данных, а затем выполнить всю вашу классификацию для (сокращенных) векторов главных компонентов.

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

Обратите внимание, что в PCA основные компоненты с самыми высокими собственными значениями внести максимальный вклад в точное восстановление данных. Это не то же самое, что самый точный вклад в классификацию данных. Дополнительный древовидный классификатор является обратным: он сообщает, какие функции наиболее важны при классификации данных, а не при реконструкции данных.

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

...