Изменения

Перейти к: навигация, поиск

Уменьшение размерности

5714 байт добавлено, 02:56, 23 января 2020
Отмена правки 72392, сделанной Ile86171 (обсуждение)
Под '''Метод главных компонентуменьшением размерности''' (англ. ''Principal Components Analysis, PCAdimensionality reduction'') — один из основных способов уменьшить размерность в машинном обучении подразумевается уменьшение числа признаков набора данных, потеряв наименьшее количество информации. Изобретен К. Пирсоном (англ. Karl Pearson) <ref>[https://zenodo.org/record/1430636 Pearson, K. (1901). "On Lines and Planes of Closest Fit to Systems of Points in Space"]</ref> Наличие в 1901 г. Применяется во многих областяхнем признаков избыточных, таких как распознавание образовнеинформативных или слабо информативных может понизить эффективность модели, компьютерное зрениеа после такого преобразования она упрощается, сжатие и соответственно уменьшается размер набора данных в памяти и т.пускоряется работа алгоритмов ML на нем. Вычисление главных компонент сводится к вычислению собственных векторов и собственных значений ковариационной матрицы исходных данных или к [[Сингулярное разложение|сингулярному разложению]] матрицы данных. Иногда метод главных компонент называют преобразованием Карунена-Лоэва Уменьшение размерности может быть осуществлено методами выбора признаков (англ. ''Karhunen-Loevefeature selection'') <ref>[http://fourier.eng.hmc.edu/e161/lectures/klt/node3.html Karhunen-Loeve Transform (KLT)]</ref> или преобразованием Хотеллинга выделения признаков (англ. ''Hotelling transformfeature extraction'').==Выбор признаков==Методы '''выбора признаков''' оставляют некоторое подмножество исходного набора признаков, избавляясь от признаков избыточных и слабо информативных. Основные преимущества этого класса алгоритмов:*Уменьшение вероятности [[переобучение|переобучения]];*Увеличение точности предсказания модели;*Сокращение времени обучения;*Увеличивается семантическое понимание модели.
Все методы выбора признаков можно разделить на 5 типов, которые отличаются алгоритмами выбора лишних признаков.===Фильтры=Формальная постановка задачи==[[File:Pearson pca example.jpg|300px|thumb|right|Иллюстрация к работе К'''Фильтры''' (англ. Пирсона (1901''filter methods''): даны точки <tex> P_i</tex> измеряют релевантность признаков на плоскости, <tex> p_i</tex> — расстояние от <tex> P_i</tex> до прямой <tex> AB</tex>. Ищется прямая <tex> AB</tex>, минимизирующая сумму <tex>основе функции $\sum_i p_i^2</tex>]]Пусть имеется mu$n$ числовых признаков $f_j(x), j = 1, ... , n$. Объекты обучающей выборки будем отождествлять с их признаковыми описаниями: и затем решают по правилу $x_i \equiv (f_1(x_i), ..., f_n(x_i)), i = 1, ..., l$. Рассмотрим матрицу $Fkappa$, строки которой соответствуют признаковым описаниям обучающих объектов:$$F_{l \times n} =\begin{pmatrix}f_1(x_1) & ... & f_n(x_1)\\... & ... & ...\\f_1(x_l) & .какие признаки оставить в результирующем множестве.. & f_n(x_l)\end{pmatrix}=\begin{pmatrix}x_1\\...\\x_l\end{pmatrix}.$$
Обозначим через $z_i = Фильтры могут быть:*Одномерные (g_1(x_iангл. ''univariate''), .{{---}} функция $\mu$ определяет релевантность одного признака по отношению к выходным меткам.В таком случае обычно измеряют "качество" каждого признака и удаляют худшие;*Многомерные (англ., g_m(x_i''multivariate''))$ признаковые описания тех же объектов в новом пространстве $Z = \mathbb{R{---}^{m}функция $ меньшей размерности, \mu$m < n$:определяет релевантность некоторого подмножества исходного множества признаков относительно выходных меток.
Распространенными вариантами для $\mu$G_являются:*Коэффициент ранговой корреляции Спирмена <ref>[https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient Определение коэффициента ранговой корреляции Спирмена]</ref>(англ. ''Spearman's rank correlation coefficient''): $p(x, y)=\displaystyle \frac{l \times msum_{i, j}(x_{ij} =-\beginbar{pmatrixx_j}g_1)(x_1y_i-\bar{y}) & ... & g_m}{\sqrt{\sum_{i, j}(x_1x_{ij}-\bar{x_j})^2\sum_i(y_i-\bar{y})^2}}$;*Information gain<ref>[https://en.wikipedia.. & ... & ...org/wiki/Information_gain_in_decision_trees Определение information gain]</ref>: $IG(x, y)=\displaystyle -\g_1sum_{i=1}^kp(x_lc_i) & ... & g_m\log_2{(p(x_lc_i))}+\endsum_{i=1}^{pmatrixn}=p(t_i)\beginsum_{pmatrixj=1}z_1\\...\\z_l\end^kp(c_j|t_i)log_2{pmatrix(p(c_j|t_i))}$, и другие.$$
ПотребуемПреимуществом группы фильтров является простота вычисления релевантности признаков в наборе данных, чтобы исходные признаковые описания можно было восстановить но недостатком в таком подходе является игнорирование возможных зависимостей между признаками.===Оберточные методы===[[File:Feature_selection_wrapper_rus.png|450px|thumb|right|Процесс работы оберточных методов]]'''Оберточные методы''' (англ. ''wrapper methods'') находят подмножество искомых признаков последовательно, используя некоторый классификатор как источник оценки качества выбранных признаков, т.е. этот процесс является циклическим и продолжается до тех пор, пока не будут достигнуты заданные условия останова. Оберточные методы учитывают зависимости между признаками, что является преимуществом по новым описаниям сравнению с помощью некоторого линейного преобразованияфильтрами, определяемого матрицей $U = (u_{js})_{n \times m}$:к тому же показывают большую точность, но вычисления занимают длительное время, и повышается риск [[переобучение|переобучения]].
$$\hat{f}_jСуществует несколько типов оберточных методов: детерминированные, которые изменяют множество признаков по определенному правилу, а также рандомизированные, которые используют генетические алгоритмы для выбора искомого подмножества признаков. Среди детерминированных алгоритмов самыми простыми являются:*SFS (xSequential Forward Selection) = \sum_{s = 1{---}^{m} g_sжадный алгоритм, который начинает с пустого множества признаков, на каждом шаге добавляя лучший из еще не выбранных признаков в результирующее множество;*SBS (xSequential Backward Selection)u_{js{---}} алгоритм обратный SFS, \; j = 1который начинает с изначального множества признаков, и удаляет по одному или несколько худших признаков на каждом шаге..., n, \; x \in X,$$
или в векторной записиПопулярным оберточным методом является SVM-RFE (SVM-based Recursive Feature Elimination), который иногда также обозначается как встроенный <ref>[https: $\hat{x} = z U^T$//benthamopen.com/FULLTEXT/TOBIOIJ-11-117/ C. Восстановленное описание $\hat{x}$ Embedded method]</ref>. Этот метод использует как классификатор [[Метод опорных векторов (SVM)| SVM]]<sup>[на 28.01.19 не обязано в точности совпадать создан]</sup> и работает итеративно: начиная с исходным описанием $x$полного множества признаков обучает классификатор, ранжирует признаки по весам, но которые им присвоил классификатор, убирает какое-то число признаков и повторяет процесс с оставшегося подмножества фичей, если не было достигнуто их отличие требуемое количество. Таким образом, этот метод очень похож на объектах обучающей выборки должно быть встроенный, потому что непосредственно использует знание того, как можно меньше при выбранной размерности $m$устроен классификатор. Будем искать одновременно и матрицу новых признаковых описаний $G$, и матрицу линейного преобразования $U$, при которых суммарная невязка восстановленных описаний минимальна:
$$\Delta^2(G, U) = \sum_{i = 1}^{l} \| \hat{x}_i - x_i \|^2 = \sum_{i Встроенные методы=== 1}^{l} \[[File:Feature_selection_embedded_rus.png| z_i U^T - x_i \450px|^2 = \thumb| GU^T - F \right|^2 \to \mathop{min}_{GПроцесс работы встроенных методов]]Группа '''встроенных методов''' (англ. ''embedded methods'') очень похожа на оберточные методы, U}но для выбора признаков используется непосредственно структуру некоторого классификатора. В оберточных методах классификатор служит только для оценки работы на данном множестве признаков, тогда как встроенные методы используют какую-то информацию о признаках,$$которую классификаторы присваивают во время обучения.
где все нормы евклидовыОдним из примеров встроенного метода является реализация на [[Дерево решений и случайный лес| случайном лесе]]: каждому дереву на вход подаются случайное подмножество данных из датасета с каким-то случайным набор признаков, в процессе обучения каждое из деревьев решений производит "голосование" за релевантность его признаков, эти данные агрегируются, и на выходе получаются значения важности каждого признака набора данных. Дальнейший выбор нужных нам признаков уже зависит от выбранного критерия отбора.
Будем предполагатьВстроенные методы используют преимущества оберточных методов и являются более эффективными, что матрицы $G$ и $U$ невырождены: $rank \при этом на отбор тратится меньше времени, G = rank \уменьшается риск [[переобучение|переобучения]], U = m$но т. Иначе существовало бы представление $\bar{G} \bar{U}^T = G U^T$ с числом столбцов в матрице $\bar{G}$, меньшим $m$к. Поэтому интересны лишь случаиполученный набор признаков был отобран на основе знаний о классификаторе, когда $m \leq rank \то есть вероятность, F$что для другого классификатора это множество признаков уже не будет настолько же релевантным.
==Решение=Другие методы===[[File:Feature_selection_ensemble_rus.png|thumb|Один из примеров процесса работы ансамблевых методов]]Есть и другие методы выбора признаков: '''гибридные''' (англ. ''hybrid methods'') и '''ансамблевые''' (англ. ''ensemble methods''). '''Гибридные методы''' комбинируют несколько разных методов выбора признаков, например, некоторое множество фильтров, а потом запускают оберточный или встроенный метод. Таким образом, гибридные методы сочетают в себе преимущества сразу нескольких методов, и на практике повышают эффективность выбора признаков.
Исчерпывающее решение сформулированной задачи даёт следующая теорема'''Ансамблевые методы''' применяются больше для наборов данных с очень большим числом признаков. В данном подходе для начального множества признаков создается несколько подмножеств признаков, и эти группы каким-то образом объединяются, чтобы получить набор самых релевантных признаков. Это довольно гибкая группа методов, т.к. для нее можно применять различные способы выбора признаков и объединения их подмножеств.
<div style="clear:{{{Теорема1|statement = Если $m \leq rank \, F$, то минимум $\Delta^2(G, U)$ достигается, когда столбцы матрицы $U$ есть собственные векторы $F^T F$, соответствующие $m$ максимальным собственным значениям. При этом $G = F U$, матрицы $U$ и $G$ ортогональны.both}}};"></div>
|proof = Запишем необходимые условия минимума==Примеры кода scikit-learn===Пример кода, реализующего функцию оценки фильтра на основе коэффициента ранговой корреляции: # Импорт библиотек import pandas as pd import numpy as np # Вспомогательная функция для расчета корреляции def correlation(X, Y): return np.cov(X, Y) / np.sqrt(np.var(X) * np.var(Y))
<tex> # Сам фильтр на основе метрики ранговой корреляции\frac{\partial \Delta^2}{\partial G} # Аргументы X -- значения объектов датасета для какой-то фичи, Y -- метки этих объектов def measure_spearmans(X, Y): xr = pd.Series(X).rank(G U^T - F) U yr = 0;\\ \frac{\partial \Delta^2}{\partial U} = G^T pd.Series(G U^T - FY) = 0.rank()</tex> return correlation(xr, yr)
Поскольку искомые матрицы $G$ и $U$ невырожденыПример кода, отсюда следует: <tex>G = F U (U^T U)^{реализующего SVM-1};\\ U = F^T G (G^T G)^{-1}. </tex> Функционал $\Delta^2(G, U)$ зависит только от произведения матриц $G U^T$, поэтому решение задачи $\Delta^2(G, U) \to \mathop{min}_{G, U}$ определено с точностью до произвольного невырожденного преобразования $RRFE wrapper: G U^T = (G R) (R^{-1} U^T)$. Распорядимся свободой выбора $R$ так, чтобы матрицы $U^T U$ и $G^T G$ оказались диагональными. Покажем, что это всегда возможно. # Импорт библиотекПусть $\tilde{G} \tilde{U}^T$ {{---}} произвольное решение задачи. Матрица $\tilde{U}^T \tilde{U}$ симметричная, невырожденная, положительно определенная, поэтому существует невырожденная матрица $S_{m \times m}$ такая, что $S^{-1} \tilde{U}^T \tilde{U} (S^{-1})^T = I_m$. import numpy as np import pandas as pdМатрица $S^T \tilde{G}^T \tilde{G} S$ симметричная и невырожденная, поэтому существует ортогональная матрица $T_{m \times m}$ такая, что $T^T (S^T \tilde{G}^T \tilde{G} S) T = diag(\lambda_1, ..., \lambda_m) \equiv \Lambda$ {{---}} диагональная матрица. По определению ортогональности $T^T T = I_m$. from sklearn import svm
Преобразование $R # X -- наш датасет, Y -- массив меток # N -- число признаков, которые хотим оставить, step -- сколько фичей удаляется на каждой итерации # Возвращает массив из булевых переменных размерностью 1x[число признаков], показывающий, отбрасываем признак или нет def RFE(X, Y, N, step = 10): # cache_size нужен, если набор данных большой, иначе можно опустить clfRFE = svm.SVC(kernel='linear', cache_size=1024) featureCount = S T$ невырожденоX. Положим $G shape[1] featureList = \tilde{G} R$np.arange(0, $U^T featureCount ) included = R^{np.full(featureCount, True) curCount = featureCount while curCount > N: actualFeatures = featureList[included] Xnew = X[:, actualFeatures] clfRFE.fit(Xnew, Y) curStep = min(step, curCount - N) elim = np.argsort(np.abs(clfRFE.coef_[0]))[:curStep] included[actualFeatures[elim]] = False curCount -= curStep return included==Выделение признаков==Другим способом уменьшить размерность входных данных является выделение признаков. Эти методы каким-1} \tilde{U}^T$то образом составляют из уже исходных признаков новые, все также полностью описывающие пространство набора данных, но уменьшая его размерность и теряя в репрезентативности данных, т.к. становится непонятно, за что отвечают новые признаки.Все методы feature extraction можно разделить на '''линейные''' и '''нелинейные'''. Тогда
Одним из самых известных методов '''линейного''' выделения признаков является [[Метод главных компонент (PCA)| PCA]]<texsup>G^T G = T^T (S^T \tilde{G}^T \tilde{G} S) T = \Lambda;\\ U^T U = T^{-1} (S^{-1} \tilde{U}^T \tilde{U} (S^{-1})^T) (T^{-1})^T = (T^T T)^{-1} = I_m[на 28.01.19 не создан]</texsup>(Principal Component Analysis, рус. ''метод главных компонент''). Основной идеей этого метода является поиск такой гиперплоскости, на которую при ортогональной проекции всех признаков максимизируется дисперсия. Данное преобразование может быть произведено с помощью сингулярного разложения матриц и создает проекцию только на линейные многомерные плоскости, поэтому и метод находится в категории линейных.
В силу К '''нелинейным''' методам, например, могут быть отнесены методы отображающие исходное пространство признаков на нелинейные поверхности или топологические многообразия. Одним из таких алгоритмов является [[Стохастическое вложение соседей с t-распределением |t-SNE]]<sup>[на 28.01.19 не создан]</sup> (t-distributed Stochastic Neighbor Embedding, рус. ''стохастическое вложение соседей с t-распределением''). Данный метод состоит из двух шагов: изначально строится распределение вероятностей по всем парам точек набора данных, каждая условная вероятность $G U^T = \tildep_{Gj|i} \tilde{U}^T$ матрицы которого означает насколько точка $X_j$Gблизка к точке $ и X_i$Uпри гауссовом распределении вокруг $ являются решением задачи X_i$. Данное распределение как метрику похожести использует евклидово расстояние. Алгоритм старается получить отображение из точек размерности $\Deltamathbb{R}^2(G, U) k$ в меньшую размерность $\to \mathopmathbb{minR}_{G^d$, для этого вводится еще одно распределение, описывающее насколько точки из нового пространства похожи друг на друга, U}$ и удовлетворяют необходимому условию минимумано используя при этом t-распределение Стьюдента с одной степенью свободы. Как метрику похожести двух распределений используется дивергенция Кульбака-Лейблера<ref>[https://en.wikipedia. Подставим матрицы $G$ org/wiki/Kullback%E2%80%93Leibler_divergence Дивергенция Кульбака-Лейблера]</ref>, и чтобы найти точки новой размерности $Ud$ запускается градиентный спуск для минимизации этой величины. ===Пример кода scikit-learn===Пример выделения признаков с помощью PCA вscikit-learn: # Импорт библиотек from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split
<tex> X = ... # загрузка XG Y = F U (U^T U)^{-1};\\ U ... # загрузка Y # Разделение данных на train и test Xtrain, Xtest, Ytrain, Ytest = F^T G train_test_split(G^T GX, Y)^{-1}. </tex>
Благодаря диагональности $G^T G$ clf = ... # берем какой-то классификатор # Обучаем PCA для выделения 5 признаков pca = PCA(n_components=5) pca.fit(Xtrain) # Изменяем наши наборы данных под выбранные признаки Xtrain = pca.transform(Xtrain) Xtest = pca.transform(Xtest) # Обучаем классификатор и $U^T U$ соотношения существенно упростятсяпроверяем точность его работы clf.fit(Xtrain, Ytrain) print ("Score:%.6f" % clf.score(Xtest, Ytest)) ===Пример на языке Scala===SBT зависимость: libraryDependencies '''+=''' "com.github.haifengl" '''%%''' "smile-scala" '''%''' "1.5.2"Пример уменьшение размерности используя smile.feature.GAFeatureSelection<ref>[https://haifengl.github.io/smile/feature.html#genetic-algorithm-feature-selection Smile, Genetic Algorithm Based Feature Selection]</ref>: '''import '''smile.classification._ '''import '''smile.data._ '''import '''smile.feature.GAFeatureSelection '''import '''smile.read '''import '''smile.validation.Accuracy
<texspan style="color:#3D9970>// Загрузка данных</span> '''val '''data = read.arff("data/weka/segment-test.arff", 19) '''val '''(x, y) = data.unzipIntG '''val '''trainer = F U;\\ U \Lambda '''new '''GradientTreeBoost.Trainer(100) '''val '''measure = F^T G'''new '''Accuracy <span style="color:#3D9970>// Cоздание генетического алгоритма и его настройка.</span> '''val '''selector = '''new '''GAFeatureSelection <span style="color:#3D9970>// Размер популяции - 50, количество поколений - 20 </span> <span style="color:#3D9970>// Каждая возращаемая BitString содержит фичи и их качество.</texspan> '''val '''result = selector.learn(50, 20, trainer, measure, x, y, 5) result.foreach { bits => print(100*bits.fitness) println(bits.bits.mkString(" ")) }
Подставим первое соотношение во второе, получим $U \Lambda = F^T F U$==Пример на языке Java===Пример уменьшения размерности датасета с применением <code>weka.attributeSelection. Это означает, что столбцы матрицы $U$ обязаны быть собственными векторами матрицы $F^T F$, а диагональные элементы $\lambda_1, PrincipalComponents</code><ref>[http://weka.sourceforge.net/doc.dev/weka/attributeSelection/PrincipalComponents.html/ Weka, \lambda_m$ - соответствующими им собственными значениями.PCA]</ref>
Аналогично, подставив второе соотношение в первое, получим $G \Lambda = F F^T G$, то есть столбцы матрицы $G$ являются собственными векторами $F F^T$, соответствующими тем же самым собственным значениям<code>Maven</code> зависимость: <dependency> <groupId>nz.ac.waikato.cms.weka</groupId> <artifactId>weka-stable</artifactId> <version>3.8.0</version> </dependency>
Подставляя $G$ и $U$ в функционал $\Delta^2(G, U)$, находим: '''import''' weka.attributeSelection.PrincipalComponents; '''import''' weka.core.Instances; '''import''' weka.filters.Filter; '''import''' weka.filters.unsupervised.attribute.NumericToNominal; '''import''' java.io.BufferedReader; '''import''' java.io.FileReader;
<texfont color="green">\Delta^2(G, U) = \| F - G U^T \|^2 = tr \, (F^T - U G^t)(F - G U^T) = tr \, F^T (F - G U^T) = tr \, F^T F - tr \, F^T G U^T = \| F \|^2 - tr \, U \Lambda U^T = \| F \|^2 - tr \, \Lambda = \sum_{j = 1}^{n} \lambda_j - \sum_{j = 1}^{m} \lambda_j - \sum_{j = m + 1}^{n} \lambda_j,// load dataset</texfontгде $\lambda_1 , ..., \lambda_n$ - все собственные значения матрицы $F^T F$. Минимум $\Delta^2$ достигается, когда $\lambda_1, ..., \lambda_m$ {{---}} наибольшие $m$ из $n$ собственных значений. Собственные векторы $u_1, ..., u_m$, отвечающие максимальным собственным значениям, называют '''var'главными компонентами''.}} data ==Свойства== ===Связь с сингулярным разложением=== Если $m = n$, то $\Delta^2new Instances(new BufferedReader(G, U) = 0$. В этом случае представление $F = G U^T$ является точным и совпадает с сингулярным разложением: $F = G U^T = V D U^T$, если положить $G = V D$ и $\Lambda = D^2$. При этом матрица $V$ ортогональна: $V^T V = I_m$. Если $m < n$, то представление $F \approx G U^T$ является приближённым. Сингулярное разложение матрицы $G U^T$ получается из сингулярного разложения матрицы $F$ путём отбрасывания new FileReader(обнуления) $n "data/bank- m$ минимальных собственных значенийdata.arff"))); ===Преобразование Карунена–Лоэва=== Диагональность матрицы $G^T G = \Lambda$ означает, что новые признаки $g_1, ..., g_m$ не коррелируют на объектах из обучающей выборки. Ортогональное преобразование $U$ называют ''декоррелирующим '' или преобразованием 'var'Карунена–Лоэва''. Если $m = n$, то о прямое и обратное преобразование вычисляются с помощью одной и той же матрицы $U: F filter = G U^T$ и $G = F U$. ===Эффективная размерность=== Главные компоненты содержат основную информацию о матрице $F$. Число главных компонент $m$ называют также ''эффективной размерностью'' задачи. На практике её определяют следующим образом. Все собственные значения матрицы $F^T F$ упорядочиваются по убыванию: $\lambda_1 \geq ... \geq \lambda_n \geq 0$. Задаётся пороговое значение $\epsilon \in [0, 1]$, достаточно близкое к нулю, и определяется наименьшее целое $m$, при котором относительная погрешность приближения матрицы $F$ не превышает $\epsilon$: $$Enew NumericToNominal(m) = \frac{\| G U^T - F \|^2}{\| F \|^2} = \frac{\lambda_{m + 1} + ... + \lambda_n}{\lambda_1 + ... + \lambda_n} \leq \epsilon .$$; Величина $E(m)$ показывает, какая доля информации теряется при замене исходных признаковых описаний длины $n$ на более короткие описания длины $m$ filter. Метод главных компонент особенно эффективен в тех случаях, когда $EsetInputFormat(m)$ оказывается малым уже при малых значениях $m$. Если задать число $\epsilon$ из априорных соображений не представляется возможным, прибегают к ''критерию «крутого обрыва»''. На графике $E(mdata)$ отмечается то значение $m$, при котором происходит резкий скачок: $E(m - 1) \gg E(m)$, при условии, что $E(m)$ уже достаточно мало.; data ==Визуализация многомерных данных== Метод главных компонент часто используется для представления многомерной выборки данных на двумерном графикеFilter. Для этого полагают $m = 2$ и полученные пары значений $useFilter(g_1(x_i)data, g_2(x_ifilter)), i = 1, ..., l$, наносят как точки на график. Проекция на главные компоненты является наименее искаженной из всех линейных проекций многомерной выборки на какую-либо пару осей. Как правило, в осях главных компонент удаётся увидеть наиболее существенные особенности исходных данных, даже несмотря на неизбежные искажения. В частности, можно судить о наличии кластерных структур и выбросов. Две оси $g_1$ и $g_2$ отражают «две основные тенденции» в данных. Иногда их удаётся интерпретировать, если внимательно изучить, какие точки на графике являются «самыми левыми», «самыми правыми», «самыми верхними» и «самыми нижними». Этот вид анализа не позволяет делать точные количественные выводы и обычно используется;с целью понимания данных. Аналогичную роль играют многомерное шкалирование <reffont color="green">[https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D1%88%D0%BA%D0%B0%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 Многомерное шкалирование]initialize the PCA-based selector</reffont> и карты Кохонена <ref>[https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D1%83%D1%8E%D1%89%D0%B0%D1%8F%D1%81%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0_%D0%9A%D0%BE%D1%85%D0%BE%D0%BD%D0%B5%D0%BD%D0%B0 Самоорганизующаяся карта Кохонена]</ref>.  '''var''' pca ==Пример кода scikit-learn==Пример применения PCA к датасету Iris для уменьшения размерности:new PrincipalComponents(); <span stylefont color="color:#3D9970green"># Импорт библиотек// dimensionality reduction is achieved through selecting enough eigenvectors to account</spanfont> import numpy as np import matplotlib.pyplot as plt from sklearn import decomposition from sklearn import datasets  <span stylefont color="color:#3D9970green"># Загрузка данных// for some percantege of the variance in the original data</spanfont> centers = [[1, 1], [-1, -1], [1, -1]] iris = datasetspca.load_irissetVarianceCovered(0.95); X = irispca.buildEvaluator(data y = iris.target  [[File:Pca iris example.png|275px|thumb|right|Применения PCA к датасету Iris]]); <span stylefont color="color:#3D9970green"># Преобразование данных датасета Iris, уменьшающее размерность до 2// transform the dataset</spanfont> pca data = decomposition.PCA(n_components=3) pca.fit(X) X = pca.transform(X) y = np.choose(y, [1, 2, 0]).astype(np.float) plt.clf() plt.cla() plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.nipy_spectral, edgecolor='k') plt.xlabel("PC1") plt.ylabel("PC2") plt.showtransformedData(data);
==См. также==
*[[Переобучение]]*[[Метод опорных векторов (SVM)| SVM]]<sup>[на 28.01.19 не создан]</sup>*[[Уменьшение размерностиДерево решений и случайный лес| Случайный лес]]*[[Сингулярное разложениеМетод главных компонент (PCA)| PCA]]<sup>[на 28.01.19 не создан]</sup>*[[Стохастическое вложение соседей с t-распределением |t-SNE]]<sup>[на 28.01.19 не создан]</sup>
==Примечания==
<references/>
 
==Источники информации==
 #[http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82 machinelearning.ru — Метод главных компонент]#[https://www.youtube.com/watch?v=wcJ0nSUr7ws Лекция "Регрессионный анализ и метод главных компонентов"] {{---}} К.В. Воронцов, курс "Машинное обучение" 2014#[http://research.cs.tamu.edu/prism/lectures/pr/pr_l9pr_l11.pdf PCASequential feature selection] {{---}} курс ML Texas A&M University#[https://en.wikipedia.org/wiki/Principal_component_analysis Principal Component AnalysisFeature_selection Feature selection] {{---}} статья про Principal Component Analysis Feature Selection в Wikipedia#[https://benthamopen.com/FULLTEXT/TOBIOIJ-11-117 Публикация про feature selection]#[https://towardsdatascience.com/understandingfeature-selection-using-random-pcaforest-fae3e243731d Understanding PCA26d7b747597f Embedded random forest]
[[Категория: Машинное обучение]]
[[Категория: Уменьшение размерности]]
[[Категория: Метод главных компонент]]
15
правок

Навигация