Введение в машинное обучение. Равиль Ильгизович Мухамедиев
услугах отфильтровывается на основании спрогнозированного мнения пользователя о ней. Совместная фильтрация подразумевает, что пользователь относится к некоторой типичной группе пользователей, а прогноз вычисляется с учетом большого количества мнений пользователей.
2.12. Композиции алгоритмов машинного обучения. Бустинг
Представим ситуацию, что мы имеем несколько простых алгоритмов классификации, дающих результат лишь немного лучше случайного выбора. Оказывается, что, используя группу из нескольких таких алгоритмов, можно получить хороший результат, строя итоговый алгоритм так, чтобы каждый простой алгоритм, включаемый в группу, компенсировал недостатки предыдущего.
Суть градиентного бустинга, введенного в [[63]], заключается в том, что после расчета оптимальных значений коэффициентов регрессии и получения функции гипотезы hθ(x) с помощью некоторого алгоритма (a) рассчитывается ошибка и подбирается, возможно, с помощью другого алгоритма (b) новая функция hbθ(x) так, чтобы она минимизировала ошибку предыдущего:
Иными словами, речь идет о минимизации функции стоимости вида:
где L – функция ошибки, учитывающая результаты работы алгоритмов a и b. Для нахождения минимума функции Jb(θ) используется значение градиента функции следующим образом.
Пусть мы имеем некоторую функцию ошибки:
Учитывая, что минимизация функции
При этом, как указывается в [[64]], «во многих экспериментах наблюдалось практически неограниченное уменьшение частоты ошибок на независимой тестовой выборке по мере наращивания композиции. Более того, качество на тестовой выборке часто продолжало улучшаться даже после достижения безошибочного распознавания всей обучающей выборки. Это перевернуло существовавшие долгое время представления о том, что для повышения обобщающей способности необходимо ограничивать сложность алгоритмов. На примере бустинга стало понятно, что хорошим качеством могут обладать сколь угодно сложные композиции, если их правильно настраивать».
При решении задач классификации наиболее эффективным считается бустинг над деревьями решений. Одной из самых популярных библиотек, реализующих бустинг над деревьями решений, является XGBoost (Extreme Gradient Boosting). Загрузка библиотеки и создание классификатора выполняются командами:
import xgboost
clf = xgboost.XGBClassifier(nthread=1)
Применим XGBClassifier для решения задачи Fashion-MNIST:
clf = xgboost.XGBClassifier(nthread=4,scale_pos_weight=1)
clf.fit(X_train, y_train)
nthread – количество потоков, которое рекомендуется устанавливать
63
Friedman, Jerome H. Greedy function approximation: a gradient boosting machine // Annals of Statistics. – 2001. – P. 1189–1232.
64
Бустинг. – http://www.machinelearning.ru/wiki/index.php?title=Бустинг