Заключительная домашняя работа по интеллектуальному анализу данных, версия 3 | Испытание в августе

машинное обучение алгоритм

код показывает, как показано ниже:Резюме конкурса алгоритмов 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 деревьев получено, и требуется предсказаниеОценка выборки фактически основана на характеристиках выборки.В каждом дереве она упадет на соответствующий лист-узел.Каждый лист-узел соответствует оценке.И наконец, оценка, соответствующая каждому дереву необходимо сложить, чтобы получить предсказание выборки.image.png

  • LightGBM

LightGBM — это быстрый распределенный высокопроизводительный алгоритм повышения градиента на основе дерева решений. Его можно использовать в задачах машинного обучения, таких как классификация, регрессия и сортировка. Поскольку он основан на алгоритме дерева решений, он использует оптимальную листовую стратегию для разделения листовых узлов, а другие алгоритмы подъема обычно используют глубину или уровень, а не лист. Следовательно, в алгоритме LightGBM при росте до одного и того же листового узла листовой алгоритм уменьшает больше потерь, чем поуровневый алгоритм. Это приводит к более высокой точности, чем любой другой существующий алгоритм повышения. При этом его скорость поражает, поэтому алгоритм и получил название Light. Листовое разбиение приводит к увеличению сложности и может привести к переоснащению. Но это можно преодолеть, задав другой параметр max-depth, который разбивает максимальную глубину результирующего дерева. Подводя итог, LightGBM использует алгоритм гистограммы для выбора функций и стратегию роста дерева решений по листам, что выделяет его среди ряда алгоритмов повышения, основанных на моделях деревьев.

Преимущества LightGBM:

Более высокая скорость обучения и более высокая эффективность: LightGBM использует алгоритм на основе гистограммы. Например, он объединяет непрерывные значения признаков в дискретные ячейки, что становится быстрее во время обучения. Меньший объем памяти: использование дискретных бинов для сохранения и замены непрерывных значений приводит к меньшему объему памяти, сохраняйте значение только после дискретизации признаков, и этого значения обычно достаточно для хранения в виде 8-битного целого числа, потребление памяти может быть уменьшено до 1 /8 оригинала. Более высокая точность (по сравнению с любым другим алгоритмом повышения): он создает более сложные деревья, чем разбиение по уровням с помощью разбиения по листам, что является основным фактором в достижении более высокой точности. Однако иногда это может привести к переоснащению, но мы можем предотвратить переоснащение, установив параметр max-depth. Возможность обработки больших данных: по сравнению с XGBoost, он также имеет возможность обрабатывать большие данные благодаря сокращению времени обучения. Поддерживает параллельное обучение: параллелизм функций и параллелизм данных.

Сравнение между XGBoost и LightGBM выглядит следующим образом:

  • CatBoost

CatBoost в основном имеет следующие пять характеристик:

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

Сравнение XGBoost, LightGBM и CatBoost:

image.png

Индекс оценки проблемы классификации

Очевидно, это проблема бинарной классификации. Общие метрики оценки для алгоритмов классификации следующие:

  1. Матрица путаницы

(1) Если экземпляр относится к положительному классу и прогнозируется, что он будет положительным классом, это истинный класс TP (True Positive). (2) Если экземпляр относится к положительному классу, но прогнозируется как отрицательный класс, это ложноотрицательный класс FN (ложноотрицательный) (3) Если экземпляр относится к отрицательному классу, но прогнозируется как положительный класс, это ложноположительный класс FP (ложноположительный). (4) Если экземпляр относится к отрицательному классу и прогнозируется как отрицательный класс, это действительно отрицательный класс TN (истинно отрицательный).

  1. Точность (Accuracy) Точность является широко используемым показателем оценки, но он не подходит для несбалансированных образцов.
Accuracy=TP+TNTP+TN+FP+FNAccuracy = \frac{TP + TN}{TP + TN + FP + FN}
  1. Точность, также известная как прецизионность, представляет собой процент правильно предсказанных положительных образцов (TP) по отношению к предсказанным положительным образцам (TP+FP).
Precision=TPTP+FPPrecision = \frac{TP}{TP + FP}
  1. Отзыв, также известный как отзыв, представляет собой процент положительных образцов (TP), которые правильно предсказаны как положительные образцы (TP+FN).
Recall=TPTP+FNRecall = \frac{TP}{TP + FN}
  1. Скорость точности и скорость отзыва F1 Score влияют друг на друга. Когда скорость точности увеличивается, скорость отзыва уменьшается, а когда увеличивается скорость отзыва, скорость точности уменьшается. Если вам нужно принять во внимание эти два параметра, вам нужна комбинация скорости точности и скорости отзыва F1 Score.
F1Score=21Precision+1RecallF1-Score = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}}
  1. Кривая P-R (кривая Precision-Recall) Кривая P-R представляет собой кривую, описывающую изменения в точности и полноте.

image.png

  1. ROC (рабочая характеристика приемника)

Пространство ROC определяет частоту ложных срабатываний (FPR) по оси X и частоту истинных срабатываний (TPR) по оси Y. TPR: соотношение всех фактических положительных образцов, которые правильно признаны положительными.

TPR=TPTP+FNTPR = \frac{TP}{TP + FN}

FPR: соотношение ложноположительных результатов среди всех образцов, которые на самом деле являются отрицательными.

FPR=FPFP+TNFPR = \frac{FP}{FP + TN}
  1. AUC (площадь под кривой) AUC (площадь под кривой) определяется как площадь, ограниченная ROC-кривой и осью координат, очевидно, что значение этой площади не будет больше 1. Поскольку кривая ROC обычно находится выше линии y=x, значение AUC находится в диапазоне от 0,5 до 1. Чем ближе значение AUC к 1,0, тем выше достоверность метода обнаружения, при значении 0,5 достоверность самая низкая и не имеет прикладной ценности.

Общие оценочные показатели для прогнозирования управления финансовыми рисками следующие:

1. КС (Колмогоров-Смирнов) Статистика КС была предложена двумя советскими математиками А. Н. Колмогоровым и Н. В. Смирновым. В управлении рисками KS часто используется для оценки различения моделей. Чем выше степень дискриминации, тем сильнее способность модели ранжировать риски. Кривая KS похожа на кривую ROC, за исключением того, что кривая ROC использует частоту истинных положительных и ложных положительных результатов в качестве горизонтальной и вертикальной осей; Кривая K-S принимает как истинную положительную частоту, так и ложноположительную скорость в качестве вертикальной оси, а горизонтальная ось действует как выбранный порог. Формула выглядит следующим образом:

KS=max(TPRFPR)KS=max(TPR-FPR)

Различные 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. быть пригодным для использованияпередискретизацияипонижение частоты дискретизацииметод борьбы с

image.png

Другие поля также похожи на просмотр их распределения, например, 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

Гистограмма распределения частот, как показано на следующем рисунке.image.png

image.png

image.png

Для получения дополнительной информации см.:profiling.html

предварительная обработка данных

Обработка пропущенных значений

Атрибуты с более чем половиной отсутствующих значений показаны на следующем рисунке:

image.png

Основными отсутствующими элементами являются: информация о транзакции, информация о кредите, информация о погашении и информация о заявке на кредит. Если доля этих пропущенных значений больше 60%, выберите удаление и временно заполните нулями, если доля меньше 60.

График блока данных

image.png

комбинироватьprofiling.htmlикоробочный сюжетИз данных видно, что распределение относительно простое, и на x_014 (логотип управления инвестициями и капиталом) 0 и 1 приходится примерно половина.

Корреляционный анализ

Выполните корреляционный анализ данных, как показано на рисунке ниже, поля в каждой категории сильно коррелированы. Например, корреляция данных (x_188-x_199) в информации о заявке на получение кредита очень сильная.

разработка функций

Здесь построены функции, а идей построения две:

  1. В зависимости от выразительной силы модели и того, какие функции необходимы, перекодируйте исходные функции (преобразование функций).
  2. Объедините функции, чтобы создать больше функций с репрезентативными возможностями.

Особенности модельной выразительности

  1. Кодируйте идентификационную информацию и информацию о свойствах и комбинируйте 0-1 для кодирования (улучшайте способность представления модели)

Пропорциональная конструкция

  1. Пропорциональные характеристики дебетовых карт (доля различных дебетовых карт)
  2. Пропорциональные характеристики кредитных карт (доля различных кредитных карт)
  3. Пропорциональные характеристики банковских карт (доля различных банковских карт)
  4. Доля невыплаченных платежей
  5. Процент отклоненных кредитных заявок

Функция уменьшения стандартного отклонения (отражающая колебания информации)

  1. Восстановить стандартное отклонение в данных

средняя функция

  1. Сумма транзакции по карте (например, кредит) и т. д.;
  2. сумма каждой (например, каждой выездной) транзакции и т. д.;
  3. Сумма каждого погашения и т.д.
  4. Средние характеристики каждой командировки, страховки, обустройства дома, финансов и т.д.
  5. Среднее количество транзакций в месяц
  6. Сумма сделки в месяц
  7. Сумма каждого кредита, количество кредитов на учреждение, сумма кредитов на учреждение
  8. Средние выплаты по учреждению, по учреждению
  9. Сумма кредита на учреждение
  10. Другие средние характеристики

характеристики тренда

  1. 90-дневные и 30-дневные тенденции кредиторов приложений, 180-дневные и 90-дневные тенденции кредиторов приложений, 180-дневные и 30-дневные тенденции кредиторов приложений
  2. Тенденции успешных заявок кредиторов за 90 и 30 дней, Тенденции успешных заявок кредиторов за 180 и 90 дней, Тенденции успешных заявок кредиторов за 180 и 30 дней
  3. Тенденции подачи заявок на получение ссуды на 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:

image.png

Рисунок ROC-кривой:

image.png

Диаграмма решения LightGBM:

image.png

Матрица путаницы:

image.png

Важность поля:

Поля 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-кривой:

image.png

Кривая PR:

image.png

График матрицы путаницы:

image.png

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-кривой:

image.png

Кривая PR:

image.png

График матрицы путаницы:

Данные в основном сосредоточены на диагонали

image.png

передискретизация и даунсэмплинг

Понижающая дискретизация (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:

image.png

Рисунок ROC-кривой:

image.png

Оптимизация параметров

  • поиск по сетке

  • Байесовская настройка

Перед его использованием необходимо установить пакет байесовской оптимизации и выполнить следующую команду:

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

扫码_搜索联合传播样式-标准色版.png