код показывает, как показано ниже:Резюме конкурса алгоритмов UnionPay «Прогнозирование просроченного кредита пользователем»
Введение в файл
-
01Предварительная обработка данных
-
02 Разработка функций
-
03 Выбор модели — xgb_model
-
03 Выбор модели — ctb_model
-
03 Выбор модели - lgb_model
-
04Тюнинг модели
-
05Слияние моделей
-
06 Передискретизация
-
06 Понижение частоты дискретизации
-
profiling.html (визуализация и статистика данных)
-
Файл features.csv после разработки функций
-
lgb_oof_feature_engineering.csv Промежуточные результаты для обучающего набора
-
xgb_oof_feature_engineering.csv
-
cbt_oof_feature_engineering.csv
-
lgb_test_feature_engineering.csv Промежуточные результаты набора тестов
-
xgb_test_feature_engineering.csv
-
cbt_test_feature_engineering.csv
Введение в тему
Личный кредит лежит в основе всего общественного кредита, и вся экономическая деятельность в рыночных сделках тесно связана с личным кредитом. Как только индивидуальное поведение не сдерживается, возникает личная нечестность, а затем и коллективная нечестность. Поэтому построение персональной кредитной системы имеет большое значение.Однако с развитием экономики противоречие между все более важными кредитными историями и отсутствием кредитных историй все более усиливается, и необходимо срочно создать совершенную кредитную систему. В связи с непрерывным развитием бизнеса по выдаче личных микрозаймов в последние годы предотвращение мошенничества с личными кредитами и снижение уровня неработающих кредитов являются основными целями развития смежных предприятий. Модель машинного обучения обеспечивает точную идентификацию личного мошенничества и просроченных рисков в микрофинансовых бизнес-приложениях, что еще больше повышает способность финансовых учреждений предотвращать мошенничество и снижать процент неработающих клиентов.
Как показано в таблице ниже, данные содержат 11017 элементов данных, каждый элемент данных содержит 201 атрибут, который в основном включает следующие основные категории информации: идентификационная информация и статус собственности, информация о наличии карты, информация о транзакции, информация о кредите, погашение. информация, Подать заявку на кредит информации.
Number of variables | 201 |
---|---|
Number of observations | 11017 |
Total Missing (%) | 14.3% |
Total size in memory | 16.9 MiB |
Average record size in memory | 1.6 KiB |
Введение в принципы модели
В основном в проекте используются три модели XGBoost, LightGBM, CatBoost, эти три модели представляют собой деревья повышения градиента, каждая со своими характеристиками.
В марте 2014 года XGBOOST был впервые предложен Ченом Тяньци в качестве исследовательского проекта.
В январе 2017 года Microsoft выпустила первую стабильную версию LightGBM.
В апреле 2017 года крупнейшая российская технологическая компания Яндекс открыла исходный код CatBoost.
- XGBoost
Идея алгоритма XGBoost: продолжайте добавлять деревья и непрерывно выполнять разделение функций для создания дерева.Каждый раз, когда вы добавляете дерево, вы изучаете новую функцию, соответствующую последнему остатку.Когда обучение завершено, K деревьев получено, и требуется предсказаниеОценка выборки фактически основана на характеристиках выборки.В каждом дереве она упадет на соответствующий лист-узел.Каждый лист-узел соответствует оценке.И наконец, оценка, соответствующая каждому дереву необходимо сложить, чтобы получить предсказание выборки.
- LightGBM
LightGBM — это быстрый распределенный высокопроизводительный алгоритм повышения градиента на основе дерева решений. Его можно использовать в задачах машинного обучения, таких как классификация, регрессия и сортировка. Поскольку он основан на алгоритме дерева решений, он использует оптимальную листовую стратегию для разделения листовых узлов, а другие алгоритмы подъема обычно используют глубину или уровень, а не лист. Следовательно, в алгоритме LightGBM при росте до одного и того же листового узла листовой алгоритм уменьшает больше потерь, чем поуровневый алгоритм. Это приводит к более высокой точности, чем любой другой существующий алгоритм повышения. При этом его скорость поражает, поэтому алгоритм и получил название Light. Листовое разбиение приводит к увеличению сложности и может привести к переоснащению. Но это можно преодолеть, задав другой параметр max-depth, который разбивает максимальную глубину результирующего дерева. Подводя итог, LightGBM использует алгоритм гистограммы для выбора функций и стратегию роста дерева решений по листам, что выделяет его среди ряда алгоритмов повышения, основанных на моделях деревьев.
Преимущества LightGBM:
Более высокая скорость обучения и более высокая эффективность: LightGBM использует алгоритм на основе гистограммы. Например, он объединяет непрерывные значения признаков в дискретные ячейки, что становится быстрее во время обучения. Меньший объем памяти: использование дискретных бинов для сохранения и замены непрерывных значений приводит к меньшему объему памяти, сохраняйте значение только после дискретизации признаков, и этого значения обычно достаточно для хранения в виде 8-битного целого числа, потребление памяти может быть уменьшено до 1 /8 оригинала. Более высокая точность (по сравнению с любым другим алгоритмом повышения): он создает более сложные деревья, чем разбиение по уровням с помощью разбиения по листам, что является основным фактором в достижении более высокой точности. Однако иногда это может привести к переоснащению, но мы можем предотвратить переоснащение, установив параметр max-depth. Возможность обработки больших данных: по сравнению с XGBoost, он также имеет возможность обрабатывать большие данные благодаря сокращению времени обучения. Поддерживает параллельное обучение: параллелизм функций и параллелизм данных.
Сравнение между XGBoost и LightGBM выглядит следующим образом:
- CatBoost
CatBoost в основном имеет следующие пять характеристик:
Высокое качество модели можно получить без настройки параметров, а очень хорошие результаты можно получить с параметрами по умолчанию, что сокращает время, затрачиваемое на настройку параметров. Поддерживает категориальные переменные без предварительной обработки нечисловых функций. Быстрая, масштабируемая версия графического процессора, которая может обучать вашу модель с реализацией алгоритма повышения градиента на основе графического процессора, поддерживает параллелизм с несколькими картами. Повысьте точность и предложите новый механизм повышения градиента для построения моделей, чтобы уменьшить переобучение. Быстрое прогнозирование, обеспечивающее быстрое и эффективное развертывание моделей даже для задач с очень критичными задержками
Сравнение XGBoost, LightGBM и CatBoost:
Индекс оценки проблемы классификации
Очевидно, это проблема бинарной классификации. Общие метрики оценки для алгоритмов классификации следующие:
- Матрица путаницы
(1) Если экземпляр относится к положительному классу и прогнозируется, что он будет положительным классом, это истинный класс TP (True Positive). (2) Если экземпляр относится к положительному классу, но прогнозируется как отрицательный класс, это ложноотрицательный класс FN (ложноотрицательный) (3) Если экземпляр относится к отрицательному классу, но прогнозируется как положительный класс, это ложноположительный класс FP (ложноположительный). (4) Если экземпляр относится к отрицательному классу и прогнозируется как отрицательный класс, это действительно отрицательный класс TN (истинно отрицательный).
- Точность (Accuracy) Точность является широко используемым показателем оценки, но он не подходит для несбалансированных образцов.
- Точность, также известная как прецизионность, представляет собой процент правильно предсказанных положительных образцов (TP) по отношению к предсказанным положительным образцам (TP+FP).
- Отзыв, также известный как отзыв, представляет собой процент положительных образцов (TP), которые правильно предсказаны как положительные образцы (TP+FN).
- Скорость точности и скорость отзыва F1 Score влияют друг на друга. Когда скорость точности увеличивается, скорость отзыва уменьшается, а когда увеличивается скорость отзыва, скорость точности уменьшается. Если вам нужно принять во внимание эти два параметра, вам нужна комбинация скорости точности и скорости отзыва F1 Score.
- Кривая P-R (кривая Precision-Recall) Кривая P-R представляет собой кривую, описывающую изменения в точности и полноте.
- ROC (рабочая характеристика приемника)
Пространство ROC определяет частоту ложных срабатываний (FPR) по оси X и частоту истинных срабатываний (TPR) по оси Y. TPR: соотношение всех фактических положительных образцов, которые правильно признаны положительными.
FPR: соотношение ложноположительных результатов среди всех образцов, которые на самом деле являются отрицательными.
- AUC (площадь под кривой) AUC (площадь под кривой) определяется как площадь, ограниченная ROC-кривой и осью координат, очевидно, что значение этой площади не будет больше 1. Поскольку кривая ROC обычно находится выше линии y=x, значение AUC находится в диапазоне от 0,5 до 1. Чем ближе значение AUC к 1,0, тем выше достоверность метода обнаружения, при значении 0,5 достоверность самая низкая и не имеет прикладной ценности.
Общие оценочные показатели для прогнозирования управления финансовыми рисками следующие:
1. КС (Колмогоров-Смирнов) Статистика КС была предложена двумя советскими математиками А. Н. Колмогоровым и Н. В. Смирновым. В управлении рисками KS часто используется для оценки различения моделей. Чем выше степень дискриминации, тем сильнее способность модели ранжировать риски. Кривая KS похожа на кривую ROC, за исключением того, что кривая ROC использует частоту истинных положительных и ложных положительных результатов в качестве горизонтальной и вертикальной осей; Кривая K-S принимает как истинную положительную частоту, так и ложноположительную скорость в качестве вертикальной оси, а горизонтальная ось действует как выбранный порог. Формула выглядит следующим образом:
Различные KS представляют разные ситуации. Как правило, чем больше значение KS, тем сильнее способность модели различать, но это не значит, что чем больше модель, тем лучше эффект модели. Если значение KS слишком велико, модель может быть ненормально, поэтому, когда значение KS слишком велико, может потребоваться проверить, не переоснащается ли модель. Ниже приведена модельная ситуация, соответствующая значению KS, но это соответствие не является уникальным и представляет собой лишь общую тенденцию.
КС(%) | Умение различать хорошее и плохое |
---|---|
Ниже 20 | не рекомендуется |
20-40 | лучше |
41-50 | хорошо |
51-60 | очень сильный |
61-75 | очень сильный |
Выше 75 | Слишком высокая, есть подозрение, что есть проблема |
процесс интеллектуального анализа данных
Основной процесс
import pandas_profiling
pfr = pandas_profiling.ProfileReport(df_train)
pfr.to_file("./profiling.html")
Визуализация: посмотрите, как распределяются данные
Круговая диаграмма распределения выборки похожа на обучение, у выборки есть проблема дисбаланса, а соотношение непросроченных и просроченных составляет 4: 1. быть пригодным для использованияпередискретизацияипонижение частоты дискретизацииметод борьбы с
Другие поля также похожи на просмотр их распределения, например, x_001. Основными индикаторами, как показано на рисунке ниже, являются максимальное значение, минимальное значение, Q1, Q3, среднее значение, дисперсия и отклонение.
Quantile statistics
Minimum | 0 |
---|---|
5-th percentile | 0 |
Q1 | 0 |
Median | 0 |
Q3 | 0 |
95-th percentile | 1 |
Maximum | 1 |
Range | 1 |
Interquartile range | 0 |
Descriptive statistics
Standard deviation | 0.36254 |
---|---|
Coef of variation | 2.3292 |
Kurtosis | 1.6102 |
Mean | 0.15565 |
MAD | 0.26285 |
Skewness | 1.9 |
Sum | 1710 |
Variance | 0.13144 |
Memory size | 86.1 KiB |
Гистограмма распределения частот, как показано на следующем рисунке.
Для получения дополнительной информации см.:profiling.html
предварительная обработка данных
Обработка пропущенных значений
Атрибуты с более чем половиной отсутствующих значений показаны на следующем рисунке:
Основными отсутствующими элементами являются: информация о транзакции, информация о кредите, информация о погашении и информация о заявке на кредит. Если доля этих пропущенных значений больше 60%, выберите удаление и временно заполните нулями, если доля меньше 60.
График блока данных
комбинироватьprofiling.htmlикоробочный сюжетИз данных видно, что распределение относительно простое, и на x_014 (логотип управления инвестициями и капиталом) 0 и 1 приходится примерно половина.
Корреляционный анализ
Выполните корреляционный анализ данных, как показано на рисунке ниже, поля в каждой категории сильно коррелированы. Например, корреляция данных (x_188-x_199) в информации о заявке на получение кредита очень сильная.
разработка функций
Здесь построены функции, а идей построения две:
- В зависимости от выразительной силы модели и того, какие функции необходимы, перекодируйте исходные функции (преобразование функций).
- Объедините функции, чтобы создать больше функций с репрезентативными возможностями.
Особенности модельной выразительности
- Кодируйте идентификационную информацию и информацию о свойствах и комбинируйте 0-1 для кодирования (улучшайте способность представления модели)
Пропорциональная конструкция
- Пропорциональные характеристики дебетовых карт (доля различных дебетовых карт)
- Пропорциональные характеристики кредитных карт (доля различных кредитных карт)
- Пропорциональные характеристики банковских карт (доля различных банковских карт)
- Доля невыплаченных платежей
- Процент отклоненных кредитных заявок
Функция уменьшения стандартного отклонения (отражающая колебания информации)
- Восстановить стандартное отклонение в данных
средняя функция
- Сумма транзакции по карте (например, кредит) и т. д.;
- сумма каждой (например, каждой выездной) транзакции и т. д.;
- Сумма каждого погашения и т.д.
- Средние характеристики каждой командировки, страховки, обустройства дома, финансов и т.д.
- Среднее количество транзакций в месяц
- Сумма сделки в месяц
- Сумма каждого кредита, количество кредитов на учреждение, сумма кредитов на учреждение
- Средние выплаты по учреждению, по учреждению
- Сумма кредита на учреждение
- Другие средние характеристики
характеристики тренда
- 90-дневные и 30-дневные тенденции кредиторов приложений, 180-дневные и 90-дневные тенденции кредиторов приложений, 180-дневные и 30-дневные тенденции кредиторов приложений
- Тенденции успешных заявок кредиторов за 90 и 30 дней, Тенденции успешных заявок кредиторов за 180 и 90 дней, Тенденции успешных заявок кредиторов за 180 и 30 дней
- Тенденции подачи заявок на получение ссуды на 90 и 30 дней, тенденции подачи заявок на ссуду на 180 и 90 дней, тенденции подачи заявок на ссуду на 180 и 30 дней
выбор модели
Разделить тренировочный набор и тестовый набор 0,8 в качестве тренировочного набора и 0,2 в качестве тестового набора
# df_train = pd.read_csv('/home/mw/input/tianchi6504/model_sample.csv')
df = pd.read_csv('/home/mw/work/features.csv',index_col =0)
df_train, df_test, train_y, test_y = train_test_split(df, df.y, test_size=0.2, random_state=1, stratify=df.y)
df_train.y = train_y
df_test.y = test_y
df_train.reset_index()
df_train.head()
LGB
Пятикратная перекрестная проверка, разделение проверочного набора от тестового набора
kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=seed)
for fold_id, (trn_idx, val_idx) in enumerate(
kfold.split(df_train[feature_names],df_train[ycol])):
X_train = df_train.iloc[trn_idx][feature_names]
Y_train = df_train.iloc[trn_idx][ycol]
X_val = df_train.iloc[val_idx][feature_names]
Y_val = df_train.iloc[val_idx][ycol]
Найдите порог, когда f1 максимален:
max_f1 = 0
Threshold = 0
for i in range(200,400):
f1 = f1_score(df_oof['y'], df_oof['pred'] >i * 1e-3,average='macro')
# f1 = f1_score(df_oof['y'].astype('int64'), (df_oof['pred'] >=i * 1e-3).astype('int64'),average='weighted')
if max_f1 < f1:
max_f1 = f1
Threshold = i
max_f1 ,Threshold * 1e-3
стандарт оценки | AUC | Accuracy | Вспомнить (макрос) | F1Score (макро) | Precision (macro) | KS |
---|---|---|---|---|---|---|
Обучающий набор | 0.769 | 0.770 | 0.650 | 0.645 | 0.641 | 0.419 |
тестовый набор | 0.807 | 0.801 | 0.678 | 0.680 | 0.682 | 0.496 |
Кривая PR:
Рисунок ROC-кривой:
Диаграмма решения LightGBM:
Матрица путаницы:
Важность поля:
Поля x_196/x_188 инженерных конструкций признаков имеют наибольшее влияние.
CAT
стандарт оценки | AUC | Accuracy | Вспомнить (макрос) | F1Score (макро) | Precision (macro) | KS |
---|---|---|---|---|---|---|
тестовый набор | 0.777 | 0.789 | 0.648 | 0.652 | 0.658 | 0.437 |
тестовый набор | 0.818 | 0.816 | 0.675 | 0.687 | 0.703 | 0.525 |
Рисунок ROC-кривой:
Кривая PR:
График матрицы путаницы:
XGB
стандарт оценки | AUC | Accuracy | Вспомнить (макрос) | F1Score (макро) | Precision (macro) | KS |
---|---|---|---|---|---|---|
Обучающий набор | 0.778 | 0.785 | 0.676 | 0.650 | 0.654 | 0.436 |
тестовый набор | 0.832 | 0.819 | 0.686 | 0.696 | 0.708 | 0.529 |
Хотя тестовая AUC XGBoost может достигать 0,832, тренировочный набор составляет всего 0,778. Это может быть связано с разделением тестового набора и обучающего набора.
Рисунок ROC-кривой:
Кривая PR:
График матрицы путаницы:
Данные в основном сосредоточены на диагонали
передискретизация и даунсэмплинг
Понижающая дискретизация (LGB)
df_train.y.value_counts()
mini = min(df_train.y.value_counts().tolist())
df_0 = df_train[df_train.y==0].head(mini)
df_1 = df_train[df_train.y==1].head(mini)
df_train = pd.concat([df_0,df_1],axis=0)
df_train.shape
Результаты даунсэмплинга следующие, но производительность после даунсэмплинга снизилась, что может быть причиной уменьшения семплов.
стандарт оценки | AUC | Accuracy | Вспомнить (макрос) | F1Score (макро) | Precision (macro) | KS |
---|---|---|---|---|---|---|
Обучающий набор | 0.755 | 0.697 | 0.697 | 0.695 | 0.700 | 0.396 |
тестовый набор | 0.800 | 0.700 | 0.737 | 0.646 | 0.653 | 0.490 |
Передискретизация (LGB)
from imblearn.over_sampling import SMOTE
oversampler=SMOTE(random_state=0)
# user_id = df_train['user_id']
df_train, y_resampled = oversampler.fit_resample(df_train[features], df_train.y)
df_train['y'] = y_resampled
df_train['user_id'] = [i for i in range(sum(df_train.y.value_counts().tolist()))]
df_train.y.value_counts()
df_train.head()
Производительность LGB с использованием передискретизированных данных, AUC обучающей выборки может достигать 0,92, но тестовая выборка составляет всего 0,809, что, очевидно,переоснащение. Неправдоподобно.
стандарт оценки | AUC | Accuracy | Вспомнить (макрос) | F1Score (макро) | Precision (macro) | KS |
---|---|---|---|---|---|---|
Обучающий набор | 0.920 | 0.838 | 0.838 | 0.838 | 0.839 | 0.680 |
тестовый набор | 0.809 | 0.803 | 0.671 | 0.676 | 0.683 | 0.486 |
Подводя итог, ни понижающая, ни передискретизация нежелательны.
ensemble
стандарт оценки | AUC | Accuracy | Вспомнить (макрос) | F1Score (макро) | Precision (macro) | KS |
---|---|---|---|---|---|---|
тестовый набор | 0.828 | 0.806 | 0.714 | 0.704 | 0.696 | 0.428 |
Чертеж кривой P-R:
Рисунок ROC-кривой:
Оптимизация параметров
-
поиск по сетке
-
Байесовская настройка
Перед его использованием необходимо установить пакет байесовской оптимизации и выполнить следующую команду:
pip install bayesian-optimization
Основная идея байесовской настройки параметров заключается в следующем: задана оптимизированная целевая функция (обобщенная функция, вам нужно только указать вход и выход, не нужно знать внутреннюю структуру и математические свойства) и непрерывно обновлять целевую функцию. добавление точек выборки Апостериорное распределение (процесс Гаусса, пока апостериорное распределение в основном не соответствует истинному распределению). Проще говоря, он учитывает информацию о последнем параметре, чтобы лучше настроить текущий параметр.
Шаги байесовской настройки следующие: Определите функцию оптимизации (rf_cv) Моделирование Определите параметры, которые необходимо оптимизировать Получите результат оптимизации и верните метрику оценки для оптимизации.
from sklearn.model_selection import cross_val_score
"""定义优化函数"""
def rf_cv_lgb(num_leaves, max_depth, bagging_fraction, feature_fraction, bagging_freq, min_data_in_leaf,
min_child_weight, min_split_gain, reg_lambda, reg_alpha):
# 建立模型
model_lgb = lgb.LGBMClassifier(boosting_type='gbdt', bjective='binary', metric='auc',
learning_rate=0.1, n_estimators=5000,
num_leaves=int(num_leaves), max_depth=int(max_depth),
bagging_fraction=round(bagging_fraction, 2), feature_fraction=round(feature_fraction, 2),
bagging_freq=int(bagging_freq), min_data_in_leaf=int(min_data_in_leaf),
min_child_weight=min_child_weight, min_split_gain=min_split_gain,
reg_lambda=reg_lambda, reg_alpha=reg_alpha,
n_jobs= 8
)
val = cross_val_score(model_lgb, X_train_split, y_train_split, cv=5, scoring='roc_auc').mean()
return val
from bayes_opt import BayesianOptimization
"""定义优化参数"""
bayes_lgb = BayesianOptimization(
rf_cv_lgb,
{
'num_leaves':(10, 200),
'max_depth':(3, 20),
'bagging_fraction':(0.5, 1.0),
'feature_fraction':(0.5, 1.0),
'bagging_freq':(0, 100),
'min_data_in_leaf':(10,100),
'min_child_weight':(0, 10),
'min_split_gain':(0.0, 1.0),
'reg_alpha':(0.0, 10),
'reg_lambda':(0.0, 10),
}
)
"""开始优化"""
bayes_lgb.maximize(n_iter=10)
Оптимальные параметры, полученные с помощью байесовской оптимизации, следующие:
оптимальные параметры | |
---|---|
bagging_fraction | 0.82 |
bagging_freq | 12 |
feature_fraction | 0.67 |
max_depth | 19 |
min_child_weight | 7 |
min_data_in_leaf | 92 |
min_split_gain | 0.56 |
num_leaves | 178 |
reg_alpha | 9 |
reg_lambda | 1 |
Сравнение экспериментальных результатов
Используя метод наложения, пятикратные результаты прогнозирования перекрестной проверки трех методов CatBoost, LightGBM и XGBoost используются в качестве новых полей, а для прогнозирования снова используется логистическая регрессия.Результаты следующие. AUC, Accuracy, Recall, F1 Score, Precision, KS — все они достигли лучших результатов.
Критерии оценки (набор тестов) | AUC | Accuracy | Recall | F1 Score | Precision | KS |
---|---|---|---|---|---|---|
CatBoost | 0.818 | 0.816 | 0.675 | 0.687 | 0.703 | 0.525 |
LightGBM | 0.807 | 0.801 | 0.678 | 0.680 | 0.682 | 0.496 |
XGBoost | 0.832 | 0.819 | 0.686 | 0.696 | 0.708 | 0.529 |
ensemble | 0.828 | 0.806 | 0.714 | 0.704 | 0.696 | 0.428 |
Суммировать
В рамках этого проекта все знания, полученные в классе интеллектуального анализа данных, связаны последовательно, от предварительной обработки данных, проектирования функций, выбора модели до настройки модели и, наконец, слияния моделей. Окончательный AUC также может получить хороший балл 0,83. Это может быть справочником по контролю рисков микрофинансового бизнеса. Однако эта оценка имеет определенные ограничения, в определенной степени причиной небольшой выборки данных является всего 10 тыс. данных. Преимущество этой статьи в том, что спецификация процесса интеллектуального анализа данных дает лучшее представление о построении признаков; кроме того, недостаток этой статьи в том, что из-за спешки в ней рассматривается только использование древовидных моделей, а не рассматривает другие модели, такие как глубокое обучение.
использованная литература
Ма Сяоцзюнь, Сун Яньци, Чанг Байшу и др. Исследование приложений модели прогнозирования дефолта P2P на основе алгоритма CatBoost [J], Статистический и информационный форум, 2020, 7
Цю Вэйдун, Исследование прогнозирования дефолта по онлайн-займу P2P на основе модели LightGBM [D], Университет финансов и экономики Цзянси, 2020 г.
Ю Лин, Ву Тецзюнь, Обучение ансамблю: обзор повышающих алгоритмов [D], 2004.
Ван Исен, Ся Шутао, Обзор алгоритма случайного леса для ансамблевого обучения [J], Информационные и коммуникационные технологии, 2018, 1.
Пэн Рунзе Модель оценки личного кредита, основанная на алгоритме обучения стекового ансамбля [J], Статистика и применение, 2017, 6: 411.
Anna Veronika Dorogush, Andrey Gulin, Gleb Gusev, Nikita Kazeev, Liudmila Ostroumova Prokhorenkova, Aleksandr Vorobev "Fighting biases with dynamic boosting". arXiv:1706.09516, 2017
Anna Veronika Dorogush, Vasily Ershov, Andrey Gulin "CatBoost: gradient boosting with categorical features support". Workshop on ML Systems at NIPS 2017