1632
правки
Изменения
м
Обозначим через $z_i = Фильтры могут быть:*Одномерные (g_1(x_iангл. ''univariate''), .{{---}} функция $\mu$ определяет релевантность одного признака по отношению к выходным меткам.В таком случае обычно измеряют "качество" каждого признака и удаляют худшие;*Многомерные (англ., g_m(x_i''multivariate''))$ признаковые описания тех же объектов в новом пространстве $Z = \mathbb{R{---}^{m}функция $ меньшей размерности, \mu$m < n$:определяет релевантность некоторого подмножества исходного множества признаков относительно выходных меток.
ПотребуемПреимуществом группы фильтров является простота вычисления релевантности признаков в наборе данных, чтобы исходные признаковые описания можно было восстановить но недостатком в таком подходе является игнорирование возможных зависимостей между признаками.===Оберточные методы===[[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$что для другого классификатора это множество признаков уже не будет настолько же релевантным.
Исчерпывающее решение сформулированной задачи даёт следующая теоремаМожет быть известно число признаков, которые нужно оставить, или выкинуть.
{{Теорема|statement = Если $m \leq rank \Порог значимости признаков соответствует порогу для меры, F$например, то минимум $\Delta^2(G, U)$ достигается, когда столбцы матрицы $U$ есть собственные векторы $F^T F$, соответствующие $m$ максимальным собственным значениямдля корреляции. При этом $G = F U$Выкидываются признаки, матрицы $U$ и $G$ ортогональны.для которых корреляция меньше определенного порога:
Поскольку искомые матрицы $G$ и $U$ невырождены'''Метод сломанной трости'''. Есть отрезок, отсюда следуеткоторый мы разбиваем по <tex>n-1</tex> случайным точкам. Если отсортировать длины подотрезков, то для <tex>i</tex>-го подотрезка длина будет равна примерно:
Функционал $\Delta^2(G, U)$ зависит только от произведения матриц $G U^T$, поэтому решение задачи $\Delta^2(GТогда берутся те признаки, U) \to для которых <tex>\mathop{min}_{G, U}$ определено с точностью до произвольного невырожденного преобразования $R: G U^T = (G R) (R^{-1} U^T)$. Распорядимся свободой выбора $R$ так, чтобы матрицы $U^mu</tex> превышает порог <tex>T U$ и $G^T G$ оказались диагональными. Покажем, что это всегда возможно</tex>.
Матрица $Метод локтя можно использовать и для задачи кластеризации. Например, пусть <tex>\tildemu</tex> {U}^T \tilde{U---}$ симметричная, невырожденная, положительно определенная, поэтому существует невырожденная матрица $S_{m \times m}$ такаявнутрикластерное расстояние. Тогда выбирается число кластеров, что $S^{-1} \tilde{U}^T \tilde{U} (S^{-1})^T = I_m$соответствующее резкому переходу между соседними значениями на графике.
Матрица $S^T \tilde{G}^T \tilde{G} S$ симметричная ===Другие методы===[[File:Feature_selection_ensemble_rus.png|thumb|Один из примеров процесса работы ансамблевых методов]]Есть и невырожденная, поэтому существует ортогональная матрица $T_{m \times m}$ такая, что $T^T другие методы выбора признаков: '''гибридные''' (S^T \tilde{G}^T \tilde{G} Sангл. ''hybrid methods'') T = diagи '''ансамблевые''' (\lambda_1, англ.''ensemble methods'').'''Гибридные методы''' комбинируют несколько разных методов выбора признаков, например, некоторое множество фильтров, а потом запускают оберточный или встроенный метод.Таким образом, \lambda_m) \equiv \Lambda$ {{---}} диагональная матрица. По определению ортогональности $T^T T = I_m$гибридные методы сочетают в себе преимущества сразу нескольких методов, и на практике повышают эффективность выбора признаков.
Преобразование $R = S T$ невырождено'''Ансамблевые методы''' применяются больше для наборов данных с очень большим числом признаков. Положим $G = \tilde{G} R$В данном подходе для начального множества признаков создается несколько подмножеств признаков, $U^T = R^{и эти группы каким-1} \tilde{U}^T$то образом объединяются, чтобы получить набор самых релевантных признаков. Это довольно гибкая группа методов, т.к. для нее можно применять различные способы выбора признаков и объединения их подмножеств. Тогда
В силу $G U^T = \tilde{G} \tilde{U}^T$ матрицы $G$ и $U$ являются решением задачи $\Delta^2==Примеры кода scikit-learn===Пример кода, реализующего функцию оценки фильтра на основе коэффициента ранговой корреляции: # Импорт библиотек import pandas as pd import numpy as np # Вспомогательная функция для расчета корреляции def correlation(GX, UY) \to \mathop{min}_{G: return np.cov(X, U}$ и удовлетворяют необходимому условию минимумаY) / np. Подставим матрицы $G$ и $U$ вsqrt(np.var(X) * np.var(Y))
<tex> # Сам фильтр на основе метрики ранговой корреляцииG # Аргументы X -- значения объектов датасета для какой-то фичи, Y -- метки этих объектов def measure_spearmans(X, Y): xr = F U pd.Series(U^T UX)^{-1};\\ U .rank() yr = F^T G pd.Series(G^T GY)^{-1}. rank()</tex> return correlation(xr, yr)
Благодаря диагональности $G^T G$ и $U^T U$ соотношения существенно упростятсяПример кода, реализующего SVM-RFE wrapper: # Импорт библиотек import numpy as np import pandas as pd from sklearn import svm
<tex # X -- наш датасет, Y -- массив меток # N -- число признаков, которые хотим оставить, step -- сколько фичей удаляется на каждой итерации # Возвращает массив из булевых переменных размерностью 1x[число признаков], показывающий, отбрасываем признак или нет def RFE(X, Y, N, step = 10): # cache_size нужен, если набор данных большой, иначе можно опустить clfRFE = svm.SVC(kernel='linear', cache_size=1024) featureCount = X.shape[1] featureList = np.arange(0, featureCount ) included = np.full(featureCount, True) curCount = featureCount while curCount >N: actualFeatures = featureList[included] Xnew = X[:, actualFeatures] clfRFE.fit(Xnew, Y)G curStep = F U;\\ U \Lambda min(step, curCount - N) elim = F^T Gnp.argsort(np.abs(clfRFE.coef_[0]))[:curStep]</tex> included[actualFeatures[elim]] = False curCount -= curStep return included
Подставим первое соотношение во второе, получим $U \Lambda = F^T F U$=Выделение признаков==Другим способом уменьшить размерность входных данных является выделение признаков. Это означаетЭти методы каким-то образом составляют из уже исходных признаков новые, что столбцы матрицы $U$ обязаны быть собственными векторами матрицы $F^T F$все также полностью описывающие пространство набора данных, а диагональные элементы $\lambda_1но уменьшая его размерность и теряя в репрезентативности данных, т.к.становится непонятно, за что отвечают новые признаки., \lambda_m$ - соответствующими им собственными значениямиВсе методы feature extraction можно разделить на '''линейные''' и '''нелинейные'''.
АналогичноОдним из самых известных методов '''линейного''' выделения признаков является [[Метод главных компонент (PCA)| PCA]]<sup>[на 28.01.19 не создан]</sup> (Principal Component Analysis, подставив второе соотношение в первоерус. ''метод главных компонент''). Основной идеей этого метода является поиск такой гиперплоскости, получим $G \Lambda = F F^T G$на которую при ортогональной проекции всех признаков максимизируется дисперсия. Данное преобразование может быть произведено с помощью сингулярного разложения матриц и создает проекцию только на линейные многомерные плоскости, то есть столбцы матрицы $G$ являются собственными векторами $F F^T$, соответствующими тем же самым собственным значениямпоэтому и метод находится в категории линейных.
Подставляя К '''нелинейным''' методам, например, могут быть отнесены методы отображающие исходное пространство признаков на нелинейные поверхности или топологические многообразия. Одним из таких алгоритмов является [[Стохастическое вложение соседей с t-распределением |t-SNE]]<sup>[на 28.01.19 не создан]</sup> (t-distributed Stochastic Neighbor Embedding, рус. ''стохастическое вложение соседей с t-распределением''). Данный метод состоит из двух шагов: изначально строится распределение вероятностей по всем парам точек набора данных, каждая условная вероятность $p_{j|i}$ которого означает насколько точка $X_j$Gблизка к точке $ и X_i$ при гауссовом распределении вокруг $X_i$U. Данное распределение как метрику похожести использует евклидово расстояние. Алгоритм старается получить отображение из точек размерности $\mathbb{R}^k$ в функционал меньшую размерность $\Deltamathbb{R}^2(Gd$, для этого вводится еще одно распределение, описывающее насколько точки из нового пространства похожи друг на друга, но используя при этом t-распределение Стьюдента с одной степенью свободы. Как метрику похожести двух распределений используется дивергенция Кульбака-Лейблера<ref>[https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence Дивергенция Кульбака-Лейблера]</ref>, U)и чтобы найти точки новой размерности $d$, находимзапускается градиентный спуск для минимизации этой величины. ===Пример кода scikit-learn===Пример выделения признаков с помощью PCA в scikit-learn: # Импорт библиотек from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split
<tex> X = ... # загрузка X\Delta^2(G, U) Y = \| F - G U^T \|^2 = tr \, (F^T - U G^t)(F - G U^T) = tr \... # загрузка Y # Разделение данных на train и test Xtrain, F^T (F - G U^T) = tr \Xtest, F^T F - tr \Ytrain, F^T G U^T Ytest = \| F \|^2 - tr \train_test_split(X, 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,</tex>Y)
где $\lambda_1 clf = ... # берем какой-то классификатор # Обучаем PCA для выделения 5 признаков pca = PCA(n_components=5) pca.fit(Xtrain) # Изменяем наши наборы данных под выбранные признаки Xtrain = pca.transform(Xtrain) Xtest = pca.transform(Xtest) # Обучаем классификатор и проверяем точность его работы clf.fit(Xtrain, Ytrain) print ("Score: %.6f" % clf.score(Xtest, Ytest)) ===Пример на языке Scala===SBT зависимость: libraryDependencies '''+=''' "com.github., \lambda_n$ haifengl" '''%%''' "smile- все собственные значения матрицы $F^T F$scala" '''%''' "1.5. Минимум $\Delta^2$ достигается, когда $\lambda_1, "Пример уменьшение размерности используя smile.feature.GAFeatureSelection<ref>[https://haifengl.github.io/smile/feature., \lambda_m$ {{html#genetic-algorithm-feature-}} наибольшие $m$ из $n$ собственных значений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
Собственные векторы $u_1 <span style="color:#3D9970>// Загрузка данных</span> '''val '''data = read.arff("data/weka/segment-test.arff", 19) '''val '''(x, y) = data.unzipInt '''val '''trainer = '''new '''GradientTreeBoost.Trainer(100) '''val '''measure = '''new '''Accuracy <span style="color:#3D9970>// Cоздание генетического алгоритма и его настройка.</span> '''val '''selector = '''new '''GAFeatureSelection <span style="color:#3D9970>// Размер популяции - 50, u_m$, отвечающие максимальным собственным значениям, называют количество поколений - 20 </span> <span style="color:#3D9970>// Каждая возращаемая BitString содержит фичи и их качество.</span> '''val 'главными компонентами''result = selector.learn(50, 20, trainer, measure, x, y, 5) result.foreach { bits => print(100*bits.fitness) println(bits.bits.mkString(" "))} }
===Связь с сингулярным разложением===<code>Maven</code> зависимость: <dependency> <groupId>nz.ac.waikato.cms.weka</groupId> <artifactId>weka-stable</artifactId> <version>3.8.0</version> </dependency>
Если $m = n$, то $\Delta^2(G, U) = 0$ '''import''' weka. В этом случае представление $F = G U^T$ является точным и совпадает с сингулярным разложением: $F = G U^T = V D U^T$, если положить $G = V D$ и $\Lambda = D^2$attributeSelection. При этом матрица $V$ ортогональна: $V^T V = I_m$PrincipalComponents; '''import''' weka.core.Instances; '''import''' weka.filters.Filter; '''import''' weka.filters.unsupervised.attribute.NumericToNominal; '''import''' java.io.BufferedReader; '''import''' java.io.FileReader;
Если $m < n$, то представление $F \approx G U^T$ является приближённым. Сингулярное разложение матрицы $G U^T$ получается из сингулярного разложения матрицы $F$ путём отбрасывания (обнуления) $n - m$ минимальных собственных значений. ===Преобразование Карунена–Лоэва==font color="green">// load dataset</font> Диагональность матрицы $G^T G = \Lambda$ означает, что новые признаки $g_1, ..., g_m$ не коррелируют на объектах из обучающей выборки. Ортогональное преобразование $U$ называют ''декоррелирующим'var' или преобразованием ''Карунена–Лоэва''. Если $m data = n$, то о прямое и обратное преобразование вычисляются с помощью одной и той же матрицы $U: F = 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 Instances(new BufferedReader(new FileReader(m) = \frac{\| G U^T "data/bank- F \|^2}{\| F \|^2} = \frac{\lambda_{m + 1} + data... + \lambda_n}{\lambda_1 + ... + \lambda_n} \leq \epsilon .$$ Величина $E(marff"))$ показывает, какая доля информации теряется при замене исходных признаковых описаний длины $n$ на более короткие описания длины $m$. Метод главных компонент особенно эффективен в тех случаях, когда $E(m)$ оказывается малым уже при малых значениях $m$. Если задать число $\epsilon$ из априорных соображений не представляется возможным, прибегают к ; '''var'критерию «крутого обрыва»''. На графике $Efilter = new NumericToNominal(m)$ отмечается то значение $m$, при котором происходит резкий скачок: $E; filter.setInputFormat(m - 1) \gg E(m)$, при условии, что $E(mdata)$ уже достаточно мало.; = 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 Многомерное шкалирование]</ref> и карты Кохонена initialize the PCA-based selector<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 Самоорганизующаяся карта Кохонена]</reffont>. '''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);
#[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]
[[Категория: Метод главных компонент]]
rollbackEdits.php mass rollback
Под '''Метод главных компонентуменьшением размерности''' (англ. ''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}.$$
Распространенными вариантами для $\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))}$, и другие.$$
==Решение=Правила обрезки===Для признаков, у которых найдено качество, можно выкинуть ненужное число признаков.От каких параметров может зависеть алгоритм обрезки:* Число признаков* Порог значимости признаков* Интегральный порог значимости признаков* Метод сломанной трости* Метод локтя
<tex>\left |proof = Запишем необходимые условия минимума:F \right | > x</tex>
Может существовать интегральный порог значимости, то есть признаки отсортированы по нормированной по единице "полезности" <tex>\frac{\partial mu</tex>, и выбирается несколько признаков с наибольшей <tex>\Delta^2}{\partial G} = (G U^T - F) U = 0;\\ \frac{\partial \Delta^2}{\partial U} = G^T (G U^T - F) = 0.mu</tex>.
<tex>G T = \frac{\sum_{i= F U (U^T U)1}^{-1k};\\ U = F^T G (G^T G)^frac{-1}. {i} }{k}</tex>, где <tex>k</tex>{{---}} число признаков, которые нужно оставить.
'''Метод локтя'''. Пусть $есть график для признаков, отсортированных по убыванию <tex>\tilde{G} mu</tex>. Берутся признаки, идущие до резкого перехода между соседними значениями. То есть берутся <tex>\tilde{U}^mu</tex> до порога <tex>T</tex>, где <tex>T$ </tex> {{---}} произвольное решение задачиоснование наиболее острого угла, образованного тремя соседними точками на графике.
<tex>G^T G div style= T^T (S^T \tilde"clear:{G}^T \tilde{G} S) T = \Lambda;\\ U^T U = T^{-1|both} (S^{-1} \tilde{U}^T \tilde{U} (S^{-1})^T) (T^{-1})^T = (T^T T)^{-1} = I_m.;"></texdiv>
==Свойства=Пример на языке Java===Пример уменьшения размерности датасета с применением <code>weka.attributeSelection.PrincipalComponents</code><ref>[http://weka.sourceforge.net/doc.dev/weka/attributeSelection/PrincipalComponents.html/ Weka, PCA]</ref>
==См. также==
*[[Переобучение]]*[[Метод опорных векторов (SVM)| SVM]]*[[Дерево решений и случайный лес| Случайный лес]]*[[Уменьшение размерностиМетод главных компонент (PCA)| PCA]]*[[Сингулярное разложениеСтохастическое вложение соседей с t-распределением |t-SNE]]
==Примечания==
<references/>
==Источники информации==
[[Категория: Машинное обучение]]
[[Категория: Уменьшение размерности]]