Решение задачи создания ансамбля случайного леса для классифицирования моделей телефонов по ценовым категориям
- Авторы: Гущина О.А., Гущин А.В.
- Выпуск: Том 10, № 14 (2022)
- Раздел: Статьи
- Статья получена: 12.12.2024
- Статья одобрена: 12.12.2024
- URL: https://ogarev-online.ru/2311-2468/article/view/272927
- ID: 272927
Цитировать
Полный текст
Аннотация
В статье рассматривается создание и использование ансамблей случайного леса деревьев решений для предсказательной аналитики на примере решения задачи классификации восьмидесяти моделей телефонов с двадцатью признаками по четырем ценовым категориям. Проведен сравнительный анализ полученного решения с решением на основе метода деревьев решений.
Ключевые слова
Полный текст
Постановка задачи. Пусть даны 80 различных моделей телефонов различных марок. Каждой модели телефона поставлено в соответствие уникальное сочетание из 20 признаков: емкость телефонной батарейки; наличие Bluetooth; скорость процессора; наличие разъёма для второй SIM-карты; число мегапикселей в фронтовой камере; поддержка 4G; размер внутренней памяти; толщина телефона; вес телефона; количество ядер процессора; количество мегапикселей в основной камере; объем оперативной памяти; высота экрана; ширина экрана; высота телефона; ширина телефона; время разговора от одной батареи; поддержка 3G; наличие сенсорного экрана; поддержка wifi.
На основе этих данных необходимо для каждой модели телефона спрогнозировать ценовую категорию (низкая, средняя, высокая и очень высокая).
Процесс решения задачи. Для хранения данных используется dataframe из библиотеки Pandas [1; 2] и массив из библиотеки NumPy, которые подключаются в начале файла. После загрузки данных можно просмотреть и их, и их статистическую информацию. Результаты этих манипуляций представлены таблицах 1–4.
Таблица 1. Часть элементов выборки
№ | battery_power | blue | clock_speed | … | touch_screen | wifi | price_rang e |
0 | 842 | 0 | 2.2 | … | 0 | 1 | 1 |
1 | 1021 | 1 | 0.5 | … | 1 | 0 | 2 |
2 | 563 | 1 | 0.5 | … | 1 | 0 | 2 |
3 | 615 | 1 | 2.5 | … | 0 | 0 | 2 |
4 | 1821 | 1 | 1.2 | … | 1 | 0 | 1 |
… | |||||||
1995 | 794 | 1 | 0.5 | … | 1 | 0 | 0 |
1996 | 1965 | 1 | 2.6 | … | 1 | 1 | 2 |
1997 | 1911 | 0 | 0.9 | … | 1 | 0 | 3 |
1998 | 1512 | 0 | 0.9 | … | 1 | 1 | 0 |
1999 | 510 | 1 | 2.0 | … | 1 | 1 | 3 |
Таблица 2. Типы всех использованных переменных
battery_power, Blue, dual_sim, Fc, four_g, int_memory, mobile_wt, n_cores, Pc, px_height, px_width, Ram, sc_h, sc_w, talk_time, three_g, touch_screen, touch_screen, wifi, price_range | int64 |
clock_speed, m_dep | float64 |
Таблица 3. Результаты описательной статистики
№ | battery_power | blue | … | wifi | price_range |
count | 2000.000000 | 2000.0000 | … | 2000.000000 | 2000.000000 |
mean | 1238.518500 | 0.4950 | … | 0.507000 | 1.500000 |
std | 439.418206 | 0.5001 | … | 0.500076 | 1.118314 |
min | 501.000000 | 0.0000 | … | 0.000000 | 0.000000 |
25% | 851.750000 | 0.0000 | … | 0.000000 | 0.750000 |
50% | 1226.000000 | 0.0000 | … | 1.000000 | 1.500000 |
75% | 1615.250000 | 1.0000 | … | 1.000000 | 2.250000 |
max | 1998.000000 | 1.0000 | … | 1.000000 | 3.000000 |
Таблица 4. Категориальные и количественные переменные
Категориальные | [] |
Количественные | ['battery_power', 'blue', 'clock_speed', 'dual_sim', 'fc', 'four_g', 'int_memory', 'm_dep', 'mobile_wt', 'n_cores', 'pc', 'px_height', 'px_width', 'ram', 'sc_h', 'sc_w', 'talk_time', 'three_g', 'touch_screen', 'wifi', 'price_range'] |
Перед передачей данных в будущую модель их разделили на признаки и классы. После разделения провели распределение данных на обучающую и тестовую выборки с параметром test_size=0.25, то есть три четверти данных передали в обучающую выборку, а одну четверть – в тестовую.
На следующем этапе воспользовались библиотекой scikit-learn для создания объекта классификатора случайного леса и выполнения его обучение на представленных данных [3-6]. Переменную params используем для хранения параметров ансамбля. Эти данные передаем в функцию создания экземпляра случайного леса решений, фрагмент которого представлен далее. Далее воспользовались функцией обучения с передачей тренировочных данных.
Для контроля результата после обучения модели случайного леса оценили следующие показатели эффективности полученного решения на обучающей и тестовой выборках: точность на обучающей выборке, точность контрольной выборки, OOB-оценка, AUC на обучающей выборке и AUC на контрольной выборке. Результат приведен в таблице 5.
Таблица 5. Результаты вычисления точности модели случайного леса решений
Метрика | Результат |
Правильность на обучающей выборке | 0.999 |
Правильность на контрольной выборке | 0.880 |
OOB оценка правильности | 0.89 |
AUC на обучающей выборке для RandomForest | 1.000 |
AUC на контрольной выборке для RandomForest | 0.982 |
В качестве примера спрогнозировали принадлежность первых пяти объектов к определенному классу с помощью функции forestClassifier.predict_proba(X_test[:5])). Результат представлен в таблице 6. Каждый столбец соответствует определенному классу (ценовой категории), а строка – определенной модели телефона.
Таблица 6. Пример вывода спрогнозированных вероятностей принадлежности первых пяти модели телефона (таблица 1) к одной из четырех ценовых категорий
0.01039387 | 0.06722729 | 0.15937753 | 0.76300131 |
0.0517534 | 0.09618108 | 0.26739106 | 0.58467446 |
0.06692121 | 0.44428379 | 0.37681018 | 0.11198482 |
0.01541764 | 0.04722354 | 0.13160823 | 0.80575059 |
0.23304687 | 0.55828515 | 0.15961096 | 0.04905703 |
Дополнительно с вычислением метрики точности модели случайного леса решений, была вычислена матрица ошибок (рис. 1) и сформирован квалификационному отчет (рис. 2).
Рис. 1. Матрица ошибок.
Рис. 2. Квалификационный отчет.
Преимуществом случайного леса и дерева решений перед другими методами прогнозирования является возможность оценивания влияния определенных признаков на конечный результат. Для этой цели был введен параметр классификатора случайного леса решений в виде одномерного массива. Для увеличения его информативности пришлось отсортировать все признаки по степени влияния на модель. Результат приведен в таблице 7.
Таблица 7. Показатели важности признаков случайного леса решений
1 | ram | 0.522775 |
2 | battery_power | 0.076009 |
3 | px_height | 0.055573 |
4 | px_width | 0.054512 |
5 | mobile_wt | 0.035392 |
6 | int_memory | 0.031938 |
7 | talk_time | 0.026818 |
8 | pc | 0.026318 |
9 | clock_speed | 0.025707 |
10 | sc_w | 0.025151 |
11 | sc_h | 0.024550 |
12 | fc | 0.021197 |
13 | m_dep | 0.020963 |
14 | n_cores | 0.019568 |
15 | dual_sim | 0.005946 |
16 | wifi | 0.005899 |
17 | touch_screen | 0.005887 |
18 | four_g | 0.005619 |
19 | blue | 0.005320 |
20 | three_g | 0.004857 |
Чтобы понять, насколько эффективен ансамблевый подход мы построили дерево решений, обучили на том же наборе данных и вычислили для него показатели эффективности. Результат оценки модели дерева решений различными метриками представлен на таблице 8.
Таблица 8. Результаты вычисления точности модели дерева решений
Метрика | Результат |
Правильность на обучающей выборке | 1.000 |
Правильность на контрольной выборке | 0.836 |
AUC на обучающей выборке для RandomForest | 1.000 |
AUC на контрольной выборке для RandomForest | 0.876 |
Сравнив показатели эффективности обучения для случайного леса и дерева решений в таблицы 5 и 8, отметим, что точность первого больше на 0.044, а значение AUC на контрольной выборке лучше на 0.106. Следовательно, ансамбль деревьев решений эффективнее дерева решений.
Для анализа показателей важности признаков дерева решений оценивания влияния определенных признаков на конечный результат и получили данные таблицы 9. Из нее видно, что два последних признака (touch_screen и four_g) не влияют на прогноз (и для эффективности работы алгоритма их можно убрать). Так же, как и для случайного леса решений, для дерева решений абсолютное влияние имеет первый признак (ram).
Таблица 9. Показатели важности признаков дерева решений
1 | ram | 0.659793 |
2 | battery_power | 0.093422 |
3 | px_height | 0.091308 |
4 | px_width | 0.085851 |
5 | mobile_wt | 0.012314 |
6 | talk_time | 0.010347 |
7 | sc_w | 0.007392 |
8 | sc_h | 0.005382 |
9 | fc | 0.005496 |
10 | pc | 0.004757 |
11 | m_dep | 0.004418 |
12 | n_cores | 0.004289 |
13 | three_g | 0.003922 |
14 | dual_sim | 0.003846 |
15 | clock_speed | 0.003296 |
16 | int_memory | 0.002545 |
17 | blue | 0.001433 |
18 | wifi | 0.000989 |
19 | touch_screen | 0.000000 |
20 | four_g | 0.000000 |
Для понимания структуры дерева решений в ансамбле и в отдельности, мы их визуализировали и вывели в PNG-файл (рис. 3, 4).
Рис. 3. Визуализация дерева решений из ансамбля.
Рис. 4. Фрагмент дерева решений из ансамбля.
В каждом дереве решений узлы содержат: вопрос по одному признаков, по которому выполняется дальнейший выбор; неопределенность; количество прошедших образцов; отношение классов, прошедших через этот узел, выраженное в абсолютных числах; значение класса, большинство образцов которого прошли через узел (для листьев это прогнозируемое значение для всех элементов, попавших в него).
Так как листья являются заключительными прогнозируемыми значениями классификации, то они не содержат вопроса. При обработке нового элемента, нужно спускаться вниз по дереву, используя признаки элемента для ответа на вопросы. В конце элемент дойдет до одного из листьев и по значению листа определяется принадлежность к одному из классов.
Для повышения точности необходимо использовать оптимальные параметры. Самым простым способом их выявления считается метод сеточного поиска GridSearchCV с кросс- валидацией из библиотеки sklearn.model_selection. Суть метода состоит в том, что строит множество моделей с различными параметрами, обучающимися и сравнивающимися по эффективности. Оптимальным числом различных моделей ансамблей является произведение значения кросс-валидации и числа комбинаций выбранных параметров.
После прохода всех параметров, показанного на рисунке 5, получаем гиперпараметры для лучшей модели (рис. 6).
Fitting 3 folds for each of 4320 candidates, totalling 12960 fits
Рис. 5. Результат вычисления гиперпараметров.
RandomForestCla ssifier(boot st rap=True, ccp_alpha=0.0, class_weight=None,
criterion='gini', max_depth=15, max_features='sqrt',
max_leaf_nodes=None, max_samples=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=3, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=700,
n_jobs=None, oob_score=True, random_state=None,
verbose=0, warm_start=False)
Рис. 6. Результат вывода гиперпараметров лучшей модели.
Проведя эксперимент по увеличению точности показателей в зависимости от максимальной глубины дерева и количества признаков в узле получили данные, приведенные в таблице 10.
Таблица 10. Результаты показателей точности модели случайного дерева решений с различными гиперпараметрами
param_max_depth | param_max_features | Точность |
2 | log2 | 0.718581 |
| sqrt | 0.719463 |
3 | log2 | 0.775933 |
| sqrt | 0.775521 |
7 | log2 | 0.836848 |
| sqrt | 0.837754 |
11 | log2 | 0.844720 |
| sqrt | 0.844389 |
15 | log2 | 0.844227 |
| sqrt | 0.845271 |
На рисунке 7 приведен график зависимости вероятности совпадения полученных решений с реальными данными от количества деревьев в случайном лесе решений.
Рис. 7. График зависимости вероятности совпадения полученных решений с реальными данными от количества деревьев.
Заключение. В результате проведенного исследования были получены достаточно точные практические данные по предсказанию ценовой категории данных марок телефонов, а также сделан вывод о высокой эффективности использования ансамблей случайного леса и деревьев решений для предсказания классификации данных.
Об авторах
О. А. Гущина
Автор, ответственный за переписку.
Email: ogarevonline@yandex.ru
Россия
А. В. Гущин
Email: ogarevonline@yandex.ru
Россия
Список литературы
- Ансамблевые методы: бэггинг, бустинг и стекинг [Электронный ресурс]. – Режим доступа: https://neurohive.io/ru/osnovy-data-science/ansamblevye-metody-begging- busting-i-steking/ (дата обращения: 03.11.2022).
- Груздев А. В. Прогнозное моделирование в IBM SPSS Statistics, R и Python: метод деревьев решений и случайный лес. – М.: ДМК Пресс, 2018. – 642 c.
- Открытый курс машинного обучения. Тема 5. Композиции: бэггинг, случайный лес [Электронный ресурс]. – Режим доступа: https://habr.com/ru/company/ods/blog/324402 (дата обращения: 03.11.2022).
- Джоши П. Искусственный интеллект с примерами на Python: Пер. с англ. – СПб.: ООО «Диалектика», 2019. – 448 с.
- A random forest classifier [Электронный ресурс]. – Режим доступа: https://scikit- learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier (дата обращения: 03.11.2022).
- Hastie Т. The Elements of Statistical Learning. – Springer, 2017. – 764 p.
Дополнительные файлы
