Как столбец «Усиление» XGboost, так и значения рейнджера с параметром «примесь» строятся по общему уменьшению примеси (следовательно, усилению) расщеплений данной переменной.
Единственная разница заключается в том, что, хотя XGboost автоматически делает значения в процентах, рейнджер сохраняет их как исходные значения, то есть сумму квадратов, что не очень удобно для построения графика. Поэтому вы можете преобразовать значения значений рейнджера, разделив их на общую сумму, чтобы у вас был эквивалентный процент, как в Xgboost.
Поскольку использование уменьшения количества примесей может иногда вводить в заблуждение, я предлагаю вам рассчитать (для обеих моделей) значения переменных с помощью перестановки. Это позволяет легко получить значения, которые сопоставимы для разных моделей, и является более стабильным.
Я предлагаю этот невероятно полезный пост
Вот значение перестановки, как определено там (извините, это Python, а не R):
def permutation_importances(rf, X_train, y_train, metric):
baseline = metric(rf, X_train, y_train)
imp = []
for col in X_train.columns:
save = X_train[col].copy()
X_train[col] = np.random.permutation(X_train[col])
m = metric(rf, X_train, y_train)
X_train[col] = save
imp.append(baseline - m)
return np.array(imp)
Однако, рейнджер также позволяет вычислять значения перестановок с помощью importance="permutation"
, и xgboost может делать то же самое.