Руководство по настройке GBDT

машинное обучение
Руководство по настройке GBDT

Большинство параметров классификатора GBDT и регрессора совпадают, за исключением того, что варианты функции потерь несколько отличаются, поэтому мы объясним значение каждого параметра и способ корректировки в какой ситуации.

1. Параметры бустинга GBDT

1. n_estimators: представляет максимальное количество слабых учеников, то есть максимальное количество обученных деревьев. Это значение слишком велико, чтобы вызвать переоснащение, и слишком мало, чтобы вызвать недообучение. Значение по умолчанию – 100.

2. Learning_rate: у каждого слабого ученика есть параметр веса, значение по умолчанию — 0,1, а диапазон значений — 0–1. И Learning_rate, и n_estimators определяют эффект подгонки модели, поэтому для одновременной настройки рекомендуется начинать с меньшей скорости обучения.

fn(x)=fn-1(x)+l_r*T(n,x)
#即本轮的学习器等于本轮以前的学习器加上学习率乘以本轮得到的弱学习器

3.subsample: коэффициент подвыборки, значение по умолчанию равно 1,0, то есть выборка без замены, которая отличается от выборки случайного леса с заменой. Если он равен 1,0, это означает, что все данные используются для создания дерева решений в каждом раунде, которое легко переобучить, а дисперсия может быть относительно большой. Однако, если оно слишком мало, легко вызвать большое отклонение, поэтому это значение является обязательным, и рекомендуется, чтобы оно было между 0,5 и 0,8.

4.init: значение начального ученика можно установить самостоятельно, если у вас есть определенные предварительные знания. Но в целом нет.

5. потеря: выбор функции потерь отличается для классификации и регрессии.

Классификация: Возможные варианты: {'отклонение','экспоненциальная'}, "отклонение" логарифмическая функция потерь правдоподобия и "экспоненциальная" экспоненциальная функция потерь, логарифмическая функция потерь правдоподобия по умолчанию, логарифмическая для бинарных и многоклассовых задач Функция потери правдоподобия лучше, и эта функция потерь используется чаще. Экспоненциальная функция потерь напоминает нам Adaboost, то есть изменение веса неправильно обученных в этом раунде данных в следующем раунде обучения, чтобы неправильно классифицированные выборки привлекали больше внимания.

Регрессия: варианты {'ls', 'lad', 'huber', 'quantile'}, ls — среднеквадратичное значение, lad — абсолютная ошибка,

huber — функция подавления шумовых потерь, формула:

Когда невязка больше дельты, для минимизации следует использовать L1 (менее чувствителен к большим выбросам), а если невязка меньше гиперпараметра, для минимизации следует использовать L2. По существу, потеря Хубера является абсолютной ошибкой, но когда ошибка мала, она становится квадратом ошибки. Он менее чувствителен к выбросам в данных, чем потеря квадрата ошибки. Он также дифференцируем в 0. Одной из самых больших проблем при обучении нейронных сетей с помощью MAE являются постоянные большие градиенты, из-за которых точка минимума может быть пропущена ближе к концу использования градиентного спуска. В то время как для MSE градиент уменьшается по мере уменьшения потерь, что делает результат более точным. В этом случае потеря Хубера очень полезна. Он упадет около минимума из-за уменьшающегося градиента. Он более устойчив к выбросам, чем MSE. Таким образом, потеря Хубера сочетает в себе преимущества MSE и MAE. Однако проблема с потерей Хубера заключается в том, что нам может потребоваться постоянно корректировать дельту гиперпараметра.

Ошибка квантильного бинирования, когда требуется сегментированное предсказание обучающих данных.

6.альфа: толькоloss='huber'илиloss='quantile', нужно указать значение квантиля, по умолчанию 0,9, если шума больше, можно увеличить это значение.

2. Слабые параметры учащегося: параметры при создании дерева решений

1.max_features: количество признаков, учитываемых при делении. Когда признаков немного, меньше 50, может быть None, то есть по умолчанию используются все признаки. Также может быть следующим.

2. max_depth: глубина каждого поддерева, по умолчанию 3. Если объем данных и признаков невелик, этот параметр можно игнорировать. Но при больших размерах рекомендуется ограничить глубину от 10 до 100.

3.min_samples_split: Условие для продолжения разделения поддерева, по умолчанию 2. Когда количество выборок в узле меньше этого значения, узел больше не разделяется и рассматривается как конечный узел. Когда объем данных небольшой, все равно, и значение может быть увеличено, когда объем данных большой.

4.min_samples_leaf: Минимальное количество сэмплов для листовых узлов, по умолчанию 1. Если количество семплов листовых узлов меньше этого значения, они будут вырезаны бумагой вместе с одноуровневыми узлами, что означает, что нет необходимости подразделить выборки верхнего слоя, поскольку листовые узлы имеют только одну выборку, ветвление не имеет большого смысла. Когда порядок большой, это значение может быть увеличено. Видно, что дерево, сгенерированное gbdt, не является полным бинарным деревом, и возможно, что высота левого и правого поддеревьев различна.

5.min_weight_fraction_leaf: ограничивает минимальное значение суммы всех выборочных весов листовых узлов. Если оно меньше этого значения, оно будет удалено вместе с одноуровневыми узлами. По умолчанию 0, то есть не учитывается. Если у нас будет больше выборок с пропущенными значениями или категория распределения выборок дерева классификации имеет большое отклонение, будет введен вес выборки, и тогда мы должны обратить внимание на это значение.

6. max_leaf_nodes: максимальное количество конечных узлов, по умолчанию — None, оптимальное дерево решений генерируется в рамках ограниченного количества конечных узлов, что может предотвратить переоснащение. Когда порядок большой, это число может быть ограничено.

7.min_impurity_split: минимальная примесь Джини. Если примесь Джини узла меньше этого значения, он не будет разделен и будет рассматриваться как конечный узел, по умолчанию 1e-7, и обычно он не изменяется.

3. Процесс настройки параметров

1. Сначала отрегулируйте количество итераций и скорость обучения в структуре продвижения, выберите меньшую скорость обучения и отрегулируйте количество итераций по сетке.

param_test1 = {'n_estimators':range(20,101,10)}
gsearch1 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1, min_samples_split=300,
                                  min_samples_leaf=20,max_depth=8,max_features='sqrt', subsample=0.8,random_state=10), 
                       param_grid = param_test1, scoring='roc_auc',iid=False,cv=5)
gsearch1.fit(X,y)
gsearch1.grid_scores_, gsearch1.best_params_, gsearch1.best_score_

2. Затем отрегулируйте дерево решений, сначала отрегулируйте max_depth и min_samples_split вместе, установите max_depth в соответствии с оптимальным значением вывода, а затем отрегулируйте минимальное количество разделенных отсчетов.

param_test2 = {'max_depth':range(3,14,2), 'min_samples_split':range(100,801,200)}
gsearch2 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1, n_estimators=60, min_samples_leaf=20, 
      max_features='sqrt', subsample=0.8, random_state=10), 
   param_grid = param_test2, scoring='roc_auc',iid=False, cv=5)
gsearch2.fit(X,y)
gsearch2.grid_scores_, gsearch2.best_params_, gsearch2.best_score_

3. Затем повторно разделите внутренние узлы и настройте минимальное количество выборок min_samples_split и минимальное количество выборок min_samples_leaf для листовых узлов. Посмотрите, находится ли оптимальное значение двух на границе.Если оно находится на границе, измените диапазон параметров, а затем сетку еды.

param_test3 = {'min_samples_split':range(800,1900,200), 'min_samples_leaf':range(60,101,10)}
gsearch3 = GridSearchCV(estimator = GradientBoostingClassifier(learning_rate=0.1, n_estimators=60,max_depth=7,
                                     max_features='sqrt', subsample=0.8, random_state=10), 
                       param_grid = param_test3, scoring='roc_auc',iid=False, cv=5)
gsearch3.fit(X,y)
gsearch3.grid_scores_, gsearch3.best_params_, gsearch3.best_score_

4. Снова создайте сетку max_features и подвыборки.

5. Наконец, его можно пройти, снизить скорость обучения, увеличить количество итераций, повысить способность к обобщению и предотвратить переоснащение. Сохраняйте произведение двух в основном неизменным, но если размер шага установлен слишком маленьким, эффект подгонки ухудшится, и скорость обучения должна быть соответствующим образом уменьшена.

【Справочная статья】

1.Baijiahao.Baidu.com/is?ID=160385…

2.woo woo woo.cn blog on.com/female star put-rabbit7…

3.Блог woohoo.cn на.com/блог Django/…

4.woo woo woo.cn blog on.com/pi этого человека/afraid/61…