Иногда, когда добавление нового признака приводит к снижению производительности, для решения проблемы бывает достаточно просто удалить этот признак. Наличие проверочного набора данных важно для принятия решения о том, следует ли добавить регуляризацию, удалить признак или сделать и то и другое: мы используем оценку на основе проверочных данных, чтобы выбрать наилучший вариант. В нашем конкретном случае мы видим, что добавление регуляризации нам помогает: этот шаг улучшает оценку, которую мы получали ранее.
Глубокому обучению и нейронным сетям в последнее время уделяется особое внимание, в основном благодаря прорыву в методах компьютерного зрения. Эти сети решают такие задачи, как классификация изображений, намного лучше, чем это делали более ранние методы. Глубокое обучение — подобласть машинного обучения, в которой функция g представляет собой нейронную сеть со многими слоями. Мы узнаем больше о нейронных сетях и глубоком обучении, начиная с главы 7, где обучаем модель глубокого обучения для классификации изображений.
Все древовидные модели могут решить проблему регрессии — спрогнозировать число. В Scikit-learn, DecisionTreeRegressor и RandomForestRegressor реализуют регрессионную вариацию моделей. В XGBoost нам потребуется изменить цель на reg:squarederror
В XGBoost параметр colsample_bytree управляет количеством признаков, которые мы выбираем для каждого дерева, — это похоже на max_features для случайного леса. Поэкспериментируйте с этим параметром и посмотрите, улучшает ли он производительность: попробуйте значения от 0,1 до 1,0 с шагом 0,1. Обычно оптимальные значения находятся в диапазоне от 0,6 до 0,8, но иногда 1,0 дает наилучший результат.
Прежде чем мы сможем обучить модель XGBoost, нам придется обернуть наши данные в DMatrix — специальную структуру данных для эффективного поиска разбиений. Так и сделаем: dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=dv.feature_names_)
Чтобы использовать случайный лес в Scikit-learn, нам нужно импортировать RandomForestClassifier из пакета ensemble: from sklearn.ensemble import RandomForestClassifier