Изменения

Перейти к: навигация, поиск

CatBoost

1832 байта добавлено, 18:55, 25 ноября 2018
Нет описания правки
Сравнение библиотеки CatBoost с открытыми аналогами XGBoost, LightGBM и H20 на наборе публичных датасетов. Результаты - [https://catboost.yandex/#benchmark]
 
== Пример использования ==
* Делим данные на тренировочное и тестовое множество
X_train, X_validation, y_train, y_validation = train_test_split(X, y, train_size=0.5, random_state=1234)
print(X_train.shape, X_validation.shape)
 
* Создаем классификатор
from catboost import CatBoostClassifier
 
best_model = CatBoostClassifier(
bagging_temperature=1,
random_strength=1,
thread_count=3,
iterations=500,
l2_leaf_reg = 4.0,
learning_rate = 0.07521709965938336,
save_snapshot=True,
snapshot_file='snapshot_best.bkp',
random_seed=63,
od_type='Iter',
od_wait=20,
custom_loss=['AUC', 'Accuracy'],
use_best_model=True
)
 
* Обучаемся
best_model.fit(
X_train, y_train,
cat_features=cat_features,
eval_set=(X_validation, y_validation),
logging_level='Silent',
plot=True
)
* Вывод числа деревьев в модели
print ('Resulting tree count:', best_model.tree_count_)
''Resulting tree count: 217''
 
* Используем кросс валидацию
from catboost import cv
 
params = best_model.get_params()
params['iterations'] = 10
params['custom_loss'] = 'AUC'
del params['use_best_model']
pool1 = Pool(X, label=y, cat_features=cat_features)
 
cv_data = cv(
params = params,
pool = pool1,
fold_count=2,
inverted=False,
shuffle=True,
stratified=False,
partition_random_seed=0
)
* Выводим результат
best_value = np.max(cv_data['AUC_test_avg'])
best_iter = np.argmax(cv_data['AUC_test_avg'])
print ('Best validation AUC score: {:.2f}±{:.2f} on step {}'.format(
best_value,
cv_data['AUC_test_stddev'][best_iter],
best_iter
))
 
''Best validation AUC score: 0.91±0.00 on step 9''
Анонимный участник

Навигация