На Хабре уже было много хороших статей на эту тему — например, вот эта. Попробуем рассказать о чем-то новом.
Поверхностный обзор нового пакета FSinR
Задачи из разряда «найдите что-нибудь, что на это влияет», конечно, поставлены некорректно. В идеале, перед построением любой модели реального явления, должна существовать адекватная теоретическая модель, в полном соответствии с которой и создаются разные хитрые математические штуки. Однако, наш мир далеко не идеален, это раз, а, во-вторых, задача отбора признаков вполне применима при разведочном анализе данных, когда мы только подступаемся к анализу нового для нас явления
Пару слов о методологии
База данных для работы — данные по округам США (за 2017 год).
Алгоритм работы
Пакет «FSinR» содержит несколько алгоритмов отбора признаков, в частности:
-
aco_search (алгоритм муравьиной колонии)
-
ga_search (генетический алгоритм)
-
hc_search (hill climbing algorithm, поиск восхождением к вершине)
-
LV_search (Las Vegas algorithm, относится к семейству алгоритмов стохастического локального поиска)
-
sbs_search (sequential backward selection), sfbs_search (sequential backward floating selection) — алгоритмы обратного поиска
-
sffs_search (sequential forward floating selection), sfs_search (sequential forward selection) — алгоритмы прямого поиска
-
sa_search (simulation annealing, вероятностный метод поиска глобального оптимума)
-
ts_search (tabu search, мета-алгоритм локального поиска с ограничениями)
-
woa_search (whale optimization algorithm, алгоритм пузырьковой сети (имитирует охоту китов)
-
selectDifference (модификация алгоритма прямого поиска; выбирает функцию, прирост оценочного показателя на следующем шаге для которой меньше определенного значения)
-
selectKBest (модификация алгоритма прямого поиска с k переменными)
-
selectPercentile (модификация алгоритма прямого поиска, которая выбирает в модель определенный процент переменных)
-
selectSlope (модификация алгоритма прямого поиска, обратный selectDifference — выбирается функция, убывание показателя качества которой превысит определенный порог)
-
selectThreshold, selectThresholdRange — алгоритмы, отбирающие функции, оценочное значение которых больше определенного предела
Задача: сравнить точность (и затраты времени на их выполнение) данных алгоритмов (цель для алгоритмов — построить модель с максимумом коэффициента детерминации) при прогнозировании средней величины дохода в округе (переменная Income)
Таким образом, сначала вся выборка разделяется на тренировочную и тестовую (80/20), алгоритм подбирает переменные по тренировочной выборке, после чего ее точность проверяется на тестовой с помощью следующих показателей: коэффициент детерминации, средняя абсолютная ошибка (MAE), средняя ошибка аппроксимации, доля объектов тестовой выборки, для которых ошибка аппроксимации меньше 5 и 15 %. Процедура повторяется 10 раз.
Результаты
Результаты эксперимента обобщены в таблице (взяты медианные значения), код можно найти в ноутбуке на kaggle https://www.kaggle.com/artemcheremuhin/experiment-feature-selection-in-r
|
Метод |
R2 |
MAE |
Коэффициент аппроксимации,% |
Доля объектов с ошибкой <5%, % |
Доля объектов с ошибкой <15%, % |
Время работы алгоритма, с* |
|
aco_search |
0.7288 |
11297 |
21.69 |
4.431 |
12.19 |
34.73 |
|
ga_search |
0.7268 |
11318 |
21.82 |
4.453 |
12.16 |
171.66 |
|
hc_search |
0.7252 |
11312 |
21.90 |
4.468 |
12.18 |
49.54 |
|
LV_search |
0.6364 |
13044 |
25.19 |
3.789 |
10.63 |
8.98 |
|
sbs_search, sfbs_search, sffs_search, sfs_search |
0.7279 |
11267 |
21.78 |
4.437 |
12.15 |
151.62 151.62 81.12 31.36 |
|
sa_search |
0.6555 |
12991 |
25.14 |
3.819 |
10.68 |
0.91 |
|
ts_search |
0.7273 |
11310 |
21.73 |
4.438 |
12.17 |
358.02 |
|
woa_search |
0.6881 |
12000 |
23.07 |
4.189 |
11.49 |
8.91 |
|
selectDifference |
0.7279 |
11267 |
21.78 |
4.437 |
12.15 |
1.17 |
|
selectKBest** |
0.6671 |
12767 |
24.58 |
3.670 |
10.57 |
0.90 |
|
selectPercentile |
0.7268 |
11319 |
21.94 |
4.380 |
12.04 |
0.92 |
|
selectSlope selectThresholdRange |
0.4219 |
16485 |
30.45 |
2.845 |
8.26 |
0.87 1.00 |
|
selectThreshold |
0.6693 |
12676 |
24.36 |
3.689 |
10.62 |
1.17 |
*Время работы измерялось на kaggle
**Количество переменных задавалось от 1 до 10
Заключение
Принцип работы пакета достаточно простой — необходимо задать критерий оценки (evaluator), метод отбора признаков (method) и зависимую переменную (V1). Пакет работает и с задачами регрессии, и с задачами кластеризации
method <- simulatedAnnealing() evaluator <- determinationCoefficient() model_1<-method(Base_tr, 'V1', evaluator) model_1$bestFeatures # Получаем таблицу, отражающую факт выбора переменных в итоговую модель
Конкретно для данного датасета получилось, что лучшим является метод selectDifference — при близком к наибольшему показателю детерминации время его работы значительно ниже, чем у аналогов. Недостатком большинства использованных методов является то, что наибольший показатель коэффициента детерминации достигается простым включением всех переменных в модель, а использование более продвинутых метрик (например, скорректированного коэффициента детерминации) пока пакетом не предусмотрено
-
При расчетах на ПК при отборе признаков для регрессии удается использовать другие оценщики, а на kaggle — нет, время расчетов улетает в бесконечность
-
Оригинальная версия пакета поддерживает одновременное использование нескольких функций оценки — это в перспективе очень интересно и нуждается в дальнейшем тестировании
ссылка на оригинал статьи https://habr.com/ru/post/566930/
Добавить комментарий