Ссылка на dataset (https://www.kaggle.com/datasets/wenruliu/adult-income-dataset/data). Набор данных содержит демографическую информацию о переписи населения и используется для прогнозирования того, превышает ли годовой доход человека 50 000 долларов США.
Набор данных содержит 48 842 наблюдения, 14 признаков и 1 целевая переменная (income).
age: Возраст человека.workclass: Тип работодателя. Категориальный признак.fnlwgt: Вес, присвоенный Бюро переписи населения для представления долей населения.education: Уровень образования. Категориальный признак с пятью значениями.education-num: Количество лет обучения.marital-status: Семейное положение. Категориальный признак.occupation: Род занятий. Категориальный признак.relationship: Семейная роль. Категориальный признак.race: Раса. Категориальный признак.sex: Пол. Категориальный признак.capital-gain: Доход от капиталовложений (в долларах).capital-loss: Убыток от капиталовложений (в долларах).hours-per-week: Количество рабочих часов в неделю.native-country: Страна происхождения. Категориальный признак.
income: Категориальная переменная, указывающая, превышает ли годовой доход человека 50 000 долларов США. Имеет два значения:<=50Kи>50K.
- Целевая переменная имеет ярко выраженный
дисбалансклассов. - В данных
отсутствуетмультиколлинеарность. - Все количественные переменные
оказываютвлияние на целевую переменную. - Для прогнозирования необходимо использовать модель с учетом
дисбаланса классов.
- Удалил строки с дубликатами.
- Преобразовал типы данных: для количественных переменных установил тип
float32, а для категориальныхcategory. - С помощью
RFECVотобрал факторы. Удалилhas-spouse,gender,race,self-employed,gov-sector,from-usa, full-time,capital-gain_yeo,capital-loss_yeo.
- За счет удаления факторов скорость работы модели увеличилась.
- В начале было зафиксировано:
is_unbalance=True. - Стартовое количество деревьев (
n_estimators) было подобрано с помощью замера метрики (average_precision) на кросс-валидации с критерием остановаearly_stopping_rounds=50. Оно равнялось126. - Количество листов в дереве (
num_leaves) было подобрано с помощью замера метрики на кросс-валидации. Значения были в диапазоне от7до50. Лучшим оказалось27. - Параметры сэмплирования относительно столбцов (
colsample_bytree) и строк (subsample) подбирались таким же образом. Оптимальные значения -subsample=0.1,colsample_bytree=0.4. - Скорректировал количество деревьев (
n_estimators) - оптимальным оказалось число118.
- Доля правильных ответов для положительного класса (
>50K) сильно увеличилась. - Увеличилась метрика
recallдля положительного класса (>50K).
| Метрика | Train | Test |
|---|---|---|
| roc_auc | 0.943 | 0.928 |
| accuracy | 0.845 | 0.830 |
| weighted avg precision | 0.881 | 0.866 |
| weighted avg recall | 0.845 | 0.830 |
| weighted avg f1-score | 0.853 | 0.839 |
Отсутствует переобучение.