Изменения

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

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

4305 байт добавлено, 19:40, 4 сентября 2022
м
rollbackEdits.php mass rollback
==Выбор признаков==
Методы '''выбора признаков''' оставляют некоторое подмножество исходного набора признаков, избавляясь от признаков избыточных и слабо информативных. Основные преимущества этого класса алгоритмов:
*Уменьшение вероятности [[переобучение|переобучения]];*Увеличение точности предсказания модели;*Сокращение времени обучения;*Увеличивается семантическое понимание модели.
Все методы выбора признаков можно разделить на 5 типов, которые отличаются алгоритмами выбора лишних признаков.
Фильтры могут быть:
*Одномерные (англ. ''univariate'') {{---}} функция $\mu$ определяет релевантность одного признака по отношению к выходным меткам. В таком случае, обычно, измеряют "качество" каждого признака и удаляют худшие.;
*Многомерные (англ. ''multivariate'') {{---}} функция $\mu$ определяет релевантность некоторого подмножества исходного множества признаков относительно выходных меток.
Существует несколько типов оберточных методов: детерминированные, которые изменяют множество признаков по определенному правилу, а также рандомизированные, которые используют генетические алгоритмы для выбора искомого подмножества признаков. Среди детерминированных алгоритмов самыми простыми являются:
*SFS (Sequential Forward Selection) {{---}} жадный алгоритм, который начинает с пустого множества признаков, на каждом шаге добавляя лучший из еще не выбранных признаков в результирующее множество;*SBS (Sequential Backward Selection) {{---}} алгоритм обратный SFS, который начинает с изначального множества признаков, и удаляет по одному или несколько худших признаков на каждом шаге.
Популярным оберточным методом является SVM-RFE (SVM-based Recursive Feature Elimination), который иногда также обозначается как встроенный <ref>[https://benthamopen.com/FULLTEXT/TOBIOIJ-11-117/ C. Embedded method]</ref>. Этот метод использует как классификатор [[Метод опорных векторов (SVM)| SVM]]<sup>[на 28.01.19 не создан]</sup> и работает итеративно: начиная с полного множества признаков обучает классификатор, ранжирует признаки по весам, которые им присвоил классификатор, убирает какое-то число признаков и повторяет процесс с оставшегося подмножества фичей, если не было достигнуто их требуемое количество. Таким образом, этот метод очень похож на встроенный, потому что непосредственно использует знание того, как устроен классификатор.
Встроенные методы используют преимущества оберточных методов и являются более эффективными, при этом на отбор тратится меньше времени, уменьшается риск [[переобучение|переобучения]], но т.к. полученный набор признаков был отобран на основе знаний о классификаторе, то есть вероятность, что для другого классификатора это множество признаков уже не будет настолько же релевантным.
 
===Правила обрезки===
Для признаков, у которых найдено качество, можно выкинуть ненужное число признаков.
От каких параметров может зависеть алгоритм обрезки:
* Число признаков
* Порог значимости признаков
* Интегральный порог значимости признаков
* Метод сломанной трости
* Метод локтя
 
Может быть известно число признаков, которые нужно оставить, или выкинуть.
 
Порог значимости признаков соответствует порогу для меры, например, для корреляции. Выкидываются признаки, для которых корреляция меньше определенного порога:
 
<tex>\left | F \right | > x</tex>
 
Может существовать интегральный порог значимости, то есть признаки отсортированы по нормированной по единице "полезности" <tex>\mu</tex>, и выбирается несколько признаков с наибольшей <tex>\mu</tex>.
 
'''Метод сломанной трости'''. Есть отрезок, который мы разбиваем по <tex>n-1</tex> случайным точкам. Если отсортировать длины подотрезков, то для <tex>i</tex>-го подотрезка длина будет равна примерно:
 
<tex>T = \frac{\sum_{i=1}^{k} \frac{1}{i} }{k}</tex>, где <tex>k</tex> {{---}} число признаков, которые нужно оставить.
 
Тогда берутся те признаки, для которых <tex>\mu</tex> превышает порог <tex>T</tex>.
 
'''Метод локтя'''. Пусть есть график для признаков, отсортированных по убыванию <tex>\mu</tex>. Берутся признаки, идущие до резкого перехода между соседними значениями. То есть берутся <tex>\mu</tex> до порога <tex>T</tex>, где <tex>T</tex> {{---}} основание наиболее острого угла, образованного тремя соседними точками на графике.
 
Метод локтя можно использовать и для задачи кластеризации. Например, пусть <tex>\mu</tex> {{---}} внутрикластерное расстояние. Тогда выбирается число кластеров, соответствующее резкому переходу между соседними значениями на графике.
===Другие методы===
[[File:Feature_selection_ensemble_rus.png|thumb|Один из примеров процесса работы ансамблевых методов]]
Есть и другие методы выбора признаков: '''гибридные''' (англ. ''hybrid methods'') и '''ансамблевые''' (англ. ''ensemble methods''). '''Гибридные методы''' комбинируют несколько разных методов выбора признаков, например , некоторое множество фильтров, а потом запускают оберточный или встроенный метод. Таким образом, гибридные методы сочетают в себе преимущества сразу нескольких методов, и на практике повышают эффективность выбора признаков.
'''Ансамблевые методы''' применяются больше для наборов данных с очень большим числом признаков. В данном подходе для начального множества признаков создается несколько подмножеств признаков, и эти группы каким-то образом объединяются, чтобы получить набор самых релевантных признаков. Это довольно гибкая группа методов, т.к. для нее можно применять различные способы выбора признаков и объединения их подмножеств.
curCount -= curStep
return included
 
==Выделение признаков==
Другим способом уменьшить размерность входных данных является выделение признаков. Эти методы каким-то образом составляют из уже исходных признаков новые, все также полностью описывающие пространство набора данных, но уменьшая его размерность и теряя в репрезентативности данных, т.к. становится непонятно, за что отвечают новые признаки.
println(bits.bits.mkString(" "))
}
 
===Пример на языке Java===
Пример уменьшения размерности датасета с применением <code>weka.attributeSelection.PrincipalComponents</code><ref>[http://weka.sourceforge.net/doc.dev/weka/attributeSelection/PrincipalComponents.html/ Weka, PCA]</ref>
 
<code>Maven</code> зависимость:
<dependency>
<groupId>nz.ac.waikato.cms.weka</groupId>
<artifactId>weka-stable</artifactId>
<version>3.8.0</version>
</dependency>
 
'''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;
 
<font color="green">// load dataset</font>
'''var''' data = new Instances(new BufferedReader(new FileReader("data/bank-data.arff")));
'''var''' filter = new NumericToNominal();
filter.setInputFormat(data);
data = Filter.useFilter(data, filter);
<font color="green">// initialize the PCA-based selector</font>
'''var''' pca = new PrincipalComponents();
<font color="green">// dimensionality reduction is achieved through selecting enough eigenvectors to account</font>
<font color="green">// for some percantege of the variance in the original data</font>
pca.setVarianceCovered(0.95);
pca.buildEvaluator(data);
<font color="green">// transform the dataset</font>
data = pca.transformedData(data);
==См. также==
*[[Переобучение]]
*[[Метод опорных векторов (SVM)| SVM]]<sup>[на 28.01.19 не создан]</sup>
*[[Дерево решений и случайный лес| Случайный лес]]
*[[Метод главных компонент (PCA)| PCA]]<sup>[на 28.01.19 не создан]</sup>*[[Стохастическое вложение соседей с t-распределением |t-SNE]]<sup>[на 28.01.19 не создан]</sup> 
==Примечания==
<references/>
1632
правки

Навигация