{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "439391af-20ec-4171-a3a5-e3695b2fb801",
   "metadata": {},
   "source": [
    "## Public/Privat Score:  0.49766/0.49508"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "796a78f6-cf97-408a-a240-57bf06ff1447",
   "metadata": {},
   "source": [
    "# Дневник улучшений\n",
    "\n",
    "1) Генерация признаков: 0.54\n",
    "\n",
    "2) Подбор отимальных весов для class_weights: 0.51\n",
    "\n",
    "3) Интерпретация построенной модели град. бустинга с помощью SHAP-анализа: 0.5035\n",
    "\n",
    "4) Тюнинг гиперпараметров бустинга и ансамблирование моделей: 0.49811\n",
    "\n",
    "5) Обучение ансамбля моделей на всех данных без валидации: 0.49766\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 323,
   "id": "1b530ffc-7fd1-4a69-a2a8-dc0463d8ba55",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from datetime import timedelta\n",
    "\n",
    "import catboost\n",
    "from catboost import CatBoostClassifier\n",
    "import lightgbm as lgb\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "import optuna\n",
    "import shap\n",
    "from scipy.optimize import minimize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "b15a172c-5ca5-444a-9ebe-629f006a2463",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = pd.read_parquet(\"train.pa\")\n",
    "transactions_df = pd.read_parquet(\"df_transaction.pa\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "5bb30d11-e8de-4ab1-bd82-d5524ecc6907",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Определяем клиентов в тесте\n",
    "test_clients = (\n",
    "    transactions_df.loc[~transactions_df.client_num.isin(df_train.client_num), \"client_num\"]\n",
    "    .unique()\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bf892cde-761d-4931-a63c-622f527c4239",
   "metadata": {},
   "source": [
    "## Генерация признаков"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "933d1cc2-6717-4947-bda4-f0ad912ddb4a",
   "metadata": {},
   "source": [
    "Были созданы следующие признаки:\n",
    "\n",
    "### 1. Базовые финансовые показатели\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| num_transactions | Общее количество транзакций |\n",
    "| avg_amount | Средняя сумма транзакции |\n",
    "| min_amount | Минимальная сумма транзакции |\n",
    "| max_amount | Максимальная сумма транзакции |\n",
    "| std_amount | Стандартное отклонение суммы транзакции |\n",
    "| median_amount | Медианная сумма транзакции |\n",
    "| total_amount | Общая сумма всех транзакций |\n",
    "| q25_amount | 25-й перцентиль суммы транзакции |\n",
    "| q75_amount | 75-й перцентиль суммы транзакции |\n",
    "| transactions_above_500 | Количество транзакций > 500 руб |\n",
    "| transactions_above_1000 | Количество транзакций > 1000 руб |\n",
    "| transactions_above_2000 | Количество транзакций > 2000 руб |\n",
    "| transactions_above_5000 | Количество транзакций > 5000 руб |\n",
    "| transactions_above_10000 | Количество транзакций > 10000 руб |\n",
    "| transactions_above_20000 | Количество транзакций > 20000 руб |\n",
    "| transactions_above_50000 | Количество транзакций > 50000 руб |\n",
    "| transactions_above_100000 | Количество транзакций > 100000 руб |\n",
    "| transactions_above_200000 | Количество транзакций > 200000 руб |\n",
    "\n",
    "### 2. Временные паттерны\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| weekday_transactions | Количество транзакций в будние дни |\n",
    "| weekend_transactions | Количество транзакций в выходные дни |\n",
    "| morning_transactions | Количество транзакций утром (6-12) |\n",
    "| afternoon_transactions | Количество транзакций днем (12-18) |\n",
    "| evening_transactions | Количество транзакций вечером (18-24) |\n",
    "| night_transactions | Количество транзакций ночью (0-6) |\n",
    "| weekday_sum | Сумма транзакций в будние дни |\n",
    "| weekend_sum | Сумма транзакций в выходные дни |\n",
    "| most_common_hour | Самый частый час транзакции (мода) |\n",
    "| transaction_hour_std | Стандартное отклонение часа транзакции |\n",
    "| weekend_weekday_ratio | Отношение суммы выходных к сумме будних |\n",
    "| weekday_weekend_ratio | Отношение суммы будних к сумме выходных |\n",
    "| evening_night_ratio | Отношение количества вечерних транзакций к ночным |\n",
    "\n",
    "### 3. Активность по месяцам\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| month_1_count | Количество транзакций в январе |\n",
    "| month_2_count | Количество транзакций в феврале |\n",
    "| ... | ... (аналогично для месяцев 3-12) |\n",
    "| month_12_count | Количество транзакций в декабре |\n",
    "| month_1_sum | Сумма транзакций в январе |\n",
    "| month_2_sum | Сумма транзакций в феврале |\n",
    "| ... | ... (аналогично для месяцев 3-12) |\n",
    "| month_12_sum | Сумма транзакций в декабре |\n",
    "| month_1_ratio | Доля транзакций в январе от общего числа |\n",
    "| month_2_ratio | Доля транзакций в феврале от общего числа |\n",
    "| ... | ... (аналогично для месяцев 3-12) |\n",
    "| month_12_ratio | Доля транзакций в декабре от общего числа |\n",
    "\n",
    "### 4. Категориальные признаки\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| unique_mcc | Количество уникальных MCC-кодов |\n",
    "| unique_merchants | Количество уникальных мерчантов |\n",
    "| most_common_mcc | Самый частый MCC-код |\n",
    "| most_common_mcc_freq | Доля транзакций с самым частым MCC-кодом |\n",
    "| most_common_merchant | Самый частый мерчант |\n",
    "| most_common_merchant_freq | Доля транзакций с самым частым мерчантом |\n",
    "\n",
    "### 5. Поведенческие характеристики\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| min_time_diff_seconds | Минимальный интервал между транзакциями (сек) |\n",
    "| max_time_diff_seconds | Максимальный интервал между транзакциями (сек) |\n",
    "| median_time_diff_seconds | Медианный интервал между транзакциями (сек) |\n",
    "| mean_time_diff_seconds | Средний интервал между транзакциями (сек) |\n",
    "| first_transaction | Порядковый номер даты первой транзакции |\n",
    "| last_transaction | Порядковый номер даты последней транзакции |\n",
    "| recency_days | Дней с последней транзакции до даты среза |\n",
    "| unique_days | Количество уникальных дней с транзакциями |\n",
    "| activity_duration | Продолжительность активности (дни) |\n",
    "| median_transaction_hour | Час медианной транзакции |\n",
    "| transaction_frequency | Частота транзакций (транзакций/день) |\n",
    "\n",
    "### 6. Топ MCC признаки (топ-320)\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| mcc_{code}_count | Количество транзакций для MCC-кода {code} |\n",
    "| mcc_{code}_sum | Сумма транзакций для MCC-кода {code} |\n",
    "\n",
    "### 7. Топ мерчанты (топ-320)\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| merch_{merchant}_count | Количество транзакций для мерчанта {merchant} |\n",
    "| merch_{merchant}_sum | Сумма транзакций для мерчанта {merchant} |\n",
    "\n",
    "### 8. Активность в последние периоды\n",
    "| Название признака | Описание |\n",
    "|-------------------|----------|\n",
    "| recent_transactions_1 | Количество транзакций за последние 1 день |\n",
    "| recent_transactions_2 | Количество транзакций за последние 2 дня |\n",
    "| recent_transactions_3 | Количество транзакций за последние 3 дня |\n",
    "| recent_transactions_5 | Количество транзакций за последние 5 дней |\n",
    "| recent_transactions_7 | Количество транзакций за последние 7 дней |\n",
    "| recent_transactions_14 | Количество транзакций за последние 14 дней |\n",
    "| recent_transactions_21 | Количество транзакций за последние 21 день |\n",
    "| recent_transactions_30 | Количество транзакций за последние 30 дней |\n",
    "| recent_total_amount_1 | Сумма транзакций за последние 1 день |\n",
    "| recent_total_amount_2 | Сумма транзакций за последние 2 дня |\n",
    "| ... | ... (аналогично для всех периодов) |\n",
    "| recent_total_amount_30 | Сумма транзакций за последние 30 дней |\n",
    "| recent_avg_amount_1 | Средняя сумма транзакции за последние 1 день |\n",
    "| recent_avg_amount_2 | Средняя сумма транзакции за последние 2 дня |\n",
    "| ... | ... (аналогично для всех периодов) |\n",
    "| recent_avg_amount_30 | Средняя сумма транзакции за последние 30 дней |\n",
    "| recent_activity_ratio_1 | Доля транзакций за последние 1 день |\n",
    "| recent_activity_ratio_2 | Доля транзакций за последние 2 дня |\n",
    "| ... | ... (аналогично для всех периодов) |\n",
    "| recent_activity_ratio_30 | Доля транзакций за последние 30 дней |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "66685618-50a5-487b-8be0-61f24c869943",
   "metadata": {},
   "outputs": [],
   "source": [
    "# ========== Извлечение временных признаков ==========\n",
    "transactions_df['hour'] = transactions_df['date_time'].dt.hour\n",
    "transactions_df['day_of_week'] = transactions_df['date_time'].dt.dayofweek\n",
    "transactions_df['is_weekend'] = (transactions_df['day_of_week'] >= 5).astype('int')\n",
    "transactions_df['month'] = transactions_df['date_time'].dt.month\n",
    "transactions_df['date'] = transactions_df['date_time'].dt.date\n",
    "\n",
    "def get_time_period(hour):\n",
    "    if 6 <= hour < 12:\n",
    "        return 'morning'\n",
    "    elif 12 <= hour < 18:\n",
    "        return 'afternoon'\n",
    "    elif 18 <= hour < 24:\n",
    "        return 'evening'\n",
    "    else:\n",
    "        return 'night'\n",
    "\n",
    "transactions_df['time_period'] = transactions_df['hour'].apply(get_time_period).astype('category')\n",
    "\n",
    "# ========== Базовые финансовые показатели ==========\n",
    "amount_thresholds = [500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000]\n",
    "financial_features = pd.DataFrame()\n",
    "financial_features['client_num'] = transactions_df['client_num'].unique()\n",
    "\n",
    "# Базовые финансовые метрики\n",
    "base_features = transactions_df.groupby('client_num').agg(\n",
    "    num_transactions=('date_time', 'count'),\n",
    "    avg_amount=('amount', 'mean'),\n",
    "    min_amount=('amount', 'min'),\n",
    "    max_amount=('amount', 'max'),\n",
    "    std_amount=('amount', 'std'),\n",
    "    median_amount=('amount', 'median'),\n",
    "    total_amount=('amount', 'sum'),\n",
    "    q25_amount=('amount', lambda x: x.quantile(0.25)),\n",
    "    q75_amount=('amount', lambda x: x.quantile(0.75))\n",
    ").reset_index()\n",
    "\n",
    "financial_features = financial_features.merge(base_features, on='client_num', how='left')\n",
    "\n",
    "# Пороговые признаки\n",
    "for thresh in amount_thresholds:\n",
    "    above_threshold = transactions_df[transactions_df['amount'] > thresh].groupby('client_num').size().reset_index(name=f'transactions_above_{thresh}')\n",
    "    financial_features = financial_features.merge(above_threshold, on='client_num', how='left').fillna({f'transactions_above_{thresh}': 0})\n",
    "\n",
    "# ========== Временные паттерны ==========\n",
    "time_features = transactions_df.groupby('client_num').agg(\n",
    "    weekday_transactions=('is_weekend', lambda x: (x == 0).sum()),\n",
    "    weekend_transactions=('is_weekend', lambda x: (x == 1).sum()),\n",
    "    morning_transactions=('time_period', lambda x: (x == 'morning').sum()),\n",
    "    afternoon_transactions=('time_period', lambda x: (x == 'afternoon').sum()),\n",
    "    evening_transactions=('time_period', lambda x: (x == 'evening').sum()),\n",
    "    night_transactions=('time_period', lambda x: (x == 'night').sum()),\n",
    "    weekday_sum=('amount', lambda x: x[transactions_df.loc[x.index, 'is_weekend'] == 0].sum()),\n",
    "    weekend_sum=('amount', lambda x: x[transactions_df.loc[x.index, 'is_weekend'] == 1].sum()),\n",
    "    most_common_hour=('hour', lambda x: x.mode()[0] if not x.mode().empty else -1),\n",
    "    transaction_hour_std=('hour', 'std')\n",
    ").reset_index().fillna(0)\n",
    "\n",
    "# Финансовые отношения\n",
    "time_features['weekend_weekday_ratio'] = time_features['weekend_sum'] / (time_features['weekday_sum'] + 1e-6)\n",
    "time_features['weekday_weekend_ratio'] = time_features['weekday_sum'] / (time_features['weekend_sum'] + 1e-6)\n",
    "time_features['evening_night_ratio'] = (time_features['evening_transactions'] + 1) / (time_features['night_transactions'] + 1)\n",
    "\n",
    "# ========== Активность по месяцам ==========\n",
    "# Создаем временный DataFrame с активностью по месяцам\n",
    "monthly_counts = transactions_df.groupby(['client_num', 'month']).size().reset_index(name='count')\n",
    "monthly_sums = transactions_df.groupby(['client_num', 'month'])['amount'].sum().reset_index(name='sum')\n",
    "\n",
    "# Формируем фичи в широком формате\n",
    "monthly_counts_wide = monthly_counts.pivot(index='client_num', columns='month', values='count').fillna(0)\n",
    "monthly_sums_wide = monthly_sums.pivot(index='client_num', columns='month', values='sum').fillna(0)\n",
    "\n",
    "# Переименовываем колонки\n",
    "months = monthly_counts_wide.columns\n",
    "monthly_counts_wide.columns = [f'month_{int(month)}_count' for month in months]\n",
    "monthly_sums_wide.columns = [f'month_{int(month)}_sum' for month in months]\n",
    "\n",
    "# Рассчитываем доли\n",
    "total_counts = monthly_counts_wide.sum(axis=1)\n",
    "monthly_ratios = monthly_counts_wide.div(total_counts, axis=0)\n",
    "monthly_ratios.columns = [f'month_{int(month)}_ratio' for month in months]\n",
    "\n",
    "# Объединяем все месячные фичи\n",
    "monthly_features = pd.concat([monthly_counts_wide, monthly_sums_wide, monthly_ratios], axis=1).reset_index()\n",
    "\n",
    "# ========== Категориальные признаки ==========\n",
    "categorical_features = transactions_df.groupby('client_num').agg(\n",
    "    unique_mcc=('mcc_code', 'nunique'),\n",
    "    unique_merchants=('merchant_name', 'nunique'),\n",
    "    most_common_mcc=('mcc_code', lambda x: x.value_counts().index[0]),\n",
    "    most_common_mcc_freq=('mcc_code', lambda x: x.value_counts().iloc[0] / len(x)),\n",
    "    most_common_merchant=('merchant_name', lambda x: x.value_counts().index[0]),\n",
    "    most_common_merchant_freq=('merchant_name', lambda x: x.value_counts().iloc[0] / len(x))\n",
    ").reset_index()\n",
    "\n",
    "# ========== Поведенческие характеристики ==========\n",
    "snapshot_date = transactions_df['date_time'].max() + pd.Timedelta(days=1)\n",
    "transactions_sorted = transactions_df.sort_values(['client_num', 'date_time'])\n",
    "\n",
    "def calculate_behavior_features(group):\n",
    "    group = group.sort_values('date_time')\n",
    "    first_tx = group['date_time'].min()\n",
    "    last_tx = group['date_time'].max()\n",
    "    \n",
    "    if len(group) > 1:\n",
    "        diffs = group['date_time'].diff().dt.total_seconds()\n",
    "        min_diff = diffs.min()\n",
    "        max_diff = diffs.max()\n",
    "        median_diff = diffs.median()\n",
    "        mean_diff = diffs.mean()\n",
    "    else:\n",
    "        min_diff = max_diff = median_diff = mean_diff = 0\n",
    "    \n",
    "    recency_days = (snapshot_date - last_tx).days\n",
    "    unique_days = group['date'].nunique()\n",
    "    median_time = group['date_time'].median()\n",
    "    \n",
    "    return pd.Series({\n",
    "        'min_time_diff_seconds': min_diff,\n",
    "        'max_time_diff_seconds': max_diff,\n",
    "        'median_time_diff_seconds': median_diff,\n",
    "        'mean_time_diff_seconds': mean_diff,\n",
    "        'first_transaction': first_tx,\n",
    "        'last_transaction': last_tx,\n",
    "        'recency_days': recency_days,\n",
    "        'unique_days': unique_days,\n",
    "        'median_transaction_time': median_time\n",
    "    })\n",
    "\n",
    "time_diff_features = transactions_sorted.groupby('client_num').apply(calculate_behavior_features).reset_index()\n",
    "time_diff_features['activity_duration'] = (time_diff_features['last_transaction'] - time_diff_features['first_transaction']).dt.days + 1\n",
    "time_diff_features['median_transaction_hour'] = time_diff_features['median_transaction_time'].dt.hour\n",
    "time_diff_features.drop('median_transaction_time', axis=1, inplace=True)\n",
    "time_diff_features['transaction_frequency'] = financial_features['num_transactions'] / time_diff_features['activity_duration'].replace(0, 1)\n",
    "\n",
    "# ========== Топ MCC и Мерчанты ==========\n",
    "def add_top_features(df, column, prefix, n=320):\n",
    "    top_values = df[column].value_counts().head(n).index\n",
    "    features = pd.DataFrame({'client_num': df['client_num'].unique()})\n",
    "    \n",
    "    for value in top_values:\n",
    "        # Для мерчантов заменяем проблемные символы\n",
    "        safe_value = str(value).replace(' ', '_').replace('/', '_').replace('\\\\', '_').replace('.', '_')\n",
    "        \n",
    "        # Количество транзакций\n",
    "        count_df = df[df[column] == value].groupby('client_num').size().reset_index(name=f'{prefix}_{safe_value}_count')\n",
    "        features = features.merge(count_df, on='client_num', how='left')\n",
    "        \n",
    "        # Сумма транзакций\n",
    "        sum_df = df[df[column] == value].groupby('client_num')['amount'].sum().reset_index(name=f'{prefix}_{safe_value}_sum')\n",
    "        features = features.merge(sum_df, on='client_num', how='left')\n",
    "    \n",
    "    return features.fillna(0)\n",
    "\n",
    "top_mcc_features = add_top_features(transactions_df, 'mcc_code', 'mcc')\n",
    "top_merchant_features = add_top_features(transactions_df, 'merchant_name', 'merch')\n",
    "\n",
    "# ========== Активность в последние периоды ==========\n",
    "max_date = transactions_df['date_time'].max()\n",
    "periods = [30, 21, 14, 7, 5, 3, 2, 1]\n",
    "recent_activities = {}\n",
    "\n",
    "for period in periods:\n",
    "    last_n_days = transactions_df[transactions_df['date_time'] > (max_date - timedelta(days=period))]\n",
    "    activity = last_n_days.groupby('client_num').agg(\n",
    "        **{\n",
    "            f'recent_transactions_{period}': ('date_time', 'count'),\n",
    "            f'recent_total_amount_{period}': ('amount', 'sum'),\n",
    "            f'recent_avg_amount_{period}': ('amount', 'mean')\n",
    "        }\n",
    "    ).reset_index()\n",
    "    recent_activities[period] = activity\n",
    "\n",
    "# ========== Объединение всех признаков ==========\n",
    "features = financial_features.merge(time_features, on='client_num', how='left')\n",
    "features = features.merge(categorical_features, on='client_num', how='left')\n",
    "features = features.merge(time_diff_features, on='client_num', how='left')\n",
    "features = features.merge(monthly_features, on='client_num', how='left')\n",
    "features = features.merge(top_mcc_features, on='client_num', how='left')\n",
    "features = features.merge(top_merchant_features, on='client_num', how='left')\n",
    "\n",
    "# Добавление активности за периоды\n",
    "for period in periods:\n",
    "    features = features.merge(recent_activities[period], on='client_num', how='left')\n",
    "    features[f'recent_activity_ratio_{period}'] = (\n",
    "        features[f'recent_transactions_{period}'] / \n",
    "        features['num_transactions'].replace(0, 1)\n",
    "    )\n",
    "\n",
    "# ========== Заполнение пропусков ==========\n",
    "features['std_amount'].fillna(0, inplace=True)\n",
    "features['transaction_hour_std'].fillna(0, inplace=True)\n",
    "\n",
    "# Преобразование дат в порядковые числа\n",
    "if 'first_transaction' in features.columns:\n",
    "    features['first_transaction'] = features['first_transaction'].apply(lambda x: x.toordinal() if pd.notnull(x) else 0)\n",
    "if 'last_transaction' in features.columns:\n",
    "    features['last_transaction'] = features['last_transaction'].apply(lambda x: x.toordinal() if pd.notnull(x) else 0)\n",
    "\n",
    "# Заполнение пропусков в периодических фичах\n",
    "for period in periods:\n",
    "    for col in [f'recent_transactions_{period}', \n",
    "                f'recent_total_amount_{period}', \n",
    "                f'recent_avg_amount_{period}']:\n",
    "        if col in features.columns:\n",
    "            features[col].fillna(0, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "ac355718-a076-44e1-a291-a46f70d2b5a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "final_data = df_train.merge(features, on='client_num', how='left')\n",
    "test = features.loc[features.client_num.isin(test_clients)]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "12edef37-aff5-4eaf-9e4b-874e43e94655",
   "metadata": {},
   "source": [
    "Разделим на обучающую и валидационные выборку."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "d8223149-6a07-4657-92bb-eb76132fb7f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = final_data.drop(['client_num', 'target','most_common_merchant'], axis=1)\n",
    "y = final_data.target\n",
    "X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42, \n",
    "                                                  stratify=y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed4545c6-2f69-49bd-85ab-6b90ba5b21f5",
   "metadata": {},
   "source": [
    "Создаем Pool для CatBoost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "6ae78738-775f-4bc3-91ba-03f213bd36eb",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_pool = catboost.Pool(\n",
    "    X_train,\n",
    "    label=y_train,\n",
    ")\n",
    "eval_pool = catboost.Pool(\n",
    "    X_val,\n",
    "    label=y_val,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b1cf10c-6a2a-4868-a6b9-6c2bd0ffbed9",
   "metadata": {},
   "source": [
    "Создаем Dataset для LightGBM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "id": "dff3303e-f1e8-40e4-b33f-8f5659a6e7a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Веса классов\n",
    "base_weights = np.array([0.7900, 0.9220, 0.9820, 0.6070, 0.3870, 0.2190, 0.1540]),\n",
    "\n",
    "# Создаем веса для образцов\n",
    "train_weights = np.array([base_weights[0][y] for y in y_train])\n",
    "val_weights = np.array([base_weights[0][y] for y in y_val])\n",
    "\n",
    "X_train['most_common_mcc'] = X_train.loc[:, 'most_common_mcc'].astype('int')\n",
    "X_val['most_common_mcc'] = X_val.loc[:, 'most_common_mcc'].astype('int')\n",
    "test['most_common_mcc'] = test.loc[:, 'most_common_mcc'].astype('int')\n",
    "\n",
    "train_data = lgb.Dataset(X_train, label=y_train, weight=train_weights)\n",
    "val_data = lgb.Dataset(X_val, label=y_val, weight=val_weights, reference=train_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef57eeb0-5fd2-4e1f-a6c4-0f9e59d76391",
   "metadata": {},
   "source": [
    "## Подбор отимальных весов для class_weights"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "964e7e23-3c9c-4689-8f10-343ff203dfed",
   "metadata": {},
   "source": [
    "Дальше подберем оптимальные веса классов. Идея заключается в том, что вставлять в модель в class_weights наши оригинальные веса не лучшая идея для получения минимального wmae. В действительности, получилось улучшить скор с 0.54 (базовый CatBoostClassifier c class_weights=[1.0, 0.72, 0.52, 0.37, 0.27, 0.19, 0.14]) до 0.51, испрользуя подобранные параметры."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "a4bf3ab6-c025-4af9-868b-08dda9b4232e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def weighted_mae(y_true, y_pred):\n",
    "    weights_dict = {0: 1.0, 1: 0.72, 2: 0.52, 3: 0.37, 4: 0.27, 5: 0.19, 6: 0.14}\n",
    "    weights = np.array([weights_dict[c] for c in y_true])\n",
    "    return np.sum(weights * np.abs(y_true - y_pred)) / len(y_true)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "31ccc6cb-17bc-4b9a-a708-0daa798a1f4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\", category=UserWarning)\n",
    "   \n",
    "\n",
    "# Оригинальные веса\n",
    "base_weights = [1.0, 0.72, 0.52, 0.37, 0.27, 0.19, 0.14]\n",
    "\n",
    "def objective(trial):\n",
    "    # Генерируем веса на основе оригинальных с вариациями\n",
    "    class_weights = [\n",
    "        trial.suggest_float(f'weight_{i}', \n",
    "                           max(0.01, base_weights[i] * 0.1), \n",
    "                           min(2.0, base_weights[i] * 1.9),\n",
    "                           step=0.01)\n",
    "        for i in range(7)\n",
    "    ]\n",
    "    \n",
    "    params = {\n",
    "        'iterations': 1000,\n",
    "        'random_state': 42,\n",
    "        'early_stopping_rounds': 50,\n",
    "        'verbose': False,\n",
    "        'task_type': 'GPU',\n",
    "        'class_weights': class_weights,\n",
    "    }\n",
    "    \n",
    "    model = CatBoostClassifier(**params)\n",
    "    model.fit(\n",
    "        train_pool,\n",
    "        eval_set=eval_pool,\n",
    "        use_best_model=True\n",
    "    )\n",
    "    \n",
    "    \n",
    "    return weighted_mae(y_val, model.predict(X_val).ravel())\n",
    "\n",
    "# Оптимизация\n",
    "study = optuna.create_study(direction='minimize')\n",
    "study.optimize(objective, n_trials=500, show_progress_bar=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb46f803-2b02-4678-ae68-8902fd7420a8",
   "metadata": {},
   "source": [
    "В итоге, получили следующие наилучшие параметры:\n",
    "\n",
    "Weights:\n",
    "\n",
    "    Class 0: 0.7900\n",
    "    Class 1: 0.9220\n",
    "    Class 2: 0.9820\n",
    "    Class 3: 0.6070\n",
    "    Class 4: 0.3870\n",
    "    Class 5: 0.2190\n",
    "    Class 6: 0.1540"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be7a0c8e-1497-4d8e-9a2c-4153217ee1f2",
   "metadata": {},
   "source": [
    "## Интерпретация построенной модели град. бустинга"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a04f0652-dd68-4fbc-ae4f-1fbde6c646a5",
   "metadata": {},
   "source": [
    "Теперь с помощью SHAP-анализа найдем и уберем маловажные признаки."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a47ef8fd-0f39-4a98-98c4-57ed6d179805",
   "metadata": {},
   "source": [
    "### CatBoost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "75ddc73d-80e1-4056-ae45-08346a0f875b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Learning rate set to 0.117028\n",
      "0:\tlearn: 1.8527556\ttest: 1.8536560\tbest: 1.8536560 (0)\ttotal: 406ms\tremaining: 6m 45s\n",
      "100:\tlearn: 1.4037133\ttest: 1.4405438\tbest: 1.4405438 (100)\ttotal: 28.1s\tremaining: 4m 10s\n",
      "200:\tlearn: 1.3641415\ttest: 1.4327920\tbest: 1.4327502 (199)\ttotal: 54.5s\tremaining: 3m 36s\n",
      "300:\tlearn: 1.3352018\ttest: 1.4302841\tbest: 1.4302841 (300)\ttotal: 1m 20s\tremaining: 3m 6s\n",
      "400:\tlearn: 1.3118862\ttest: 1.4298376\tbest: 1.4297963 (353)\ttotal: 1m 45s\tremaining: 2m 36s\n",
      "500:\tlearn: 1.2897737\ttest: 1.4290455\tbest: 1.4289708 (484)\ttotal: 2m 11s\tremaining: 2m 10s\n",
      "600:\tlearn: 1.2697967\ttest: 1.4290117\tbest: 1.4286444 (574)\ttotal: 2m 36s\tremaining: 1m 43s\n",
      "700:\tlearn: 1.2499562\ttest: 1.4289183\tbest: 1.4285598 (624)\ttotal: 3m 1s\tremaining: 1m 17s\n",
      "Stopped by overfitting detector  (100 iterations wait)\n",
      "\n",
      "bestTest = 1.428559847\n",
      "bestIteration = 624\n",
      "\n",
      "Shrink model to first 625 iterations.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<catboost.core.CatBoostClassifier at 0x41a78a450>"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = CatBoostClassifier(\n",
    "    class_weights=[0.7900, 0.9220, 0.9820, 0.6070, 0.3870, 0.2190, 0.1540],\n",
    "    iterations=1000,\n",
    "    random_state=42,\n",
    "    verbose=100,\n",
    "    early_stopping_rounds=100,\n",
    ")\n",
    "model.fit(train_pool,\n",
    "          eval_set=eval_pool,\n",
    "        use_best_model=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "8a5d3627-5cf3-4781-b86f-6ce66fd598e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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587h22+/lbvtqW/fvhg+fDh27tyJ7t27w8nJqcrH//bbb7F06VKEh4cLvzjXdbBo0KABVqxYgV27diE2NlYIEY0aNULHjh3LXWtQkR9++AFr165FXFwcEhMT0apVK/z3v/9FXFyc0oKFi4sLYmJi8OuvvyIrKws6Ojpo2bIlli5dKvcZNWnSBJGRkdi0aROOHj2KAwcOQF1dHaampujduzf69+8v9NXX10d4eDg2btyII0eO4MiRI9DR0YGVlRW8vb2Ffh06dMDGjRsRGhqKXbt2CS/Imzx5MkaNGlXjc1JTU0NwcDBWrlyJo0eP4vDhw+jQoQOCg4OFcFyqT58+yMzMxMGDB/H48WNoaGigadOmmDVrFoYMGVLjGoiIiIhqQiKr6cpRInpnSJaV/bheerNNy3ih7BLeSX7J55VdwhujfUKsskt4K9zwXqzsEmrVOPv6P+YhnW31chyZ74h6Oc776p1fY0FERERERHXvnb8Vqi5kZWXJ3eteFm1tbWhra9dTRTWTmZlZaR9dXV1oamrWQzX/5125vkRERETvEwaLGhg9erTcve5l8ff3FxYEv6kGDhxYaZ+5c+fC3d29Hqr5P+/K9SUiIiJ6nzBY1MDChQtRUFBQYZ+avsegPgUHB1fa5/X3VtSHd+X6EhEREb1PGCxqoD7fwl2XKnthnLK8K9eXiIiI6H3CxdtERERERCQagwUREREREYnG91gQEcLCwuDr6ws1NTVll0JERERvKc5YEBERERGRaAwWREREREQkGoMFERERERGJxmBBRERERESiMVgQEREREZFoDBZERERERCQagwUREREREYnGYEFERERERKIxWBARERERkWgMFkREREREJBqDBRERERERiSaRyWQyZRdBRMolWVak7BKoCqZlvFB2CfXKL/m8skuoFe0TYpVdQpXc8F6s7BKqZJx91fod0tlWt4VUgcx3hLJLIKpXnLEgIiIiIiLRGCyIiIiIiEg0BgsiIiIiIhKNwYKIiIiIiERjsCAiIiIiItEYLIiIiIiISDQGCyIiIiIiEu2tDRZnz56FVCpFTExMhW1vstDQUEilUmRkZCi7lBqrzueQnZ2NOXPmYODAgZBKpQgICAAAlJSUIDQ0FEOGDIGdnR2kUmm9nsPbIiYmBlKpFGfPnlV2KUREREQKGii7gHddQkICUlJSMG7cOGWXonQ/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x+PatWsYM2YMTExMAACZmZmVjqWrqwtNTc26LpmIiIiIysFgQUrToEED9OrVC0ePHhXCQ/PmzTFjxgwMHz5c6Ddw4MBKx5o7dy7c3d3rrFYiIiIiqhiDBSmNqqoq5s6dW2m/4ODgSvu0atWqNkoiIiIiohpisKA3np2dnbJLICIiIqJKcPE2ERERERGJxsfNEhHCwsLg6+sLNTU1ZZdCREREbynOWBARERERkWgMFkREREREJBqDBRERERERicZgQUREREREojFYEBERERGRaAwWREREREQkGoMFERERERGJxmBBRERERESiMVgQEREREZFoDBZERERERCQagwUREREREYnGYEFERERERKJJZDKZTNlFEJFySZYVVXufaRkv6qCS8vkln6/X41VF+4TYWh/zhvfiGu87zr4WC3nFIZ1tVeon8x1RNwUQEdFbgTMWREREREQkGoMFERERERGJxmBBRERERESiMVgQEREREZFoDBZERERERCQagwUREREREYnGYEFERERERKI1UHYB9O7IyMjA4MGDK+yzcOFCDBo0qNL+LVu2xI4dO2q9xnfV2bNnkZSUhJEjR0JPT0/Z5RAREdF7iMGCao2RkREWLFhQ5rYff/wRBQUF6NGjh8K2vn37om/fvnJt/HJcPUlJSVi3bh3c3d157YiIiEgpGCyo1mhpacHFxUWh/eLFi8jLy4OTkxMMDQ0VtltbW5e5HxERERG9PRgsqFL379/HihUrcPLkSQBA165dMXXqVEyYMAFmZmYICwurcP99+/YBAD755JNy+xQUFEAmk0FTU1NUradOnUJUVBSuXLmCzMxMqKmpoWPHjvDz88OHH34o1zcgIAD37t1DaGgoli9fjrNnz0IikaBPnz745ptvoKmpiYiICOzbtw+ZmZmwsrLC9OnTYWtrKzfOs2fPsGHDBsTHx+PBgwfQ19eHnZ2dcH1KxcTEYP78+QgJCYFUKi2zlpiYGKHN3d0dZmZmmDlzJn7++WckJydDIpHAzs4O33zzDUxMTAAA8+bNw/79+wFA7tYyf39/jBs3TtT1JCIiIqoqBguqUG5uLgICAvDvv/9i2LBhaNmyJc6dO4dx48ahoKCg0v3z8/Nx8OBBmJmZwc7Orsw+W7duxfr16yGTyWBqagp3d3f4+flBXV292vXGxMQgJycHLi4uMDU1xYMHDxAVFYWJEyciJCQEXbp0kev/7NkzTJgwAV27dkVgYCCuXLmC6OhoFBQUwNDQEJcvX4aXlxeKiooQGRmJr7/+GjExMdDR0QEAFBUVITAwEBcuXICTkxNGjRqFO3fuYPfu3Th9+jQ2b94MU1PTap9HqYcPH2LcuHFwdHTEF198gWvXrmHPnj14+vQpgoODAQDDhg3D06dPceTIEXz99dfCrFDr1q1rfFwiIiKi6mKwoApt3rwZGRkZmDNnjvBr+PDhw/HTTz/hf//7X6X7//7778jPz8eoUaOgoiL/EDIVFRV069YNffr0gZmZGbKysnDw4EGsX78eFy9exOrVq6GqqlqtemfNmgUtLS25Ng8PD3h5eSE8PFwhWGRnZ2P06NEYPXq00Jabm4uDBw+iXbt2CA8PR4MGL/83sbKywtSpUxEXFwcPDw8AL4PMhQsX8Nlnn2HKlCnCGHZ2dvjyyy8RFBSEhQsXVuscXpWWloYffvgB/fv3F9pUVFSwc+dO3Lp1Cy1atEDnzp1hbW2NI0eOwNHREebm5jU+HhEREVFN8XGzVKGEhAQYGxvD1dVVrn3MmDFV2j8qKgoqKiplPv2pSZMmWLt2LXx8fNCnTx988sknCAoKwtChQ5GYmIjff/+92vW+Giry8/ORnZ0NVVVV2NjY4K+//lLor6qqCm9vb7k2W1tbyGQyeHh4CKECgBBK0tLShLYjR45ARUUFvr6+cmPY29ujTZs2+OOPP1BSUlLt8yjVqFEjuVABQLiN6tU6iIiIiJSNMxZUofT0dHTo0EFh5sDExKTSpw/dvHkTly5dQo8ePdCkSZMqH9PPzw979+7F8ePHhUfTVtXdu3cRHByMU6dOITc3V26bRCJR6G9iYgINDQ25Nn19fQBQ+OW/tD0nJ0doy8jIQKNGjYRtr2rVqhVSU1ORnZ2Nhg0bVus8SllYWCi0GRgYKNRBREREpGwMFlRnoqKiAABDhgyp1n6mpqZQVVVFdnZ2tfbLz8+Hv78/nj17hhEjRsDa2ho6OjqQSCSIiIjAmTNnFPZ5/fasqmyTyWTVqqtUWcGmVHFxcbVqEFMHERERUV1gsKAKWVhYIC0tDcXFxXKzFpmZmQozAq8qLCxEbGwsjIyM4OjoWK1jpqeno7i4uNq/8icmJuLhw4dy60FKrV27tlpjVZWFhQVOnjyJ3NxchRmcmzdvQkdHR1hMXTqr8eTJE4VxMjIy5G67qq6KQgsRERFRfeAaC6pQnz598OjRI/z6669y7Zs2bapwv6NHjyIrKwsuLi7lfmEua0aipKQEa9asAQA4ODhUq9bS4PP6L/mnTp3C5cuXqzVWVTk6OqKkpAQRERFy7SdOnEBKSgocHByEWYdmzZoBeBmAXhUXF4eHDx+KqkNbWxtA2aGFiIiIqD5wxoIqNHr0aMTFxWHx4sX4+++/0apVKyQlJeHixYtlvuyuVHR0NICK312xePFiPH36FJ07d4apqSmys7Nx+PBh/P333+jTpw+cnJyqVautrS2MjY2xYsUK3Lt3D40bN0ZqaipiY2NhbW2N69evV2u8qnB3d8f+/fuxadMmZGRkoGvXrkhLS8OuXbtgbGyMSZMmCX1btGiBjz76CHv27IFMJkObNm2QmpqKhIQENG3aFEVFRTWuw8bGBgCwatUqDBo0COrq6mjVqhWsra1FnyMRERFRVXDGgiqkr6+P9evXo0+fPoiNjcXq1avx/PlzhIaGKjzWtdT9+/dx6tQpdO7cGVZWVuWO3atXLxQVFWHv3r1YunQpwsPDoaqqihkzZuC///1vhesLyqKnp4egoCDY2Nhg+/btWLFiBW7evImVK1eiXbt21Rqrqho0aICgoCD85z//wZUrV/DTTz/hwIEDcHJyQkREhMKi9QULFqBv376Ii4sTAlBISAgaNWokqg5bW1tMnjwZ6enpWLRoEb7//nscOnRI1JhERERE1SGRcQUo1VDpm6Ere/M2vfkky6o/WzIt40UdVFI+v+Tz9Xq8qmifEFvrY97wXlzjfcfZ12Ihrziks61K/WS+I+qmACIieitwxoKIiIiIiETjGgt64+Xk5KCwsLDCPpqamtDV1a2nioiIiIjodQwW9MabPn06zp07V2EfNzc3zJs3r34KIiIiIiIFDBZUYzExMfVynK+++qrSx6iKXfxMREREROIwWNAbr3379sougYiIiIgqwcXbREREREQkGoMFERERERGJxvdYEBHCwsLg6+sLNTU1ZZdCREREbynOWBARERERkWgMFkREREREJBqDBRERERERicZgQUREREREojFYEBERERGRaAwWREREREQkGoMFERERERGJxmBBRERERESiMVgQEREREZFoDBZERERERCQagwUREREREYkmkclkMmUXQUTKJVlWVOfHmJbxos6P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WeVjEREREb2JGCzeY3369MH69esRHh6OqKgo5Ofno2HDhujSpQusra2Ffp6enrC0tMTmzZvxyy+/oLCwEI0aNUK3bt1gampa5eMZGxvjo48+wtmzZxEXF4fnz5/DxMQE/fv3h6+vL1q0aCHqfK5evYqQkBC5tujoaOHPLi4ucsHi9b4pKSlISUkB8PKRu9UJFp6enoiPj8eePXuQk5MDAwMDtG3bFt988w2kUqnQz9bWFvPmzcPGjRuxcuVK4d0gHTp0wIQJE6p1vkRERERvEolMJpMpuwgiUi7JsqI6P8a0jBd1foyy+CWfFz1G+4TYGu13w3ux6GNXZpx99fc5pLOtWv1lviOqfxAiInrv8KlQREREREQkGm+FItGysrIqfFwqAGhra0NbW7ueKqo9mZmZlfbR1dXlGgkiIiJ67zFYkGijR4/GvXv3Kuzj7++PcePG1VNFtWfgwIGV9pk7dy7c3d3roRoiIiKiNxeDBYm2cOFC4clK5Xn97dFvi+Dg4Er7tGrVqh4qISIiInqzMViQaLa2tsouoc7Y2dkpuwQiIiKitwIXbxMRERERkWh83CwRISwsDL6+vlBTU1N2KURERPSW4owFERERERGJxmBBRERERESiMVgQEREREZFoDBZERERERCQagwUREREREYnGYEFERERERKIxWBARERERkWgMFkREREREJBqDBRERERERicZgQUREREREojFYEBERERGRaAwWREREREQkmkQmk8mUXQQRKZdkWVGdjT0t40WdjV0VfsnnlXr8qmqfEFsr49zwXlxm+zj7ivc7pLNNoU3mO6I2SiIiovcEZyyIiIiIiEg0BgsiIiIiIhKNwYKIiIiIiERjsCAiIiIiItEYLIiIiIiISDQGCyIiIiIiEo3BgoiIiIiIRGug7ALo/fXrr79i9+7duHHjBkpKSmBmZoYBAwbg888/l+uXl5eHNWvW4MiRI8jJyYGlpSW8vLzg4eEBiUQi1zc8PBxXr17F1atXkZ6eDjMzM8TExCgcu6CgALGxsTh27BiuXbuGx48fw8TEBB07doS/vz+srKzq9NyJiIiI3jUMFqQU8+fPx6+//op+/frBxcUFEokEGRkZuHfvnly/wsJCTJw4ESkpKfD29oaVlRX+/PNPLFmyBI8ePcK4cePk+gcHB8PAwABt27ZFbm5uuce/d+8eFi9eDFtb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rIgwZ84cfHx8sLS0zOlQRERE5CWlEQsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZEgsRERERETGZWVJSUlJOByEiOctscrzJfQyOeJgNkaSv2+Ej6dapsGNDpvo823FcFqP5P37u6dfZah2Y5f6TfP6b5bYiIiLPg0YsRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZEosJIWQkBDc3Nw4ePBgTociIiIiIi8JJRbZICQkhMDArO9Pv2PHDmbPnm1yHNnVj2ReYGAgISEhWW5//vx5vv32W3r27EmjRo1wc3PL8HcZGxtL69atcXNzY8KECVmOQURERMQUSiyyQUhICD/++GOW2+/YsYO5c+eaHEd29SOZ9+OPP5qUWBw/fpylS5dy9epVKlSokKm2/v7+3Lp1K8vnFhEREckOL1xikZCQQGxsbE6HIfJcNWjQgG3btrFmzRr69euX4XZ//PEHP/74Iz169HiG0YmIiIikzyInTx4SEsLo0aOZOXMmx48fJyQkhCtXrjBs2DA8PT1ZtWoVa9eu5dy5c5ibm1OxYkV8fX1xc3NL0dfWrVtZvnw5Z86cIS4uDkdHR+rUqcPAgQOxtLQEICkpKUN9RkRE0KpVK3x9falYsSJz587lr7/+wtbWlhYtWtCnTx8sLB7dupYtWxIZGQlg1Ie/v3+qcT6pR48eHDp0KEX7kSNH0rJlSwD+/PNPZs+ezeHDh7l//z7FixfH09OTDz74gFy5cmWon/Pnz7Ns2TIOHTrElStXSEhIoEyZMnh5edGmTZv0v6wMSExMJCAggF9//ZULFy5w+/ZtHBwccHd3p1evXtjb2xvqPn6PXVxcCAgI4O+//6Zw4cJ069aNVq1aceXKFaZOncrBgweJj4+nYcOGfPrpp1hbWxudNyP3J/keRUZGphhZeDwWPz8/AA4ePEjPnj0ZOXIkSUlJLFmyhIsXL+Lg4ED79u3p2rWroX3y/Y6MjDS69+vWrcPJySlD9y5//vwZu8mPSUhI4Msvv6ROnTq8/fbbfPvtt5nuQ0RERCS75GhikWzatGnEx8fTtm1brK2t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YvEv0rBhQ+bNm0dAQADBwcHcu3ePggULUr16daMfmF5eXjg7O7No0SKWLVtGXFwchQsX5s0338z0OxeKFi1KQEAAs2bNIiQkhJiYGJydnRk4cCCdOnUyqvv222+zc+dOli9fzp07d8ibNy+vv/46PXr04N133zWqW716dU6dOkVYWBjXr18nLi4OBwcHatasibe3t1HCkmz06NGUL1+edevWMXXqVGxsbGjcuDG9e/emcOHCmboueLStbPny5VmxYgWLFi0iMTERR0dH6tWrZ0hqLCwsmDFjhuEFedu3b8fW1tZw3qJFixr1OWbMGCZNmsSmTZvYsGED1atXx9/fn6+//prIyMhMx5isWrVq9OvXj9WrV/Pll1+SkJCAr6+vEgsRERF5bsyStAJU5JVnNjnroyWPGxzxMFv6yYhuh488s74r7NiQ6TZnO47LdBs/95RlW60DDX9P8vlvpvsUERHJKVpjISIiIiIiJtNUKEnh1q1baW5/mixfvnyGBcMvk9QWtj/JxsbGaP2GiIiIiKRPiYWk0KVLl3Tn+/v6+uLn5/ecIso+T67lSM3IkSNp2bLlc4hGRERE5N9DiYWkMHbsWMO7ItKS2huhXwYzZ85Mt87j29iKiIiISMYosZAUqlWrltMhPDO1atXK6RBERERE/pW0eFtEREREREym7WZFhDlz5uDj44OlpWVOhyIiIiIvKY1YiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIyZRYiIiIiIiIycySkpKScjoIEclZZpPjczqEDBkc8TDLbbsdPpLmsQo7NqRafrbjuHT79XPPXBxbrQOfejzJ57+Z61BEROQFoRELERERERExmRILERERERExmRILERERERExmRILERERERExmRILERERERExmRILERERERExmRKLV9zs2bNxc3MjIiIiS+179OhBy5YtszmqF8vBgwdxc3MjJCQkp0MREREReWFZ5HQA/zYhISHcuXOHTp065XQoBjt27OD06dP4+fk9l/O9iPcgPadPn2bHjh20bNkSJyen537+6OhoQkNDCQsL4/z580RFReHo6Mh//vMfPvroI4oWLWpU//r16yxfvpw/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a0tUVBTOzs54eXlRtWpVbGxs2LJlCwcOHGDKlCnpXseMGTOIiooyLPwOCQnh0qVLAPTr188oYXmWtN2siDBnzhx8fHywtLTM6VBEROQl87JuN/u4P//8k0mTJrF582YiIiKwsrKiSpUqeHt74+vri5WVFZD6drNffPEFgYGBREVFUaNGDSZPnsynn34KwI4dO4BH/51dunQpv//+OzExMTg7O/Pee+8xbNgw7OzsePjwIcOGDePnn38mPDycxMREypUrh5+fH7169Uo3/tKlS/P333+neuzcuXMp3hX2rCixEBElFiIiImIyvcdCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMZpaUlJSU00GISM4ymxyfbp3BEQ+fQySp63b4iEntK+zYkOG6ZzuOS7eOn3vGz73VOjBD9ZJ8/pvxTkVEJEeULl2aRo0asWDBgpwO5YWkEQsREREReaWdPXsWPz8/XFxcyJMnD3Z2dtSrV49p06Zx//79nA4vQw4dOkSrVq0oWLAg+fLlo1KlSnz33XfPNQaL53o2EREREZEXSGhoKO3bt8fKyoouXbpQqVIlHj58SFhYGJ988gm///47c+bMyekwn+rnn3+mZcuWVK9eneHDh2NjY8PZs2e5dOnSc41DiYWIiIiIZNmpt/bkdAhU2F43S+3OnTuHt7c3pUqVYtu2bRQrVsxwrE+fPvz111+EhoZmV5jPRHR0NF26dMHDw4OVK1dibp5zE5I0FUpEREREXkkTJ04kJiaG+fPnGyUVycqVK8eAAQPSbH/z5k0GDx5M5cqVsbGxwc7OjubNm3P06NEUdadPn46rqyv58uWjQIECuLm5ERj4f+vw7ty5w8CBAyldujRWVlYUKVKEJk2acOjQoadeQ2BgIFevXmXcuHGYm5tz9+5dEhMTM3EXso8SCxERERF5JYWEhODi4kLdulkb8QgPD2ft2rV4enoydepUPvnkE44fP07Dhg2JiIgw1Js7dy79+/enYsWKfPvtt4wePZpq1aqxb98+Q52ePXvy/fff065dO2bNmsXgwYPJmzcvp06demoMW7Zswc7OjsuXL/P6668bEpxevXoRGxubpevKKk2F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51m8eDFVq1bF39/f8P20adOG9u3bM2HCBOrUqWPSdLE33niDTz/91PDZxcWFTz/9lE2bNtGuXTucnZ2pVasWAQEBVKlSRWteREREMqFVq1YcO3aMSZMmERwczPfff4+VlRVVqlRhypQp+Pr6ptn2888/5+7duwQGBrJ8+XJq1KhBaGio0X+3Afz8/Fi6dClTp04lJiYGZ2dn+vfvz7BhwwDIly8fvXv35ueff2b16tUkJiZSrlw5Zs2aRa9evdK9Bn9/f0qWLElAQABr1qyhVKlSfPPNNwwcONCke5NZSixeEl5eXkZP+pOfSleqVMmQVABYWlri6upqeOPjvn37uHHjBn369CEmJsaoz3r16vHNN9+wb98+3NzcOHXqFFevXqVz586GpALAxsaGdu3aMXPmzHTjNDMzMyQVCQkJ3Lt3j4SEBN58800ATpw4kSKxaNSokVE2bWZmhpubGytWrODevXvky5cvI7cI+L+dEQAePHjA/fv3AahduzaHDh3i/PnzlCtXzqhNx44dDUkFYEgaGjRoYEgqAAoUKECpUqW4ePGioWznzp0kJSXRpUsXo++ncOHCtGzZkh9//JHTp08bfUeZlbyrQzI3NzcAozhERERySoXtWXu53IukfPnyzJkzJ916yVOlk1lZWTF58mQmT55sVL5jxw6jzz169HjqFOXcuXMzceJEJk6cmOGYH2dpacnIkSONFoPnBCUWL4nixYsbfU7eIi214S07OzvDPL1z584BMGbMmDT7Tp73lzwfsFSpUinqlClTJsOxbt68mSVLlnD69OkU6ySS94x+3JPXBpA/f34Abt++nanE4t69e8yZM4fNmzenOlcytfM7OzsbfX7avbW1teXKlSuGz8lrIsqWLZuibnLZ5cuXTUosnrw/yUnfk3MxRURERHKSEouXxONvdHxcelNskhcUDRgwgNdeey3VOtm5W8C2bdv47LPPcHV1ZfDgwTg6OpI7d24SExPp169figVOkPa1AanWf5ovvviCsLAw2rZtS40aNcifPz/m5ubs3r2bwMBAo63f0jt/WuWZjSnZ46MiT0pISEjzWFrfcVbjEBEREXkWlFj8y5UsWRJ4NEWoVq1aT62b/GT877//TnEseeQjPRs2bMDKyorZs2cbrbN4cujwWbhz5w5hYWG0aNGCzz//3OjY/v37n8k5k+/Z2bNnU4x8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",
      "text/plain": [
       "<Figure size 800x950 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# SHAP-анализ\n",
    "explainer = shap.TreeExplainer(model)\n",
    "shap_values = explainer.shap_values(X_val)\n",
    "\n",
    "# Визуализация важности признаков\n",
    "shap.summary_plot(shap_values, X_val, plot_type=\"bar\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "id": "9842d579-ab73-4976-9f46-4c6df1e88e7b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Learning rate set to 0.117028\n",
      "0:\tlearn: 1.8579920\ttest: 1.8580957\tbest: 1.8580957 (0)\ttotal: 312ms\tremaining: 5m 11s\n",
      "100:\tlearn: 1.4002550\ttest: 1.4388208\tbest: 1.4388208 (100)\ttotal: 23.9s\tremaining: 3m 32s\n",
      "200:\tlearn: 1.3584296\ttest: 1.4303503\tbest: 1.4303503 (200)\ttotal: 39.5s\tremaining: 2m 37s\n",
      "300:\tlearn: 1.3266486\ttest: 1.4283030\tbest: 1.4281137 (283)\ttotal: 54.4s\tremaining: 2m 6s\n",
      "400:\tlearn: 1.3002688\ttest: 1.4278261\tbest: 1.4277453 (349)\ttotal: 1m 9s\tremaining: 1m 44s\n",
      "500:\tlearn: 1.2757305\ttest: 1.4280183\tbest: 1.4273951 (449)\ttotal: 1m 24s\tremaining: 1m 24s\n",
      "Stopped by overfitting detector  (100 iterations wait)\n",
      "\n",
      "bestTest = 1.427395117\n",
      "bestIteration = 449\n",
      "\n",
      "Shrink model to first 450 iterations.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<catboost.core.CatBoostClassifier at 0x42369c810>"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Удаление признаков с малой важностью\n",
    "feature_importance = pd.Series(np.abs(shap_values).mean(axis=0).sum(axis=1), index=X_val.columns)\n",
    "cols_to_drop = feature_importance[feature_importance <= 0.00075].index.tolist()\n",
    "X_train_reduced = X_train.drop(cols_to_drop, axis=1)\n",
    "X_val_reduced = X_val.drop(cols_to_drop, axis=1)\n",
    "\n",
    "train_pool_reduced = catboost.Pool(\n",
    "    X_train_reduced,\n",
    "    label=y_train,\n",
    ")\n",
    "eval_pool_reduced = catboost.Pool(\n",
    "    X_val_reduced,\n",
    "    label=y_val,\n",
    ")\n",
    "\n",
    "# Переобучение на сокращенных данных\n",
    "model = CatBoostClassifier(\n",
    "    class_weights=[0.7900, 0.9220, 0.9820, 0.6070, 0.3870, 0.2190, 0.1540],\n",
    "    iterations=1000,\n",
    "    random_state=42,\n",
    "    verbose=100,\n",
    "    early_stopping_rounds=100,\n",
    ")\n",
    "model.fit(train_pool_reduced,\n",
    "          eval_set=eval_pool_reduced,\n",
    "        use_best_model=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "id": "68ec9506-fde0-4485-b08e-5f118f7ad7e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.50354"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weighted_mae(y_val, model.predict(X_val).ravel())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b8f5441-fd7c-4424-b827-6bb46a62bd64",
   "metadata": {},
   "source": [
    "### LightGBM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "id": "1568d6e7-8d5c-432a-802d-7f585c3b101a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training until validation scores don't improve for 100 rounds\n",
      "Early stopping, best iteration is:\n",
      "[55]\tvalid_0's multi_logloss: 1.43982\n"
     ]
    }
   ],
   "source": [
    "params = {\n",
    "    'objective': 'multiclass',\n",
    "    'num_class': 7,\n",
    "    'n_estimators': 1000, \n",
    "    'random_state': 42,\n",
    "}\n",
    "model = lgb.train(\n",
    "    params,\n",
    "    train_data,\n",
    "    valid_sets=[val_data],\n",
    "    callbacks=[\n",
    "        lgb.early_stopping(stopping_rounds=100, verbose=True),\n",
    "    ]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "id": "460ff3d4-9db3-40f1-99fe-0f9102f34972",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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amjatCmaNWsm1HFzc8PRo0dx6tQpODs7Sy08rihlZWV89913+PHHHzFu3DgMHjwYysrKiIqKgr6+Ph4/fixVv3PnzrCwsEBgYCBycnLQoEEDXLlyBVevXq30CECfPn2wb98+/Pjjj+jcuTOePXuG6OhoqZ2uJCrb/y4uLjhw4AC2bt2KjIwMdOzYEampqdizZw+MjIwwefLkSsVKREREVNuYWHwkvv76a4jFYkRGRuK3336DkZER+vXrB1dXVwwbNkyq7i+//AJra2tERkYiODgYysrKaNCgAfr27SvUqV+/Pvz8/LB161YsXboUxcXFcHZ2/mBi0apVKzRt2hR37txB586dZd6d8D4dOnTA1KlTsW/fPixZsgQlJSXw9vaWSiw6deqEhg0bIjU1FYMGDapE70jr27cvlJSUsGnTJgQFBaFOnTpwdnaGtbU1pkyZIlVXWVkZK1euxIoVKxAeHg5VVVV06dIFQUFBGD9+fKXOO2PGDGhra+Po0aM4ceIETExM4ObmhjZt2mDSpElSdSvb/yoqKli3bh02b96Mo0ePIi4uDrq6uujTpw8mTZqE+vXrV66TiIiIiGqZSFzbK07pszZ8+HCUlJSUOW2JFEe0Qvat5Z+imRmvFR2CwCvpcqXqt46PqZlAynFnxC9VOs7XruzyY9qy0wIlxJ4jq3QuIiL6dHDSNtWa8+fP4+7du3Bzc1N0KERERERUzTgVimrc+fPnkZaWhtDQUBgaGpb57orc3FwUFBSU246qqmqZ6xmIiIiISPGYWFCNCw4OxpUrV9CkSRMsWLCgzEXbK1aswIEDB8ptp2PHjggKCqqpMImIiIhIDkwsqMZVJBkYO3bsB3egKuut1ERERET0cWBiQR8FS0tLWFpaKjoMIiIiIqoiLt4mIiIiIiK5MbEgIiIiIiK58T0WRISgoCB4enpCVVVV0aEQERHRJ4ojFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDcmFkREREREJDeRWCwWKzoIIlIs0YpiAMDMjNcKjqTivJIuKzqEj4KaSXdFhyDF107692PaOwEAYs+RCoiGiIhqE0csiIiIiIhIbkwsiIiIiIhIbkwsiIiIiIhIbkws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Wl3UvGvXCGKkiZWWxEyD1q7R2jVqFTWjViUhiKzfH365vi4ZklwhyutxHI5DPudnvM8zet/X+/qMc+5cfvrpJyIjI3F2duaLL76gVKlSRv2k5/k8+YzWrVuHo6NjirHMnz/fUObq6oqHhwft27fH19eXEydOYGVlRcOGDRk8eDDW1tYA9O7dm0OHDhnaJPn6669p1apVljxXERERkWdRYiE0btyYW7dusXr1anx8fAwfnIsVK8a9e/fo0aMHly9fpnXr1lSoUIHTp08TEhLC/v37WbRoETY2Nmn2AXDz5k3Wrl1L48aNeeedd7CwsODQoUMsXryY06dP4+vrmyX3smLFChwcHGjXrh0FChTgypUrrF69mp49e7J06VJKlChhVP/GjRv079+fpk2b0rhxY/bu3cuyZcuwsLDg/PnzxMTE0L17dyIjI1myZAmDBw8mJCQEc/PHk33pfT6ZdebMGT755BNatWpF8+bNOXjwIGvXrsXc3Jwvv/wSgB49epCYmMjhw4cZM2aMoW2VKlUyPa6IiIhIRimxEMqVK0eVKlVYvXo1tWrVMvrWe/bs2Vy6dInhw4fToUMHQ/mbb77JpEmTWLx4MR9++GGafQAULVqUsLAwcuT4v39yHTt2ZO7cufj7+3P8+HFcXFxMvpdZs2aRO3duozJ3d3c6d+5MUFAQn332mdG1K1euMGHCBP773/8C4OXlRZcuXViyZAlvv/02c+bMwczMDAAHBwemTJnC3r17qVOnDgCLFi1K1/PJrD///JOAgADDs/H09CQ6Opp169bxySefYG1tTe3atdm4cSOHDx+mZcuWmR5LRERExBTaYyFp2r59O3nz5qVdu3ZG5e3btydv3rxs27YtXf1YWloakoq4uDiioqKIiIigZs2aABw/fjxL4k1KKhITE7l37x4RERHkzZsXJyenFMcoVKiQIalIUrVqVRITE/H29jYkFUnlAJcuXTKUZdXzSU3lypWTJVw1atQgPj5em+RFRETkpaIZC0lTeHg4FStWNJppAMiRIwclSpTg1KlT6e4rODiYlStXcv78eRISEoyu3b17N0viPXXqFH5+fhw8eJAHDx4YXStatGiy+k/vdQCws7NLsb69vT0AkZGRhrKsfD4pSSlmBweHZHGIiIiIZDclFvJCLF26lOnTp1O7dm06depEgQIFsLS05ObNm4waNSpZ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Jfq8+3wHFhGRfy3tsRAREREREZNpKZS81OLj47lz584z6zk4OBi9vE9EREREXiwlFvJSu379Oq1bt35mPT8/P1xdXV9ARCIiIiKSEiUW8lLLnz8/s2fPfma9N9988wVEIyIiIiKpUWIhLzUrKytq1aqV3WGIiIiIyDNo87aIiIiIiJhMx82KCPPnz8fHx0cb4EVERCTTNGMhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImU2IhIiIiIiImM0tMTEzM7iBEJHuZTYnL7hDSNCT8Ubrq9Tj8OwAVt683ecxz3uONfu5Tz+Qus8UWm6As6yvR590s60tERF49mrEQERERERGTKbEQERERERGTKbEQERERERGTKbEQERERERGTKbEQERERERGTKbEQERERERGTKbEQERERERGT5cjuAOTVERMTw/r169m5cyd//vkn//zzDwUKFMDZ2ZlevXpRqlQpo/rh4eG0bt06xb5Kly7NihUrXkTYr4QDBw5w8OBBOnfujJ2dXXaHIyIiIq8hJRaSZa5du8b48eOpWrUqbdq0oUCBAly9epWVK1eybds2Zs2ahaura7J2jRo1olGjRkZl+nCcMQcPHmTBggW0atVKz05ERESyhRILyTJ58uRh2bJllC9f3qi8RYsWvPfee8yYMYMlS5Yka1e2bFlatmz5osIUERERkedAiYU8099//8306dP59ddfAahevTqDBw/mww8/pEiRIsyfPx94nFjkyZMnWfvSpUtTpkwZzp07l+oYMTExJCYmkitXLpNi/e2331i7di0nTpzg1q1bWFpa4uzsTI8ePfjPf/5jVLd3795cu3aNefPmMW3aNA4cOICZmRkNGjRg2LBh5MqVi8DAQNasWcOtW7coVaoUQ4cOpWrVqkb9PHjwAH9/fzZt2sSNGzewt7enVq1ahueTJDQ0lNGjR+Pn55ds5iYpltDQUENZq1atKFKkCF988QXffvsthw8fxszMjFq1ajFs2DAKFCgAwKhRo/jxxx8BjJaW9erViz59+pj0PEVERETSS4mFpOnu3bv07t2b69ev0759e0qXLs2hQ4fo06cPMTEx6eojISGBW7dukS9fvhSv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FiIiIiIiYjIlFiIiIiIiYjIlFiIiIiIiYjIlFiIiIiIiYjIlFiIiIiIiYjIlFiIiIiIiYjIlFiIiIiIiYjIlFiIiIiIiYjKzxMTExOwOQkSyl9mUuOc+xpDwR899jGfpcfj37A7BJBW3r+ec9/gs77dPPdhiE2T4OdHn3SwfQ0REXn2asRAREREREZMpsRAREREREZMpsRAREREREZMpsRAREREREZMpsRAREREREZMpsRAREREREZMpsRAREREREZMpsRAREREREZPlyO4AJLnQ0FDu3r1L586dszsUeU7mzZtH+fLladiwYabbL1iwIMVrgwYNomvXriZEJyIiIpJxSixeQqGhoVy7dk2JxStswYIFeHh4ZDqxSPLpp5+SJ08eo7KKFSua1KeIiIhIZrzyiUV8fDyxsbHkypUru0MRyXINGzbE0dExu8MQERERebX2WISGhuLq6srevXtZuHAhbdq0oW7dumzatInExERCQkLo0qULbm5uvP322/Tp04cDBw6k2NeWLVvo3bs3DRs2xM3Njfbt2zN58mRiY2MNddLbZ3h4OK6ursybN4+dO3fSrVs36tatS/PmzZkxYwZxcXGGuq1ateLQoUNcu3YNV1dXw5/U4kzJhQsXmDBhAh07dqR+/fq4ubnRpUsX1qxZY1QvJCQEV1dXduzYkayPhIQEWrZsmWzWJCQkhPbt21OnTh3atWvH8uXLDc89IzECREdHM2fOHLp3706TJk2oU6cObdu2ZdasWTx8+NCo7oEDB3B1dSU0NJTg4GDat29P3bp18fb2ZufOnQCcPXuWjz76iAYNGtCkSRMmT55s9GyTHDp0iH79+tGgQQPc3Nx47733kj0bePy76N27d7LyJ2NJkvQM9u/fz5IlS2jTpg116tShffv2/Pjjj4Z6Sf8WAH788Uej33Fm3bt3L8X7FBEREXmRXskZi6QP6+3atcPGxgYnJydGjhzJTz/9RJMmTWjVqhWxsbFs2LCB/v37M2nSJBo0aGBoP3v2bAICAihdujSdO3emQIECXLlyha1bt9K3b18sLS0BMtQnwO7duwkJCcHT05PWrVuzY8cOlixZgp2dHT169ABg8ODB+Pr6EhERwaeffmpoW6pUqXTf/4EDBzh06BD16tXD0dGRhw8fsnnzZsaNG8edO3fw8fEBoFmzZkybNo2wsLBkse7bt48bN27w3nvvGcoCAwPx9fWlQoUK9O/fn4cPH7JkyRLy5s2b7tiedPPmTdauXUvjxo155513sLCw4NChQyxevJjTp0/j6+ubrE1wcDBRUVG0bduWnDlzsnz5coYMGcLEiRMZN24czZs3p0GDBuzdu5fly5eTN29ePvjgA0P7X375haFDh5I/f366dOmCtbU1P//8M+PGjePq1av0798/U/eSZPbs2cTExNC+fXty5sxJSEgIo0aNolixYlStWpW8efMyZswYRo4cSbVq1WjXrp1J47377rtER0djYWGBs7MzPXv2xM3NzaQ+RURERDLjlUwsHj58SFBQkGH507Zt29iwYQNffPEF7du3N9Tr1KkTPj4+TJ06lfr162NmZsbx48cJCAjA1dWVGTNmYGVlZaj/0UcfGf6ekT6TnD9/nhUrVhiWrnh6euLt7c3y5csNiUXDhg0JCgoiJiaGli1bZur+3d3d8fLyMirr3Lkzffv2JTAwkK5du5IjRw7s7e15++232blzJ1FRUdjb2xvqh4WFYWFhQYsWLQCIjIxkwYIFlC1bFn9/f8Nzadu2LZ6enpmKs2jRooSFhZEjx//9M+zYsSNz587F39+f48eP4+LiYtTm5s2bBAcHY2trC0CNGjV49913GTp0KBMnTqRx48YAeHl50aVLF4KDgw2JRXx8PJMmTSJ37twsWrSIggULGsbs06cPixYtolWrVpQoUSJT9wPw6NEjFi9ebEg+mzRpQps2bVixYgVVq1Yld+7ctGzZkpEjR1K0aNFM/47t7Oxo164db731FnZ2dly8eJHvv/+ejz/+mJEjR9KqVatM34OIiIhIZrxSS6GSeHl5Ge2pWL9+PTY2NjRs2JCIiAjDn3v37vH2228THh7OpUuXANi4cSMAAwYMMEoqAMzMzAyJQkb6TPL0engzMzNcXV25ffs29+/fz7L7z507t+HvMTExREREEBUVRe3atYmOjubChQuG6x4eHjx69Iiff/7ZUHb//n22b99O3bp1yZcvHwB79+4lJiYGLy8vo+dSoEABQ/KRUZaWloakIi4ujqioKCIiIqhZsyYAx48fT9bGw8PDkFQAlCtXDhsbGwoWLGhIKpJUrVrV6NmePHmSv//+m9atWxuSiqQ4unXrRkJCQorLwjKiQ4cOhqQCoFChQpQoUYLLly+b1O/TOnfuzJdffomHhwcN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vPbMpmTuiNwh4Y+yOJL06XH49yztr+L29aleO+c9Ps22feplaSjJbLFJ/zK5RJ93n2MkIiIiadMeCxERERERMZmWQonJ7ty588w9AtbW1v/K9yq8yvcmIiIikpWUWIjJunXrxrVr19Ks06tXL8NL7v5NXuV7ExEREclKSizEZGPHjk3xGNknpfT26H+DV/neRERERLKSEgsxWdWqVbM7hOfmVb43ERERkaykzdsiIiIiImIyJRYiIiIiImIyvcdCRJg/fz4+Pj5YWlpmdygiIiLyL6UZCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZkSCxERERERMZlZYmJiYnYHISLZy2xKXHaHkG5Dwh9lWV89Dv9u+HvF7eufWf+c93jD3/vUy7IwUrXFJgiARJ93n/9gIiIiJtKMhYiIiIiImEyJhYiIiIiImEyJhYiIiIiImEyJhYiIiIiImEyJhYiIiIiImEyJhYiIiIiImEyJhYiIiIiImEyJhYiIiIiImEyJhcgrYPv27cybNy+7wxAREZHXmBILkVfA9u3bWbBgQXaHISIiIq8xJRYiIiIiImIyJRZiJDQ0FFdXV/bt28eCBQvw8PDAzc2N7t27c+zYMQAOHjxIz549qVevHs2bN2fhwoVGffz22298/vnntGnTBjc3Nxo2bEj//v05ePCgUb1Tp05Rt25d+vXrR2JioqE8Pj6eXr164ebmxtmzZzMU/88//8wnn3yCu7s7derUoUmTJgwePJg///wzWd1WrVrRu3dvzpw5Q79+/Xj77bdp2rQp3377LXFxccTExDB9+nRatGhB3bp16dWrF3/99VeyfiIiIpg4cSLu7u7Url0bd3d3Jk6cSEREhFG9efPm4erqSnh4eKqxPMnV1ZVRo0Zx9OhRevfuTb169WjSpAljx47l/v37hnq9e/fmxx9/NLRJ+hMaGpqhZyciIiJiihzZHYC8nHx9fYmPj6dTp07ExcWxdOlSBgwYwOjRoxk7dizt2rWjRYsWbNq0CT8/PxwdHWnZsiXwODmJjIykZcuWFC5cmBs3brB27Vr69euHn58f1apVA6BChQoMHDiQKVOmEBgYiI+PDwALFizg8OHDfP7555QtWzZDca9YsQIHBwfatWtHgQIFuHLlCqtXr6Znz54sXbqUEiVKGNW/ceMG/fv3p2nTpjRu3Ji9e/eybNkyLCwsOH/+PDExMXTv3p3IyEiWLFnC4MGDCQkJwdz8cU5+7949evToweXLl2ndujUVKlTg9OnThISEsH//fhYtWoSNjU2mfw9nzpzhk08+oVWrVjRv3pyDBw+ydu1azM3N+fLLLwHo0aMHiYmJHD58mDFjxhjaVqlSJdPjioiIiGSUEgtJUXx8PIGBgVhaWgJQqlQpBg8ezPDhwwkICKBSpUoAtGnTBg8PD4KDgw2JxVdffUXu3LmN+vP09KRjx44EBAQYEguATp06sW/fPvz8/HB1dSUmJobvvvuOxo0b4+npmeG4Z82alWxsd3d3OnfuTFBQEJ999pnRtStXrjBhwgT++9//AuDl5UWXLl1YsmQJb7/9NnPmzMHMzAwABwcHpkyZwt69e6lTpw4AixYt4tKlSwwfPpwOHToY+n3zzTeZNGkSixcv5sMPP8zwfST5888/CQgIwMXFBXj8HKOjo1m3bh2ffPIJ1tbW1K5dm40bN3L48GHD70BERETkRdNSKEmRl5eXIakADMmAi4uLIakAsLS0xNnZmUuXLhnKnvxgf//+fSIiIrCwsMDFxYU//vgj2Vhff/01BQoU4Msvv2TkyJEULlyYESNGZCrupLETExO5d+8eERER5M2bFycnJ44fP56sfqFChQxJRZKqVauSmJiIt7e3IalIKgeM7nX79u3kzZuXdu3aGfXRvn178ubNy7Zt2zJ1H0kqV65sSCqS1KhRg/j4+BSXVImIiIhkF81YSIqKFi1q9LO9vT0Ajo6Oyera29sTGRlp+PnKlSvMnj2b3377jbt37xrVffKDehIHBwdGjhxJ//79AVi4cCF2dnaZivvUqVP4+flx8OBBHjx4kOY9pXY/SWOn9gyevNfw8HAqVqxIjhzG/ynlyJGDEiVKcOrUqUzdR1oxOzg4JItDREREJLspsZAUJe0heJqFhUWa7e7fv0+vXr148OAB7777LmXLlsXGxgYzMzMCAwPZv39/iu1++eUXw9/PnDljmB3IiL///pvevXtjY2NDz549KVmyJLly5cLMzIypU6cmSzQg9ftM69qTG80zIqWkKkl8fHyK5Wk978zGISIiIvI8KLGQLLVv3z5u3rzJyJEjad26tdG1uXPnpthmx44dLF++nFatWnHlyhVmzJhB9erVM7xxe9u2bdy/f59p06bh6upqdC0yMpKcOXNm7GbSoWjRoly8eJG4uDijWYu4uDguXbpkNOOQNOMRFRVlNFMSExPDrVu3KFasWKbjSCtpEREREXkRtMdCslTSN+xPf5v+22+/pbjH4caNG4wZM4ZSpUoxfPhwxo4di5WVFV988QUPHz7M0NhJMwxPj7169Wpu376dob7Sq0GDBty5c4c1a9YYla9Zs4Y7d+7QqFEjQ5mTkxMAe/fuNaobFBREQkKCSXEk7S3R8igRERHJLpqxkCxVtWpV8ufPz/Tp07l27RqFChXizJkzrF+/nrJlyxq9lyIhIYGvvvqKhw8f8s0335ArVy7eeOMNRowYwdChQ5k6darhSNX0cHNzY9asWYwcOZKOHTtiZ2fHkSNH2LNnD8WKFUt1uZEpunfvzpYtW5g0aRKnT5+mfPnynD59mrVr1+Lk5ES3bt0MdWvWrImTkxPz5s0jMjISR0dHjhw5wrFjx8iTJ49JcVSuXJkVK1YwYcIE6tWrR44cOXBxcUlxj4aIiIjI86AZC8lSdnZ2+Pr64uLiwvLly5k+fTrnz59nxowZVKhQwaiuv78/hw4d4pNPPjFa9tSoUSM6dOjA6tWr2bJlS7rHLlasGDNnzsTR0ZGAgAB8fX2Jiopi3rx5FCpUKMvu8Um2trb4+/vTvn17du/ezeTJk9m9ezeenp74+/sbvcPCwsKCadOm8Z///Ifly5fj6+tLbGws8+fPT3ZEbkY1b96cLl26cOTIEUaPHs2XX37JoUOHTL09ERERkXQzS9QOUJHXntmUuOwOId2GhD/Ksr56HP7d8PeK29c/s/457/GGv/epl2VhpGqLTRAAiT7vPv/BRERETKQZCxERERERMZn2WMhL786dO8/cH2FtbY21tfULikhEREREnqbEQl563bp149q1a2nW6dWrF3369HlBEYmIiIjI05RYyEtv7NixxMTEpFlHpx+JiIiIZC8lFvLSy8xbuEVERETkxdLmbRERERERMZmOmxUR5s+fj4+PD5aWltkdioiIiPxLacZCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMpsRCRERERERMZpaYmJiY3UGISPYymxKX3SFkyJDwRy9srB6Hf09XvYrb1xv9fM57PH3qZWysLTZBKZYn+rybsY5ERESygWYsRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZEosRERERETEZDmyOwB5NYSFhbFy5UrOnTtHQkICRYoUoVmzZnzwwQdG9e7du8ecOXPYtm0bkZGRFCtWjI4dO+Lp6YmZmZlR3YCAAE6dOsWpU6e4evUqRYoUITQ0NNnYMTExrF+/np07d/Lnn3/yzz//UKBAAZydnenVqxelSpV6rvf+MggNDeXu3bt07tw5u0MRERGR15QSCzHZ6NGjCQsLo3HjxrRs2RIzMzPCw8O5du2aUb3Y2Fj69evH6dOn8fb2plSpUuzZs4cJEyZw+/Zt+vTpY1R/9uzZODg4UL58ee7evZvq+NeuXWP8+PFUrVqVNm3aUKBAAa5evcrKlSvZtm0bs2bNwtXV9bnc+8siNDSUa9euKbEQERGRbKPEQkyyZs0aQkNDGT16NO7u7s+se+LECYYMGUKnTp0AaNeuHUOHDiUgIIDWrVtTpEgRo/rFihUDoGPHjjx48CDFfvPkycOyZcsoX768UXmLFi147733mDFjBkuWLDHlNkVERETkGZRYvCSSPpzPmTOHI0eOsHbtWu7cuUPZsmUZMmQIlStX5uDBg8yZM4fTp09jY2NDhw4dki01OnXqFAEBARw+fJi7d++SL18+3nrrLfr162f4kA5w4MABlixZwvHjx3nw4AEFCxbkP//5DwMHDiRPnjzpijkxMZHAwEAqVKhgSCqio6OxtrZOtqwJYOPGjeTKlYt27doZlXfu3Jlt27bx888/0717d0P5k/GmJU+ePCnGXLp0acqUKcO5c+fS1c/TYmNjCQoK4qeffuLixYvkyJGDEiVK4OHhgbe3t6FeeHg4c+fOZe/evdy9e5dChQrRrFkzevbsSa5cuQz1Ro0axY8//siBAweSjeXq6oqHhwejRo0y9Nm6dWt69epFpUqVWLBgAWfPnsXOzo6WLVvSv39/cuR4/J9vq1atDLNDT87M+Pn5vfIzNSIiIvLyUGLxkvH19SU+Pp5OnToRFxfH0qVLGTBgAKNHj2bs2LG0a9eOFi1asGnT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",
      "text/plain": [
       "<Figure size 800x950 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# SHAP-анализ\n",
    "explainer_lgbm = shap.TreeExplainer(model)\n",
    "shap_values_lgbm = explainer_lgbm.shap_values(X_val)\n",
    "\n",
    "# Визуализация важности признаков\n",
    "shap.summary_plot(shap_values_lgbm, X_val, plot_type=\"bar\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "id": "2edb0716-52ca-420d-8171-32f2cc97a3a5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training until validation scores don't improve for 50 rounds\n",
      "Early stopping, best iteration is:\n",
      "[49]\tvalid_0's multi_logloss: 1.4386\n"
     ]
    }
   ],
   "source": [
    "# Удаление признаков с малой важностью\n",
    "feature_importance_lgbm = pd.Series(np.abs(shap_values_lgbm).mean(axis=0).sum(axis=1), index=X_val.columns)\n",
    "cols_to_drop_lgbm = feature_importance_lgbm[feature_importance_lgbm <= 0.005].index.tolist()\n",
    "X_train_reduced_lgbm = X_train.drop(cols_to_drop_lgbm, axis=1)\n",
    "X_val_reduced_lgbm = X_val.drop(cols_to_drop_lgbm, axis=1)\n",
    "\n",
    "train_data_reduced = lgb.Dataset(X_train_reduced_lgbm, label=y_train, weight=train_weights)\n",
    "val_data_reduced = lgb.Dataset(X_val_reduced_lgbm, label=y_val, weight=val_weights, \n",
    "                               reference=train_data_reduced)\n",
    "\n",
    "# Переобучение на сокращенных данных\n",
    "model = lgb.train(\n",
    "    params,\n",
    "    train_data_reduced,\n",
    "    valid_sets=[val_data_reduced],\n",
    "    callbacks=[\n",
    "        lgb.early_stopping(stopping_rounds=50, verbose=True),\n",
    "    ]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "id": "8b76b23e-586f-4050-830b-10ebe0798c94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5113428571428572"
      ]
     },
     "execution_count": 244,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weighted_mae(y_val, np.argmax(model.predict(X_val_reduced_lgbm), axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de9c5688-dbe0-4d97-b18b-00309246ec54",
   "metadata": {},
   "source": [
    "## Тюнинг гиперпараметров бустинга"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd5467eb-cd82-46dc-8be6-b4deb7dc35d7",
   "metadata": {},
   "source": [
    "С помощью optuna подберем гиперпараметры для CatBoost."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "id": "d0c49c1b-6b57-4456-a8e1-56c0a3e85fb1",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[I 2025-07-10 03:30:15,547] A new study created in memory with name: no-name-fb6a34a5-fdd1-4536-9923-3e0edc96600b\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "849d47b4a23846c7a9a72924c303563d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/50 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I 2025-07-10 03:35:26,998] Trial 0 finished with value: 0.51006 and parameters: {'depth': 10, 'eta': 0.04958254530109517, 'l2_leaf_reg': 8.267852559927581e-05}. Best is trial 0 with value: 0.51006.\n",
      "[I 2025-07-10 03:43:00,381] Trial 1 finished with value: 0.5070635714285715 and parameters: {'depth': 7, 'eta': 0.0310190357018343, 'l2_leaf_reg': 0.06805125987251939}. Best is trial 1 with value: 0.5070635714285715.\n",
      "[I 2025-07-10 03:45:47,979] Trial 2 finished with value: 0.50992 and parameters: {'depth': 6, 'eta': 0.006020413734742897, 'l2_leaf_reg': 0.0005065573069802006}. Best is trial 1 with value: 0.5070635714285715.\n",
      "[I 2025-07-10 03:59:01,248] Trial 3 finished with value: 0.5093807142857143 and parameters: {'depth': 10, 'eta': 0.020553336978992368, 'l2_leaf_reg': 0.0001111052586913435}. Best is trial 1 with value: 0.5070635714285715.\n",
      "[I 2025-07-10 04:01:04,430] Trial 4 finished with value: 0.5115200000000001 and parameters: {'depth': 4, 'eta': 0.006610408215701838, 'l2_leaf_reg': 0.00011871489268559254}. Best is trial 1 with value: 0.5070635714285715.\n",
      "[I 2025-07-10 04:01:40,206] Trial 5 finished with value: 0.5141642857142856 and parameters: {'depth': 7, 'eta': 0.2548716566696847, 'l2_leaf_reg': 0.0010393919139760279}. Best is trial 1 with value: 0.5070635714285715.\n",
      "[I 2025-07-10 04:09:29,816] Trial 6 finished with value: 0.5196757142857144 and parameters: {'depth': 8, 'eta': 0.0014124156885932013, 'l2_leaf_reg': 0.00040455795532688145}. Best is trial 1 with value: 0.5070635714285715.\n",
      "[I 2025-07-10 04:10:13,498] Trial 7 finished with value: 0.506072857142857 and parameters: {'depth': 5, 'eta': 0.1859495930428847, 'l2_leaf_reg': 0.14412463928035665}. Best is trial 7 with value: 0.506072857142857.\n",
      "[I 2025-07-10 04:12:22,989] Trial 8 finished with value: 0.5009457142857142 and parameters: {'depth': 5, 'eta': 0.028696624117851774, 'l2_leaf_reg': 0.13805253355908462}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:21:15,380] Trial 9 finished with value: 0.5034435714285713 and parameters: {'depth': 8, 'eta': 0.030413087972180577, 'l2_leaf_reg': 1.9167991783660063}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:22:37,783] Trial 10 finished with value: 0.5044735714285714 and parameters: {'depth': 5, 'eta': 0.10569591592772207, 'l2_leaf_reg': 5.562286970068262}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:31:26,167] Trial 11 finished with value: 0.5110607142857143 and parameters: {'depth': 8, 'eta': 0.007077144798219071, 'l2_leaf_reg': 2.895307771719144}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:34:45,214] Trial 12 finished with value: 0.5092428571428572 and parameters: {'depth': 9, 'eta': 0.07202830779060738, 'l2_leaf_reg': 0.546249078672918}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:36:45,441] Trial 13 finished with value: 0.5083228571428572 and parameters: {'depth': 4, 'eta': 0.012272337575849303, 'l2_leaf_reg': 0.007252160182116303}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:39:48,724] Trial 14 finished with value: 0.5163864285714286 and parameters: {'depth': 6, 'eta': 0.002393762360939807, 'l2_leaf_reg': 0.021133258987961232}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:46:24,548] Trial 15 finished with value: 0.5037035714285715 and parameters: {'depth': 8, 'eta': 0.035861732540817585, 'l2_leaf_reg': 0.7205723191963539}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:49:08,509] Trial 16 finished with value: 0.5057957142857143 and parameters: {'depth': 6, 'eta': 0.013703257958779528, 'l2_leaf_reg': 0.9268844598895555}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:51:10,851] Trial 17 finished with value: 0.5166228571428572 and parameters: {'depth': 9, 'eta': 0.11349513179189812, 'l2_leaf_reg': 0.004586980187646062}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:53:24,135] Trial 18 finished with value: 0.5022007142857142 and parameters: {'depth': 5, 'eta': 0.025022078362174856, 'l2_leaf_reg': 1.2351778828425332e-05}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:55:56,988] Trial 19 finished with value: 0.516645 and parameters: {'depth': 5, 'eta': 0.003348027921001018, 'l2_leaf_reg': 1.6621001406354317e-05}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 04:57:53,836] Trial 20 finished with value: 0.5049114285714286 and parameters: {'depth': 4, 'eta': 0.02009185768273317, 'l2_leaf_reg': 1.8195884261086077e-05}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:00:04,525] Trial 21 finished with value: 0.503515 and parameters: {'depth': 5, 'eta': 0.04715415942868539, 'l2_leaf_reg': 0.13959594403711614}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:02:46,351] Trial 22 finished with value: 0.5047157142857143 and parameters: {'depth': 6, 'eta': 0.02536021504087072, 'l2_leaf_reg': 0.031470915566743064}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:10:08,408] Trial 23 finished with value: 0.5057328571428571 and parameters: {'depth': 7, 'eta': 0.011265890565455778, 'l2_leaf_reg': 2.060441239940463}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:15:59,713] Trial 24 finished with value: 0.5030485714285714 and parameters: {'depth': 9, 'eta': 0.07591716682730358, 'l2_leaf_reg': 7.282348476990774}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:18:30,626] Trial 25 finished with value: 0.5132450000000001 and parameters: {'depth': 9, 'eta': 0.07876082966375722, 'l2_leaf_reg': 0.002679004094912128}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:20:39,699] Trial 26 finished with value: 0.5041078571428571 and parameters: {'depth': 5, 'eta': 0.05746851451894965, 'l2_leaf_reg': 0.2332003999981117}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:21:15,244] Trial 27 finished with value: 0.5081749999999999 and parameters: {'depth': 4, 'eta': 0.15232940041576723, 'l2_leaf_reg': 0.035139164244740756}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:29:02,354] Trial 28 finished with value: 0.5027571428571429 and parameters: {'depth': 7, 'eta': 0.03881112040229251, 'l2_leaf_reg': 9.253154590525618}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:36:51,619] Trial 29 finished with value: 0.5037628571428572 and parameters: {'depth': 7, 'eta': 0.04223054405262475, 'l2_leaf_reg': 9.616018011532576}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:39:39,922] Trial 30 finished with value: 0.5072871428571429 and parameters: {'depth': 6, 'eta': 0.015894370986680898, 'l2_leaf_reg': 0.014695634516949779}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:48:39,729] Trial 31 finished with value: 0.5056921428571428 and parameters: {'depth': 10, 'eta': 0.06401230057244564, 'l2_leaf_reg': 9.43811167033542}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 05:59:25,646] Trial 32 finished with value: 0.5048135714285714 and parameters: {'depth': 9, 'eta': 0.026789896853550814, 'l2_leaf_reg': 0.4154540223557125}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:02:08,628] Trial 33 finished with value: 0.5018728571428571 and parameters: {'depth': 6, 'eta': 0.039553792355248, 'l2_leaf_reg': 3.147140381141612}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:05:02,414] Trial 34 finished with value: 0.5087849999999999 and parameters: {'depth': 6, 'eta': 0.008999459478076793, 'l2_leaf_reg': 2.7742712167486965}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:07:22,755] Trial 35 finished with value: 0.5028285714285714 and parameters: {'depth': 5, 'eta': 0.021448699623418263, 'l2_leaf_reg': 0.052801561460919556}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:15:01,719] Trial 36 finished with value: 0.5019057142857143 and parameters: {'depth': 7, 'eta': 0.03722725810673189, 'l2_leaf_reg': 1.186916028751397}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:18:08,178] Trial 37 finished with value: 0.5129507142857143 and parameters: {'depth': 6, 'eta': 0.004116434665541385, 'l2_leaf_reg': 0.10558706475877806}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:20:33,303] Trial 38 finished with value: 0.5047250000000001 and parameters: {'depth': 5, 'eta': 0.017008684842141335, 'l2_leaf_reg': 0.26467661592335995}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:26:12,541] Trial 39 finished with value: 0.5104928571428571 and parameters: {'depth': 7, 'eta': 0.04653820117045454, 'l2_leaf_reg': 5.0290880552487406e-05}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:28:17,770] Trial 40 finished with value: 0.5022078571428572 and parameters: {'depth': 4, 'eta': 0.031169517856212667, 'l2_leaf_reg': 1.1525543265620801}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:30:22,048] Trial 41 finished with value: 0.5044278571428572 and parameters: {'depth': 4, 'eta': 0.03028902367211473, 'l2_leaf_reg': 1.0309171648503768}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:32:28,696] Trial 42 finished with value: 0.5029392857142857 and parameters: {'depth': 4, 'eta': 0.024712015422023823, 'l2_leaf_reg': 1.2883231965493827}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:34:52,602] Trial 43 finished with value: 0.5048735714285714 and parameters: {'depth': 5, 'eta': 0.03588356020282835, 'l2_leaf_reg': 0.00038729359949706606}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:36:42,016] Trial 44 finished with value: 0.5076007142857143 and parameters: {'depth': 4, 'eta': 0.10074106344943493, 'l2_leaf_reg': 4.04304997078736}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:39:04,410] Trial 45 finished with value: 0.5026985714285714 and parameters: {'depth': 5, 'eta': 0.05825031634504199, 'l2_leaf_reg': 0.3242744895010619}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:41:57,538] Trial 46 finished with value: 0.5036278571428572 and parameters: {'depth': 6, 'eta': 0.0190391048047338, 'l2_leaf_reg': 0.0013642345757016179}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:49:19,357] Trial 47 finished with value: 0.507407142857143 and parameters: {'depth': 7, 'eta': 0.009080462100081111, 'l2_leaf_reg': 1.6968730404095993}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:51:45,444] Trial 48 finished with value: 0.50441 and parameters: {'depth': 5, 'eta': 0.03461898468206315, 'l2_leaf_reg': 0.08157378732656205}. Best is trial 8 with value: 0.5009457142857142.\n",
      "[I 2025-07-10 06:54:41,512] Trial 49 finished with value: 0.5069499999999999 and parameters: {'depth': 6, 'eta': 0.014717937078528866, 'l2_leaf_reg': 0.6094793643371188}. Best is trial 8 with value: 0.5009457142857142.\n"
     ]
    }
   ],
   "source": [
    "def objective(trial):\n",
    "    params = {\n",
    "        'iterations': 1000,\n",
    "        'depth': trial.suggest_int('depth', 4, 10),\n",
    "        'eta': trial.suggest_float('eta', 0.001, 0.3, log=True),\n",
    "        'l2_leaf_reg': trial.suggest_float('l2_leaf_reg', 1e-5, 10, log=True),\n",
    "        'random_state': 42,\n",
    "        'early_stopping_rounds': 50,\n",
    "        'verbose': False,\n",
    "        'class_weights': [0.7900, 0.9220, 0.9820, 0.6070, 0.3870, 0.2190, 0.1540],\n",
    "    }\n",
    "\n",
    "    model = CatBoostClassifier(**params)\n",
    "    model.fit(train_pool_reduced,\n",
    "          eval_set=eval_pool_reduced,\n",
    "          use_best_model=True)\n",
    "\n",
    "    return weighted_mae(y_val, model.predict(X_val).ravel())\n",
    "\n",
    "# Оптимизация\n",
    "study = optuna.create_study(direction='minimize')\n",
    "study.optimize(objective, n_trials=50, show_progress_bar=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57f191ef-23f2-490f-a2ac-7ff4f37dc9e4",
   "metadata": {},
   "source": [
    "Дальше подберем гиперпараметры для LightGBM."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "id": "8961a5fb-6c50-4fad-9926-fcd2cd0f552c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[I 2025-07-10 18:43:27,687] A new study created in memory with name: no-name-ead55f8f-77bf-4a2b-8bf7-9f46c2dacd9d\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ec96664d972d4af9854be4103b12b6b9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/50 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[I 2025-07-10 18:44:57,044] Trial 0 finished with value: 0.5171964285714286 and parameters: {'max_depth': 7, 'learning_rate': 0.0013503127825370406, 'reg_alpha': 0.002537353945805913, 'reg_lambda': 0.05803688563697082}. Best is trial 0 with value: 0.5171964285714286.\n",
      "[I 2025-07-10 18:45:21,967] Trial 1 finished with value: 0.5109371428571428 and parameters: {'max_depth': 4, 'learning_rate': 0.022754098432370987, 'reg_alpha': 0.3513036893908982, 'reg_lambda': 2.80750990430169e-06}. Best is trial 1 with value: 0.5109371428571428.\n",
      "[I 2025-07-10 18:45:38,643] Trial 2 finished with value: 0.5091478571428572 and parameters: {'max_depth': 4, 'learning_rate': 0.03503716438786625, 'reg_alpha': 0.05712933841387549, 'reg_lambda': 0.26142551852039475}. Best is trial 2 with value: 0.5091478571428572.\n",
      "[I 2025-07-10 18:45:45,298] Trial 3 finished with value: 0.5152599999999999 and parameters: {'max_depth': 6, 'learning_rate': 0.11677790960292908, 'reg_alpha': 1.0213215571017507e-05, 'reg_lambda': 0.20019484260680687}. Best is trial 2 with value: 0.5091478571428572.\n",
      "[I 2025-07-10 18:45:48,598] Trial 4 finished with value: 0.5233450000000001 and parameters: {'max_depth': 5, 'learning_rate': 0.2677435076024497, 'reg_alpha': 0.0013541854019493524, 'reg_lambda': 6.746095045665416e-05}. Best is trial 2 with value: 0.5091478571428572.\n",
      "[I 2025-07-10 18:46:09,034] Trial 5 finished with value: 0.5115642857142857 and parameters: {'max_depth': 7, 'learning_rate': 0.03944525753098351, 'reg_alpha': 0.00018351238032703363, 'reg_lambda': 4.251157663776383}. Best is trial 2 with value: 0.5091478571428572.\n",
      "[I 2025-07-10 18:46:16,911] Trial 6 finished with value: 0.5164314285714285 and parameters: {'max_depth': 9, 'learning_rate': 0.10527883183242025, 'reg_alpha': 2.2177066065066982e-08, 'reg_lambda': 0.002124521027426093}. Best is trial 2 with value: 0.5091478571428572.\n",
      "[I 2025-07-10 18:47:41,044] Trial 7 finished with value: 0.5090885714285714 and parameters: {'max_depth': 8, 'learning_rate': 0.0032442189161261724, 'reg_alpha': 1.286413006302532e-07, 'reg_lambda': 1.3263678805220458e-06}. Best is trial 7 with value: 0.5090885714285714.\n",
      "[I 2025-07-10 18:49:09,463] Trial 8 finished with value: 0.5096685714285714 and parameters: {'max_depth': 10, 'learning_rate': 0.008173628585493472, 'reg_alpha': 4.18277596207661, 'reg_lambda': 8.803392740382573e-09}. Best is trial 7 with value: 0.5090885714285714.\n",
      "[I 2025-07-10 18:49:31,908] Trial 9 finished with value: 0.5086664285714285 and parameters: {'max_depth': 4, 'learning_rate': 0.024864877344903936, 'reg_alpha': 0.00013009905532396573, 'reg_lambda': 0.44437141423124316}. Best is trial 9 with value: 0.5086664285714285.\n",
      "[I 2025-07-10 18:50:30,832] Trial 10 finished with value: 0.5081485714285714 and parameters: {'max_depth': 5, 'learning_rate': 0.008433268099746937, 'reg_alpha': 2.7481146398986374e-06, 'reg_lambda': 7.923009815066672}. Best is trial 10 with value: 0.5081485714285714.\n",
      "[I 2025-07-10 18:51:31,701] Trial 11 finished with value: 0.5072885714285714 and parameters: {'max_depth': 5, 'learning_rate': 0.0069671944757579395, 'reg_alpha': 3.400464420996297e-06, 'reg_lambda': 8.98876212234206}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:52:44,489] Trial 12 finished with value: 0.5087664285714285 and parameters: {'max_depth': 6, 'learning_rate': 0.007383431593175194, 'reg_alpha': 1.3256894056372882e-06, 'reg_lambda': 6.254814591120108}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:53:40,885] Trial 13 finished with value: 0.5092485714285714 and parameters: {'max_depth': 5, 'learning_rate': 0.006687802062318237, 'reg_alpha': 1.120336625941141e-06, 'reg_lambda': 0.00578477431754002}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:55:05,002] Trial 14 finished with value: 0.5131614285714285 and parameters: {'max_depth': 6, 'learning_rate': 0.0018109585968477694, 'reg_alpha': 5.1010574095141385e-09, 'reg_lambda': 9.238824675943892}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:55:52,244] Trial 15 finished with value: 0.5096164285714285 and parameters: {'max_depth': 5, 'learning_rate': 0.011560054559061025, 'reg_alpha': 7.907167050479051e-06, 'reg_lambda': 0.0027429402320049566}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:56:54,965] Trial 16 finished with value: 0.5084514285714286 and parameters: {'max_depth': 5, 'learning_rate': 0.003373055198595759, 'reg_alpha': 1.6534751246231027e-09, 'reg_lambda': 9.617334822498372e-05}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:58:18,081] Trial 17 finished with value: 0.5085664285714286 and parameters: {'max_depth': 8, 'learning_rate': 0.003922263780974386, 'reg_alpha': 1.5143423675064111e-07, 'reg_lambda': 1.7171738260349789e-09}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:59:03,121] Trial 18 finished with value: 0.5106364285714285 and parameters: {'max_depth': 7, 'learning_rate': 0.012433192448174552, 'reg_alpha': 1.551702881829845e-05, 'reg_lambda': 0.018494035892546386}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:59:15,623] Trial 19 finished with value: 0.5077914285714287 and parameters: {'max_depth': 6, 'learning_rate': 0.054181442000441206, 'reg_alpha': 0.0020827149834510197, 'reg_lambda': 1.2188506380821416}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 18:59:26,679] Trial 20 finished with value: 0.5104449999999999 and parameters: {'max_depth': 6, 'learning_rate': 0.06947404411411866, 'reg_alpha': 0.005037826794815885, 'reg_lambda': 0.8891316392789625}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:00:08,559] Trial 21 finished with value: 0.5084964285714285 and parameters: {'max_depth': 5, 'learning_rate': 0.01616648901003153, 'reg_alpha': 0.00048640347894480287, 'reg_lambda': 1.4354706642691732}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:00:21,903] Trial 22 finished with value: 0.508825 and parameters: {'max_depth': 6, 'learning_rate': 0.048767507880416484, 'reg_alpha': 0.04351076613815799, 'reg_lambda': 0.05566280556783199}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:01:03,481] Trial 23 finished with value: 0.5086128571428572 and parameters: {'max_depth': 4, 'learning_rate': 0.004644708454568615, 'reg_alpha': 2.9440898189948598e-05, 'reg_lambda': 9.981964636625582}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:02:12,244] Trial 24 finished with value: 0.5109085714285715 and parameters: {'max_depth': 5, 'learning_rate': 0.0022528585904166617, 'reg_alpha': 1.2824529433410865e-06, 'reg_lambda': 0.0005477921787534226}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:02:45,386] Trial 25 finished with value: 0.5081128571428571 and parameters: {'max_depth': 6, 'learning_rate': 0.019769861352366677, 'reg_alpha': 1.064182612453622e-07, 'reg_lambda': 1.2767451798003004}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:02:55,402] Trial 26 finished with value: 0.5143985714285714 and parameters: {'max_depth': 8, 'learning_rate': 0.08014270624946197, 'reg_alpha': 1.1855815210280012e-07, 'reg_lambda': 0.07952170989105195}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:03:28,112] Trial 27 finished with value: 0.5097014285714285 and parameters: {'max_depth': 6, 'learning_rate': 0.023630607828099254, 'reg_alpha': 2.4197476331887494e-08, 'reg_lambda': 0.8942472769199081}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:04:08,025] Trial 28 finished with value: 0.5093571428571428 and parameters: {'max_depth': 7, 'learning_rate': 0.015977760159037444, 'reg_alpha': 0.014259205768306776, 'reg_lambda': 4.807731452650082e-06}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:04:14,048] Trial 29 finished with value: 0.5143292857142857 and parameters: {'max_depth': 6, 'learning_rate': 0.14323894921258015, 'reg_alpha': 4.882682883404966e-05, 'reg_lambda': 0.02612961037438644}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:04:29,401] Trial 30 finished with value: 0.5115 and parameters: {'max_depth': 7, 'learning_rate': 0.05808605670451939, 'reg_alpha': 3.047727490515506e-07, 'reg_lambda': 1.4660902597524343}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:05:43,623] Trial 31 finished with value: 0.5240692857142857 and parameters: {'max_depth': 5, 'learning_rate': 0.0011130502499220164, 'reg_alpha': 3.519507835098431e-06, 'reg_lambda': 2.248043968017786}. Best is trial 11 with value: 0.5072885714285714.\n",
      "[I 2025-07-10 19:06:21,974] Trial 32 finished with value: 0.5066678571428571 and parameters: {'max_depth': 4, 'learning_rate': 0.009691341563346547, 'reg_alpha': 2.6626707145359225e-08, 'reg_lambda': 0.2642345371799215}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:06:41,097] Trial 33 finished with value: 0.51081 and parameters: {'max_depth': 4, 'learning_rate': 0.03231926883444462, 'reg_alpha': 2.710509018084863e-08, 'reg_lambda': 0.14482513647682146}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:07:18,658] Trial 34 finished with value: 0.5078428571428572 and parameters: {'max_depth': 4, 'learning_rate': 0.011718039457222428, 'reg_alpha': 1.935238325027112e-09, 'reg_lambda': 0.38254295602305544}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:07:59,160] Trial 35 finished with value: 0.5075 and parameters: {'max_depth': 4, 'learning_rate': 0.006054633310242815, 'reg_alpha': 1.8709517328503127e-09, 'reg_lambda': 0.249371962851592}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:08:48,726] Trial 36 finished with value: 0.5098692857142857 and parameters: {'max_depth': 4, 'learning_rate': 0.0054330313563307866, 'reg_alpha': 7.85842280077733e-09, 'reg_lambda': 0.017239134190067503}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:08:51,715] Trial 37 finished with value: 0.5149042857142857 and parameters: {'max_depth': 4, 'learning_rate': 0.2697830115286268, 'reg_alpha': 0.0009174823341387403, 'reg_lambda': 0.17810311339346574}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:09:35,739] Trial 38 finished with value: 0.5109842857142858 and parameters: {'max_depth': 4, 'learning_rate': 0.002478657182765139, 'reg_alpha': 9.493442327715508e-09, 'reg_lambda': 0.0003856802867850371}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:10:35,043] Trial 39 finished with value: 0.5086064285714286 and parameters: {'max_depth': 5, 'learning_rate': 0.005992098936273834, 'reg_alpha': 1.2277156177475703e-09, 'reg_lambda': 2.1533753949296223e-05}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:10:39,802] Trial 40 finished with value: 0.5131628571428571 and parameters: {'max_depth': 4, 'learning_rate': 0.18430116664611518, 'reg_alpha': 2.0809935177196426, 'reg_lambda': 8.037137069730794e-08}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:11:18,067] Trial 41 finished with value: 0.5070992857142858 and parameters: {'max_depth': 4, 'learning_rate': 0.010511176922653477, 'reg_alpha': 3.1887988840021475e-09, 'reg_lambda': 0.33566652802228103}. Best is trial 32 with value: 0.5066678571428571.\n",
      "[I 2025-07-10 19:11:56,500] Trial 42 finished with value: 0.5058642857142857 and parameters: {'max_depth': 4, 'learning_rate': 0.00941310491350601, 'reg_alpha': 3.791332119776044e-08, 'reg_lambda': 0.3564452644947575}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:12:34,347] Trial 43 finished with value: 0.5068521428571429 and parameters: {'max_depth': 4, 'learning_rate': 0.009392883754550241, 'reg_alpha': 4.7597933899155804e-08, 'reg_lambda': 0.28581573489455625}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:13:11,262] Trial 44 finished with value: 0.5060271428571428 and parameters: {'max_depth': 4, 'learning_rate': 0.009023055846960164, 'reg_alpha': 4.4120630170284344e-08, 'reg_lambda': 0.006138734333871618}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:13:47,871] Trial 45 finished with value: 0.5076149999999999 and parameters: {'max_depth': 4, 'learning_rate': 0.009648033221164939, 'reg_alpha': 5.5626976291890774e-08, 'reg_lambda': 0.007552334006931616}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:14:21,472] Trial 46 finished with value: 0.5090935714285715 and parameters: {'max_depth': 4, 'learning_rate': 0.014192698379030613, 'reg_alpha': 4.886943588818958e-07, 'reg_lambda': 0.05002132001560856}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:15:35,339] Trial 47 finished with value: 0.5106278571428571 and parameters: {'max_depth': 10, 'learning_rate': 0.00880952575326094, 'reg_alpha': 5.548474790131723e-09, 'reg_lambda': 0.001238623313919104}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:16:11,848] Trial 48 finished with value: 0.5081592857142857 and parameters: {'max_depth': 4, 'learning_rate': 0.010154267807154433, 'reg_alpha': 4.5363685421733883e-08, 'reg_lambda': 0.0075632608607782426}. Best is trial 42 with value: 0.5058642857142857.\n",
      "[I 2025-07-10 19:16:34,571] Trial 49 finished with value: 0.50885 and parameters: {'max_depth': 5, 'learning_rate': 0.029437178839612464, 'reg_alpha': 1.1610923020732214e-08, 'reg_lambda': 0.5195515402009389}. Best is trial 42 with value: 0.5058642857142857.\n"
     ]
    }
   ],
   "source": [
    "def objective(trial):\n",
    "    params = {\n",
    "        'max_depth': trial.suggest_int('max_depth', 4, 10),\n",
    "        'learning_rate': trial.suggest_float('learning_rate', 0.001, 0.3, log=True),\n",
    "        'reg_alpha': trial.suggest_float('reg_alpha', 1e-9, 10.0, log=True),\n",
    "        'reg_lambda': trial.suggest_float('reg_lambda', 1e-9, 10.0, log=True),\n",
    "        'objective': 'multiclass',\n",
    "        'num_class': 7,\n",
    "        'n_estimators': 1000, \n",
    "        'random_state': 42,\n",
    "        'verbosity': -1,\n",
    "    }\n",
    "    model = lgb.train(\n",
    "        params,\n",
    "        train_data_reduced,\n",
    "        valid_sets=[val_data_reduced],\n",
    "        callbacks=[\n",
    "            lgb.early_stopping(stopping_rounds=50, verbose=False),\n",
    "        ]\n",
    "    )\n",
    "\n",
    "    return weighted_mae(y_val, np.argmax(model.predict(X_val_reduced_lgbm), axis=1))\n",
    "\n",
    "# Оптимизация\n",
    "study = optuna.create_study(direction='minimize')\n",
    "study.optimize(objective, n_trials=50, show_progress_bar=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87203b9d-3897-482d-9de5-969d63fc3061",
   "metadata": {},
   "source": [
    "В итоге были выбраны 7 моделей CatBoost и 2 модели LightGBM.\n",
    "\n",
    "<div style=\"text-align: center; font-weight: bold;\">CatBoost Models Parameters</div>\n",
    "\n",
    "| Model      | depth | learning_rate | l2_leaf_reg |\n",
    "|:----------:|:-----:|:-------------:|:-----------:|\n",
    "| CatBoost 1 | 5     | 0.02870       | 0.13805     |\n",
    "| CatBoost 2 | 6     | 0.03955       | 3.14714     |\n",
    "| CatBoost 3 | 7     | 0.03723       | 1.18692     |\n",
    "| CatBoost 4 | 4     | 0.03117       | 1.15255     |\n",
    "| CatBoost 5 | 5     | 0.05825       | 0.32427     |\n",
    "| CatBoost 6 | 7     | 0.03881       | 9.25315     |\n",
    "| CatBoost 7 | 5     | 0.02145       | 0.05280     |\n",
    "\n",
    "\n",
    "<div style=\"text-align: center; font-weight: bold;\">LightGBM Models Parameters</div>\n",
    "\n",
    "| Model      | max_depth | learning_rate | reg_alpha | reg_lambda |\n",
    "|:----------:|:---------:|:-------------:|:---------:|:----------:|\n",
    "| LightGBM 1 | 4         | 0.00941       | 3.79e-08  | 0.35645    |\n",
    "| LightGBM 2 | 4         | 0.00902       | 4.41e-08  | 0.00614    |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b103e63-1870-46c3-a405-7311b81214a4",
   "metadata": {},
   "source": [
    "## Обучение ансамбля моделей"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c29eaf79-6112-459d-9aea-c096c7c4b4ef",
   "metadata": {},
   "source": [
    "Обучим ансамбль моделей, выбранных выше."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "id": "2b21115a-6ca5-4450-a34c-1748c7d5a894",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "==================================================\n",
      "Params: depth=5, lr=0.028697, l2_reg=0.138053\n",
      "0:\tlearn: 1.9231850\ttest: 1.9232075\tbest: 1.9232075 (0)\ttotal: 205ms\tremaining: 3m 24s\n",
      "100:\tlearn: 1.4685456\ttest: 1.4788812\tbest: 1.4788812 (100)\ttotal: 19.4s\tremaining: 2m 52s\n",
      "200:\tlearn: 1.4368167\ttest: 1.4537853\tbest: 1.4537853 (200)\ttotal: 36.5s\tremaining: 2m 24s\n",
      "300:\tlearn: 1.4217764\ttest: 1.4455534\tbest: 1.4455534 (300)\ttotal: 52.7s\tremaining: 2m 2s\n",
      "400:\tlearn: 1.4093950\ttest: 1.4399490\tbest: 1.4399490 (400)\ttotal: 1m 9s\tremaining: 1m 43s\n",
      "500:\tlearn: 1.3976208\ttest: 1.4360230\tbest: 1.4360230 (500)\ttotal: 1m 25s\tremaining: 1m 25s\n",
      "600:\tlearn: 1.3871861\ttest: 1.4333614\tbest: 1.4333614 (600)\ttotal: 1m 41s\tremaining: 1m 7s\n",
      "700:\tlearn: 1.3780754\ttest: 1.4316566\tbest: 1.4316566 (700)\ttotal: 1m 58s\tremaining: 50.3s\n",
      "800:\tlearn: 1.3695820\ttest: 1.4302551\tbest: 1.4302427 (799)\ttotal: 2m 14s\tremaining: 33.3s\n",
      "900:\tlearn: 1.3617426\ttest: 1.4292421\tbest: 1.4292421 (900)\ttotal: 2m 30s\tremaining: 16.5s\n",
      "999:\tlearn: 1.3541278\ttest: 1.4281492\tbest: 1.4281492 (999)\ttotal: 2m 45s\tremaining: 0us\n",
      "\n",
      "bestTest = 1.428149182\n",
      "bestIteration = 999\n",
      "\n",
      "\n",
      "==================================================\n",
      "Params: depth=6, lr=0.039554, l2_reg=3.147140\n",
      "0:\tlearn: 1.9149479\ttest: 1.9149739\tbest: 1.9149739 (0)\ttotal: 230ms\tremaining: 3m 49s\n",
      "100:\tlearn: 1.4469820\ttest: 1.4626497\tbest: 1.4626497 (100)\ttotal: 21.3s\tremaining: 3m 9s\n",
      "200:\tlearn: 1.4176751\ttest: 1.4451155\tbest: 1.4451155 (200)\ttotal: 40.8s\tremaining: 2m 42s\n",
      "300:\tlearn: 1.3999684\ttest: 1.4379312\tbest: 1.4379312 (300)\ttotal: 59.6s\tremaining: 2m 18s\n",
      "400:\tlearn: 1.3837098\ttest: 1.4331061\tbest: 1.4331061 (400)\ttotal: 1m 18s\tremaining: 1m 57s\n",
      "500:\tlearn: 1.3698236\ttest: 1.4304162\tbest: 1.4303942 (498)\ttotal: 1m 37s\tremaining: 1m 37s\n",
      "600:\tlearn: 1.3577697\ttest: 1.4287316\tbest: 1.4287196 (599)\ttotal: 1m 56s\tremaining: 1m 17s\n",
      "700:\tlearn: 1.3466012\ttest: 1.4273705\tbest: 1.4273705 (700)\ttotal: 2m 15s\tremaining: 57.7s\n",
      "800:\tlearn: 1.3361588\ttest: 1.4266306\tbest: 1.4266306 (800)\ttotal: 2m 34s\tremaining: 38.4s\n",
      "900:\tlearn: 1.3258997\ttest: 1.4258357\tbest: 1.4258337 (899)\ttotal: 2m 53s\tremaining: 19.1s\n",
      "999:\tlearn: 1.3163807\ttest: 1.4250768\tbest: 1.4250357 (989)\ttotal: 3m 12s\tremaining: 0us\n",
      "\n",
      "bestTest = 1.42503566\n",
      "bestIteration = 989\n",
      "\n",
      "Shrink model to first 990 iterations.\n",
      "\n",
      "==================================================\n",
      "Params: depth=7, lr=0.037227, l2_reg=1.186916\n",
      "0:\tlearn: 1.9151709\ttest: 1.9154028\tbest: 1.9154028 (0)\ttotal: 376ms\tremaining: 6m 15s\n",
      "100:\tlearn: 1.4378415\ttest: 1.4617943\tbest: 1.4617943 (100)\ttotal: 44.6s\tremaining: 6m 36s\n",
      "200:\tlearn: 1.4006922\ttest: 1.4439678\tbest: 1.4439678 (200)\ttotal: 1m 33s\tremaining: 6m 10s\n",
      "300:\tlearn: 1.3772508\ttest: 1.4371634\tbest: 1.4371634 (300)\ttotal: 2m 23s\tremaining: 5m 33s\n",
      "400:\tlearn: 1.3523805\ttest: 1.4326852\tbest: 1.4326852 (400)\ttotal: 3m 12s\tremaining: 4m 47s\n",
      "500:\tlearn: 1.3306902\ttest: 1.4299266\tbest: 1.4299266 (500)\ttotal: 4m 2s\tremaining: 4m 1s\n",
      "600:\tlearn: 1.3123370\ttest: 1.4283550\tbest: 1.4283550 (600)\ttotal: 4m 52s\tremaining: 3m 14s\n",
      "700:\tlearn: 1.2950722\ttest: 1.4271901\tbest: 1.4271792 (699)\ttotal: 5m 43s\tremaining: 2m 26s\n",
      "800:\tlearn: 1.2774564\ttest: 1.4263099\tbest: 1.4262695 (796)\ttotal: 6m 34s\tremaining: 1m 37s\n",
      "900:\tlearn: 1.2609961\ttest: 1.4258494\tbest: 1.4258071 (896)\ttotal: 7m 24s\tremaining: 48.9s\n",
      "Stopped by overfitting detector  (50 iterations wait)\n",
      "\n",
      "bestTest = 1.42572775\n",
      "bestIteration = 920\n",
      "\n",
      "Shrink model to first 921 iterations.\n",
      "\n",
      "==================================================\n",
      "Params: depth=4, lr=0.031170, l2_reg=1.152554\n",
      "0:\tlearn: 1.9219128\ttest: 1.9219445\tbest: 1.9219445 (0)\ttotal: 133ms\tremaining: 2m 12s\n",
      "100:\tlearn: 1.4735476\ttest: 1.4812215\tbest: 1.4812215 (100)\ttotal: 17s\tremaining: 2m 31s\n",
      "200:\tlearn: 1.4457921\ttest: 1.4578378\tbest: 1.4578378 (200)\ttotal: 32.6s\tremaining: 2m 9s\n",
      "300:\tlearn: 1.4326531\ttest: 1.4485303\tbest: 1.4485303 (300)\ttotal: 47.8s\tremaining: 1m 50s\n",
      "400:\tlearn: 1.4223206\ttest: 1.4426527\tbest: 1.4426527 (400)\ttotal: 1m 2s\tremaining: 1m 33s\n",
      "500:\tlearn: 1.4137779\ttest: 1.4390262\tbest: 1.4390262 (500)\ttotal: 1m 17s\tremaining: 1m 16s\n",
      "600:\tlearn: 1.4069945\ttest: 1.4366081\tbest: 1.4366081 (600)\ttotal: 1m 31s\tremaining: 1m\n",
      "700:\tlearn: 1.4008583\ttest: 1.4349296\tbest: 1.4349261 (699)\ttotal: 1m 45s\tremaining: 44.9s\n",
      "800:\tlearn: 1.3952603\ttest: 1.4333363\tbest: 1.4333363 (800)\ttotal: 1m 59s\tremaining: 29.7s\n",
      "900:\tlearn: 1.3900851\ttest: 1.4322647\tbest: 1.4322647 (900)\ttotal: 2m 13s\tremaining: 14.7s\n",
      "999:\tlearn: 1.3851662\ttest: 1.4312071\tbest: 1.4312071 (999)\ttotal: 2m 27s\tremaining: 0us\n",
      "\n",
      "bestTest = 1.431207142\n",
      "bestIteration = 999\n",
      "\n",
      "\n",
      "==================================================\n",
      "Params: depth=5, lr=0.058250, l2_reg=0.324274\n",
      "0:\tlearn: 1.9005082\ttest: 1.9005511\tbest: 1.9005511 (0)\ttotal: 175ms\tremaining: 2m 54s\n",
      "100:\tlearn: 1.4363449\ttest: 1.4539396\tbest: 1.4539396 (100)\ttotal: 18.7s\tremaining: 2m 46s\n",
      "200:\tlearn: 1.4097901\ttest: 1.4403195\tbest: 1.4403195 (200)\ttotal: 35.4s\tremaining: 2m 20s\n",
      "300:\tlearn: 1.3881023\ttest: 1.4341836\tbest: 1.4341836 (300)\ttotal: 52.4s\tremaining: 2m 1s\n",
      "400:\tlearn: 1.3713667\ttest: 1.4314502\tbest: 1.4314502 (400)\ttotal: 1m 8s\tremaining: 1m 42s\n",
      "500:\tlearn: 1.3564668\ttest: 1.4297485\tbest: 1.4297220 (492)\ttotal: 1m 25s\tremaining: 1m 25s\n",
      "600:\tlearn: 1.3423995\ttest: 1.4283528\tbest: 1.4283528 (600)\ttotal: 1m 41s\tremaining: 1m 7s\n",
      "700:\tlearn: 1.3291011\ttest: 1.4274468\tbest: 1.4274307 (696)\ttotal: 1m 59s\tremaining: 51.2s\n",
      "800:\tlearn: 1.3163500\ttest: 1.4266490\tbest: 1.4266363 (799)\ttotal: 2m 16s\tremaining: 34s\n",
      "900:\tlearn: 1.3046468\ttest: 1.4262243\tbest: 1.4262243 (900)\ttotal: 2m 33s\tremaining: 16.9s\n",
      "999:\tlearn: 1.2935324\ttest: 1.4259612\tbest: 1.4259290 (976)\ttotal: 2m 49s\tremaining: 0us\n",
      "\n",
      "bestTest = 1.425929045\n",
      "bestIteration = 976\n",
      "\n",
      "Shrink model to first 977 iterations.\n",
      "\n",
      "==================================================\n",
      "Params: depth=7, lr=0.038811, l2_reg=9.253155\n",
      "0:\tlearn: 1.9148549\ttest: 1.9150175\tbest: 1.9150175 (0)\ttotal: 377ms\tremaining: 6m 16s\n",
      "100:\tlearn: 1.4460366\ttest: 1.4645108\tbest: 1.4645108 (100)\ttotal: 45s\tremaining: 6m 40s\n",
      "200:\tlearn: 1.4142424\ttest: 1.4465693\tbest: 1.4465693 (200)\ttotal: 1m 33s\tremaining: 6m 13s\n",
      "300:\tlearn: 1.3949932\ttest: 1.4391148\tbest: 1.4391148 (300)\ttotal: 2m 24s\tremaining: 5m 35s\n",
      "400:\tlearn: 1.3761354\ttest: 1.4340508\tbest: 1.4340508 (400)\ttotal: 3m 14s\tremaining: 4m 50s\n",
      "500:\tlearn: 1.3610511\ttest: 1.4314610\tbest: 1.4314610 (500)\ttotal: 4m 5s\tremaining: 4m 4s\n",
      "600:\tlearn: 1.3478178\ttest: 1.4293607\tbest: 1.4293607 (600)\ttotal: 4m 57s\tremaining: 3m 17s\n",
      "700:\tlearn: 1.3360107\ttest: 1.4282650\tbest: 1.4282650 (700)\ttotal: 5m 49s\tremaining: 2m 29s\n",
      "800:\tlearn: 1.3246313\ttest: 1.4274432\tbest: 1.4274051 (785)\ttotal: 6m 40s\tremaining: 1m 39s\n",
      "900:\tlearn: 1.3136160\ttest: 1.4262659\tbest: 1.4262659 (900)\ttotal: 7m 32s\tremaining: 49.7s\n",
      "999:\tlearn: 1.3030829\ttest: 1.4258633\tbest: 1.4258569 (998)\ttotal: 8m 22s\tremaining: 0us\n",
      "\n",
      "bestTest = 1.42585692\n",
      "bestIteration = 998\n",
      "\n",
      "Shrink model to first 999 iterations.\n",
      "\n",
      "==================================================\n",
      "Params: depth=5, lr=0.021449, l2_reg=0.052802\n",
      "0:\tlearn: 1.9288562\ttest: 1.9288752\tbest: 1.9288752 (0)\ttotal: 181ms\tremaining: 3m\n",
      "100:\tlearn: 1.4886704\ttest: 1.4971490\tbest: 1.4971490 (100)\ttotal: 19.8s\tremaining: 2m 55s\n",
      "200:\tlearn: 1.4483436\ttest: 1.4620160\tbest: 1.4620160 (200)\ttotal: 37.8s\tremaining: 2m 30s\n",
      "300:\tlearn: 1.4323706\ttest: 1.4515853\tbest: 1.4515853 (300)\ttotal: 55s\tremaining: 2m 7s\n",
      "400:\tlearn: 1.4211920\ttest: 1.4455203\tbest: 1.4455203 (400)\ttotal: 1m 11s\tremaining: 1m 46s\n",
      "500:\tlearn: 1.4115134\ttest: 1.4412048\tbest: 1.4412048 (500)\ttotal: 1m 27s\tremaining: 1m 27s\n",
      "600:\tlearn: 1.4019362\ttest: 1.4375938\tbest: 1.4375938 (600)\ttotal: 1m 44s\tremaining: 1m 9s\n",
      "700:\tlearn: 1.3936254\ttest: 1.4354701\tbest: 1.4354701 (700)\ttotal: 2m 1s\tremaining: 51.8s\n",
      "800:\tlearn: 1.3858629\ttest: 1.4336565\tbest: 1.4336497 (799)\ttotal: 2m 18s\tremaining: 34.3s\n",
      "900:\tlearn: 1.3786670\ttest: 1.4321805\tbest: 1.4321805 (900)\ttotal: 2m 33s\tremaining: 16.9s\n",
      "999:\tlearn: 1.3719120\ttest: 1.4309851\tbest: 1.4309819 (998)\ttotal: 2m 49s\tremaining: 0us\n",
      "\n",
      "bestTest = 1.430981857\n",
      "bestIteration = 998\n",
      "\n",
      "Shrink model to first 999 iterations.\n"
     ]
    }
   ],
   "source": [
    "best_params = [\n",
    "    {\n",
    "        'depth': 5,\n",
    "        'learning_rate': 0.028696624117851774,\n",
    "        'l2_leaf_reg': 0.13805253355908462,\n",
    "    },\n",
    "    {\n",
    "        'depth': 6,\n",
    "        'learning_rate': 0.039553792355248,\n",
    "        'l2_leaf_reg': 3.147140381141612,\n",
    "    },\n",
    "    {\n",
    "        'depth': 7,\n",
    "        'learning_rate': 0.03722725810673189,\n",
    "        'l2_leaf_reg': 1.186916028751397,\n",
    "    },\n",
    "    {\n",
    "        'depth': 4,\n",
    "        'learning_rate': 0.031169517856212667,\n",
    "        'l2_leaf_reg': 1.1525543265620801,\n",
    "    },\n",
    "    {\n",
    "        'depth': 5,\n",
    "        'learning_rate': 0.05825031634504199,\n",
    "        'l2_leaf_reg': 0.3242744895010619,\n",
    "    },\n",
    "        {\n",
    "        'depth': 7,\n",
    "        'learning_rate': 0.03881112040229251,\n",
    "        'l2_leaf_reg': 9.253154590525618,\n",
    "    },\n",
    "        {\n",
    "        'depth': 5,\n",
    "        'learning_rate': 0.021448699623418263,\n",
    "        'l2_leaf_reg': 0.052801561460919556,\n",
    "    },\n",
    "    \n",
    "]\n",
    "\n",
    "# Общие параметры для всех моделей\n",
    "common_params = {\n",
    "    'iterations': 1000,\n",
    "    'random_state': 42,\n",
    "    'early_stopping_rounds': 50,\n",
    "    'class_weights': [0.7900, 0.9220, 0.9820, 0.6070, 0.3870, 0.2190, 0.1540],\n",
    "    'verbose': 100,\n",
    "}\n",
    "\n",
    "# Список для хранения обученных моделей\n",
    "trained_catboost_models = []\n",
    "\n",
    "# Обучение моделей\n",
    "for i, params in enumerate(best_params):\n",
    "    print(f\"\\n{'='*50}\")\n",
    "    print(f\"Params: depth={params['depth']}, lr={params['learning_rate']:.6f}, \"\n",
    "          f\"l2_reg={params['l2_leaf_reg']:.6f}\")\n",
    "    \n",
    "    # Собираем полные параметры модели\n",
    "    model_params = {**common_params, **params}\n",
    "    \n",
    "    # Создаем и обучаем модель\n",
    "    model = CatBoostClassifier(**model_params)\n",
    "    model.fit(train_pool_reduced,\n",
    "          eval_set=eval_pool_reduced,\n",
    "          use_best_model=True)\n",
    "    \n",
    "    trained_catboost_models.append(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "id": "5c90ad98-0abf-42fa-b46a-8c90d4a04d1b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "==================================================\n",
      "Params: depth=4, lr=0.009413, reg_alpha=3.791332119776044e-08 reg_lambda=0.3564452644947575\n",
      "Training until validation scores don't improve for 50 rounds\n",
      "Did not meet early stopping. Best iteration is:\n",
      "[1000]\tvalid_0's multi_logloss: 1.43217\n",
      "\n",
      "==================================================\n",
      "Params: depth=4, lr=0.009023, reg_alpha=4.4120630170284344e-08 reg_lambda=0.006138734333871618\n",
      "Training until validation scores don't improve for 50 rounds\n",
      "Did not meet early stopping. Best iteration is:\n",
      "[1000]\tvalid_0's multi_logloss: 1.4326\n"
     ]
    }
   ],
   "source": [
    "best_params_lgbm = [\n",
    "    {\n",
    "        'max_depth': 4,\n",
    "        'learning_rate': 0.00941310491350601,\n",
    "        'reg_alpha': 3.791332119776044e-08,\n",
    "        'reg_lambda': 0.3564452644947575,\n",
    "    }, \n",
    "    {\n",
    "        'max_depth': 4,\n",
    "        'learning_rate': 0.009023055846960164,\n",
    "        'reg_alpha': 4.4120630170284344e-08,\n",
    "        'reg_lambda': 0.006138734333871618,\n",
    "    }\n",
    "]\n",
    "\n",
    "# Общие параметры для всех моделей\n",
    "common_params_lgbm = {\n",
    "    'objective': 'multiclass',\n",
    "    'num_class': 7,\n",
    "    'n_estimators': 1000, \n",
    "    'random_state': 42,\n",
    "}\n",
    "\n",
    "# Список для хранения обученных моделей\n",
    "trained_lgbm_models = []\n",
    "\n",
    "# 1. Обучение моделей\n",
    "for i, params in enumerate(best_params_lgbm):\n",
    "    print(f\"\\n{'='*50}\")\n",
    "    print(f\"Params: depth={params['max_depth']}, lr={params['learning_rate']:.6f}, \"\n",
    "          f\"reg_alpha={params['reg_alpha']}\", f\"reg_lambda={params['reg_lambda']}\")\n",
    "    \n",
    "    # Собираем полные параметры модели\n",
    "    model_params_lgbm = {**common_params_lgbm, **params}\n",
    "    \n",
    "    model = lgb.train(\n",
    "        model_params_lgbm,\n",
    "        train_data_reduced,\n",
    "        valid_sets=[val_data_reduced],\n",
    "        callbacks=[\n",
    "            lgb.early_stopping(stopping_rounds=50, verbose=True),\n",
    "        ]\n",
    "    )\n",
    "    \n",
    "    trained_lgbm_models.append(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "id": "f4efdc63-5f93-42b5-be3a-bd2e58d38cb7",
   "metadata": {},
   "outputs": [],
   "source": [
    "ensemble_models = trained_catboost_models + trained_lgbm_models"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9391e4c3-d713-4794-9849-c2f7da7d69ee",
   "metadata": {},
   "source": [
    "## Выбор метода ансамблирования"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f910d4b8-0244-46a7-ad67-9b627e129d25",
   "metadata": {},
   "source": [
    "С помощью валидации посмотрим, какой метод ансамблирования окажется наилучшим:\n",
    "- **Soft Voting**: Усреднение вероятностей классов\n",
    "- **Hard Voting**: Голосование большинством за класс\n",
    "- **Weighted Average**: Взвешенное усреднение"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "id": "fe43cc8c-f6de-4dc3-85b8-2ec61f09e9ab",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Функция для предсказания ансамблем\n",
    "def ensemble_predict(models, data, method='soft_voting', model_weights=None):\n",
    "    \"\"\"\n",
    "    Предсказание ансамблем моделей\n",
    "    \n",
    "    :param models: список обученных моделей\n",
    "    :param data: данные для предсказания (Pool или np.array)\n",
    "    :param method: метод агрегации ('soft_voting', 'hard_voting', 'weighted_average')\n",
    "    :return: предсказанные классы\n",
    "    \"\"\"\n",
    "    # Собираем все предсказания\n",
    "    all_preds = []\n",
    "    for model in models:\n",
    "        if method == 'soft_voting':\n",
    "            if type(model) == catboost.core.CatBoostClassifier:\n",
    "                preds = model.predict_proba(data)\n",
    "                all_preds.append(preds)\n",
    "            else:\n",
    "                preds = model.predict(data.drop(cols_to_drop_lgbm, axis=1))\n",
    "                all_preds.append(preds)\n",
    "        else:\n",
    "            if type(model) == catboost.core.CatBoostClassifier:\n",
    "                preds = model.predict(data).ravel()\n",
    "                all_preds.append(preds)\n",
    "            else:\n",
    "                preds = np.argmax(model.predict(data.drop(cols_to_drop_lgbm, axis=1)), axis=1)\n",
    "                all_preds.append(preds)\n",
    "    \n",
    "    # Агрегируем предсказания\n",
    "    if method == 'soft_voting':\n",
    "        avg_proba = np.mean(np.array(all_preds), axis=0)\n",
    "        return np.argmax(avg_proba, axis=1)\n",
    "    \n",
    "    elif method == 'hard_voting':\n",
    "        return np.apply_along_axis(\n",
    "            lambda x: np.argmax(np.bincount(x)),\n",
    "            axis=0,\n",
    "            arr=np.array(all_preds)\n",
    "        )\n",
    "    \n",
    "    elif method == 'weighted_average':\n",
    "        # Добавляем веса моделей по их качеству\n",
    "        if model_weights is None:\n",
    "            model_weights = np.ones(len(models)) / len(models)\n",
    "            \n",
    "        model_weights = np.array(model_weights)\n",
    "        \n",
    "        # Нормализуем веса\n",
    "        model_weights /= model_weights.sum()\n",
    "        \n",
    "        avg_proba = np.sum(np.array(all_preds) * model_weights[:, np.newaxis], axis=0)\n",
    "        return avg_proba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "id": "e344d484-ab3b-4fb0-af7d-e941ea1efb7c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Evaluating ensemble performance:\n",
      "SOFT_VOTING WMAE: 0.501746\n",
      "HARD_VOTING WMAE: 0.500696\n",
      "WEIGHTED_AVERAGE WMAE: 0.499507\n"
     ]
    }
   ],
   "source": [
    "# Оценка ансамбля на валидационных данных\n",
    "print(\"\\nEvaluating ensemble performance:\")\n",
    "\n",
    "# Сравним разные методы ансамблирования\n",
    "methods = ['soft_voting', 'hard_voting', 'weighted_average']\n",
    "for method in methods:\n",
    "    y_pred = ensemble_predict(ensemble_models, X_val, method=method)\n",
    "    wmae = weighted_mae(y_val, y_pred)\n",
    "    print(f\"{method.upper()} WMAE: {wmae:.6f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0cbefe1e-f56a-4ad1-9295-d53b807b38c0",
   "metadata": {},
   "source": [
    "Видно, что взвешенное усреднение показывает наилучший результат. Теперь подберем вес для каждой модели."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "id": "09d02228-e677-4c47-81eb-149e97354245",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimized weights: [0.20298117 0.09538618 0.12038013 0.1328571  0.12553204 0.17568022\n",
      " 0.00537764 0.11473207 0.02707346]\n",
      "WEIGHTED_AVERAGE WMAE: 0.499275\n"
     ]
    }
   ],
   "source": [
    "# Функция для оптимизации\n",
    "def objective(weights):\n",
    "    y_pred = ensemble_predict(\n",
    "        ensemble_models,\n",
    "        X_val,\n",
    "        method='weighted_average',\n",
    "        model_weights=weights\n",
    "    )\n",
    "    return weighted_mae(y_val, y_pred)\n",
    "\n",
    "# Начальные веса (равные)\n",
    "initial_weights = np.ones(len(ensemble_models)) / len(ensemble_models)\n",
    "\n",
    "# Ограничения: веса >=0 и сумма=1\n",
    "constraints = ({'type': 'eq', 'fun': lambda w: np.sum(w) - 1})\n",
    "bounds = [(0, 1)] * len(ensemble_models)\n",
    "\n",
    "# Оптимизация\n",
    "result = minimize(\n",
    "    objective,\n",
    "    initial_weights,\n",
    "    method='SLSQP',\n",
    "    bounds=bounds,\n",
    "    constraints=constraints\n",
    ")\n",
    "\n",
    "optimized_weights = result.x\n",
    "print(\"Optimized weights:\", optimized_weights)\n",
    "print(f\"{method.upper()} WMAE: {result.fun:.6f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "46a18ab8-3147-4ae8-8ea0-2c65b02963f2",
   "metadata": {},
   "source": [
    "Видно, что каждая модель вносит ненулевой вклад.\n",
    "\n",
    "С помощью ансамбля моделей получим значение таргетов для тестовой выборки."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "id": "369040a1-c55b-4d30-a189-1723d4c81774",
   "metadata": {},
   "outputs": [],
   "source": [
    "ans = ensemble_predict(ensemble_models, \n",
    "                       test.drop(['client_num','most_common_merchant'], axis=1), \n",
    "                       method='weighted_average', model_weights=optimized_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "id": "6d3fae0f-8536-4ef3-b1a0-fdf608545749",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>client_num</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10</td>\n",
       "      <td>3.129831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11</td>\n",
       "      <td>0.578408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>14</td>\n",
       "      <td>4.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39138</th>\n",
       "      <td>109127</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39139</th>\n",
       "      <td>109128</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39140</th>\n",
       "      <td>109130</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39141</th>\n",
       "      <td>109137</td>\n",
       "      <td>0.141806</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39142</th>\n",
       "      <td>109140</td>\n",
       "      <td>0.852817</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>39143 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       client_num    target\n",
       "0               0  2.000000\n",
       "1              10  3.129831\n",
       "2              11  0.578408\n",
       "3              14  4.000000\n",
       "4              16  1.000000\n",
       "...           ...       ...\n",
       "39138      109127  0.000000\n",
       "39139      109128  0.000000\n",
       "39140      109130  0.000000\n",
       "39141      109137  0.141806\n",
       "39142      109140  0.852817\n",
       "\n",
       "[39143 rows x 2 columns]"
      ]
     },
     "execution_count": 289,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "submission = pd.DataFrame({\n",
    "    \"client_num\": test_clients,\n",
    "    \"target\": ans.ravel()\n",
    "})\n",
    "submission"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "id": "398825b0-7a78-41f0-b6b7-2cefe77f84cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission.to_csv(\"submission.csv\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7df8fa9-b50c-439b-ba81-e7821e4712da",
   "metadata": {},
   "source": [
    "Данное решение показало следующий privat score: 0.49576"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06b643e9-4e37-4fce-8dc5-3ad02cd0993c",
   "metadata": {},
   "source": [
    "Так как в соревновании можно выбрать два решения, второе решение будет получено с помощью обучения на всех доступных данных без разделения на train и val. Данная методика не позволяет валидироваться на данных, но позволит немного улучшить метрику на тесте, так как обучение происходит на большем количестве данных."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96384421-510d-4ece-af3f-59cd5d5bf1cf",
   "metadata": {},
   "source": [
    "## Обучение ансамбля моделей на всех данных без валидации"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac326c5a-75f1-476d-a796-a08e2b9775c7",
   "metadata": {},
   "source": [
    "В качестве ансамбля будут выбраны все те же модели, что были выше. Единственное, что изменится, это обучающая выборка."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "id": "f885b95f-03f2-447d-849d-feaf8a781a64",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_reduced = X.drop(cols_to_drop, axis=1)\n",
    "\n",
    "pool_reduced = catboost.Pool(\n",
    "    X_reduced,\n",
    "    label=y,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "id": "9030c64b-df3c-4c6c-abb7-de76a70487d2",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "==================================================\n",
      "Params: depth=5, lr=0.028697, l2_reg=0.138053 iterations=1000\n",
      "0:\tlearn: 1.9221971\ttotal: 283ms\tremaining: 4m 42s\n",
      "100:\tlearn: 1.4698063\ttotal: 23.5s\tremaining: 3m 29s\n",
      "200:\tlearn: 1.4390189\ttotal: 44.3s\tremaining: 2m 56s\n",
      "300:\tlearn: 1.4246777\ttotal: 1m 4s\tremaining: 2m 30s\n",
      "400:\tlearn: 1.4135829\ttotal: 1m 25s\tremaining: 2m 7s\n",
      "500:\tlearn: 1.4031751\ttotal: 1m 45s\tremaining: 1m 45s\n",
      "600:\tlearn: 1.3943248\ttotal: 2m 5s\tremaining: 1m 23s\n",
      "700:\tlearn: 1.3863887\ttotal: 2m 25s\tremaining: 1m 2s\n",
      "800:\tlearn: 1.3790331\ttotal: 2m 45s\tremaining: 41s\n",
      "900:\tlearn: 1.3719034\ttotal: 3m 4s\tremaining: 20.3s\n",
      "999:\tlearn: 1.3652882\ttotal: 3m 23s\tremaining: 0us\n",
      "\n",
      "==================================================\n",
      "Params: depth=6, lr=0.039554, l2_reg=3.147140 iterations=990\n",
      "0:\tlearn: 1.9130915\ttotal: 400ms\tremaining: 6m 35s\n",
      "100:\tlearn: 1.4479241\ttotal: 25.4s\tremaining: 3m 43s\n",
      "200:\tlearn: 1.4207376\ttotal: 48.3s\tremaining: 3m 9s\n",
      "300:\tlearn: 1.4043323\ttotal: 1m 10s\tremaining: 2m 42s\n",
      "400:\tlearn: 1.3899285\ttotal: 1m 34s\tremaining: 2m 18s\n",
      "500:\tlearn: 1.3780032\ttotal: 1m 56s\tremaining: 1m 53s\n",
      "600:\tlearn: 1.3671809\ttotal: 2m 19s\tremaining: 1m 30s\n",
      "700:\tlearn: 1.3575406\ttotal: 2m 42s\tremaining: 1m 7s\n",
      "800:\tlearn: 1.3484078\ttotal: 3m 5s\tremaining: 43.9s\n",
      "900:\tlearn: 1.3396534\ttotal: 3m 29s\tremaining: 20.6s\n",
      "989:\tlearn: 1.3327231\ttotal: 3m 49s\tremaining: 0us\n",
      "\n",
      "==================================================\n",
      "Params: depth=7, lr=0.037227, l2_reg=1.186916 iterations=921\n",
      "0:\tlearn: 1.9147096\ttotal: 521ms\tremaining: 7m 59s\n",
      "100:\tlearn: 1.4385203\ttotal: 54.7s\tremaining: 7m 24s\n",
      "200:\tlearn: 1.4045202\ttotal: 1m 54s\tremaining: 6m 50s\n",
      "300:\tlearn: 1.3824258\ttotal: 2m 57s\tremaining: 6m 5s\n",
      "400:\tlearn: 1.3614190\ttotal: 3m 59s\tremaining: 5m 10s\n",
      "500:\tlearn: 1.3430919\ttotal: 5m 3s\tremaining: 4m 14s\n",
      "600:\tlearn: 1.3268082\ttotal: 6m 7s\tremaining: 3m 15s\n",
      "700:\tlearn: 1.3113454\ttotal: 7m 11s\tremaining: 2m 15s\n",
      "800:\tlearn: 1.2971274\ttotal: 8m 14s\tremaining: 1m 14s\n",
      "900:\tlearn: 1.2836186\ttotal: 9m 17s\tremaining: 12.4s\n",
      "920:\tlearn: 1.2808445\ttotal: 9m 30s\tremaining: 0us\n",
      "\n",
      "==================================================\n",
      "Params: depth=4, lr=0.031170, l2_reg=1.152554 iterations=1000\n",
      "0:\tlearn: 1.9209305\ttotal: 299ms\tremaining: 4m 59s\n",
      "100:\tlearn: 1.4744034\ttotal: 21.1s\tremaining: 3m 7s\n",
      "200:\tlearn: 1.4467646\ttotal: 40s\tremaining: 2m 39s\n",
      "300:\tlearn: 1.4345198\ttotal: 58.6s\tremaining: 2m 16s\n",
      "400:\tlearn: 1.4251959\ttotal: 1m 17s\tremaining: 1m 55s\n",
      "500:\tlearn: 1.4176481\ttotal: 1m 34s\tremaining: 1m 34s\n",
      "600:\tlearn: 1.4115117\ttotal: 1m 51s\tremaining: 1m 14s\n",
      "700:\tlearn: 1.4063202\ttotal: 2m 9s\tremaining: 55.1s\n",
      "800:\tlearn: 1.4013254\ttotal: 2m 25s\tremaining: 36.3s\n",
      "900:\tlearn: 1.3967268\ttotal: 2m 42s\tremaining: 17.9s\n",
      "999:\tlearn: 1.3924746\ttotal: 2m 59s\tremaining: 0us\n",
      "\n",
      "==================================================\n",
      "Params: depth=5, lr=0.058250, l2_reg=0.324274 iterations=977\n",
      "0:\tlearn: 1.8985340\ttotal: 347ms\tremaining: 5m 38s\n",
      "100:\tlearn: 1.4395333\ttotal: 22.2s\tremaining: 3m 12s\n",
      "200:\tlearn: 1.4152382\ttotal: 41.9s\tremaining: 2m 41s\n",
      "300:\tlearn: 1.3963738\ttotal: 1m 1s\tremaining: 2m 18s\n",
      "400:\tlearn: 1.3812134\ttotal: 1m 21s\tremaining: 1m 56s\n",
      "500:\tlearn: 1.3676786\ttotal: 1m 40s\tremaining: 1m 35s\n",
      "600:\tlearn: 1.3556033\ttotal: 2m\tremaining: 1m 15s\n",
      "700:\tlearn: 1.3442392\ttotal: 2m 19s\tremaining: 54.9s\n",
      "800:\tlearn: 1.3339957\ttotal: 2m 38s\tremaining: 34.8s\n",
      "900:\tlearn: 1.3234769\ttotal: 2m 57s\tremaining: 15s\n",
      "976:\tlearn: 1.3162507\ttotal: 3m 12s\tremaining: 0us\n",
      "\n",
      "==================================================\n",
      "Params: depth=7, lr=0.038811, l2_reg=9.253155 iterations=999\n",
      "0:\tlearn: 1.9146247\ttotal: 439ms\tremaining: 7m 18s\n",
      "100:\tlearn: 1.4453158\ttotal: 54.6s\tremaining: 8m 5s\n",
      "200:\tlearn: 1.4162442\ttotal: 1m 53s\tremaining: 7m 32s\n",
      "300:\tlearn: 1.3979455\ttotal: 2m 54s\tremaining: 6m 45s\n",
      "400:\tlearn: 1.3810736\ttotal: 3m 57s\tremaining: 5m 54s\n",
      "500:\tlearn: 1.3683709\ttotal: 5m\tremaining: 4m 59s\n",
      "600:\tlearn: 1.3568271\ttotal: 6m 3s\tremaining: 4m\n",
      "700:\tlearn: 1.3461464\ttotal: 7m 7s\tremaining: 3m 1s\n",
      "800:\tlearn: 1.3360729\ttotal: 8m 10s\tremaining: 2m 1s\n",
      "900:\tlearn: 1.3268974\ttotal: 9m 18s\tremaining: 1m\n",
      "998:\tlearn: 1.3180181\ttotal: 10m 25s\tremaining: 0us\n",
      "\n",
      "==================================================\n",
      "Params: depth=5, lr=0.021449, l2_reg=0.052802 iterations=999\n",
      "0:\tlearn: 1.9281164\ttotal: 272ms\tremaining: 4m 31s\n",
      "100:\tlearn: 1.4893771\ttotal: 26.6s\tremaining: 3m 56s\n",
      "200:\tlearn: 1.4501467\ttotal: 48.8s\tremaining: 3m 13s\n",
      "300:\tlearn: 1.4346068\ttotal: 1m 9s\tremaining: 2m 41s\n",
      "400:\tlearn: 1.4244779\ttotal: 1m 30s\tremaining: 2m 15s\n",
      "500:\tlearn: 1.4161680\ttotal: 1m 51s\tremaining: 1m 50s\n",
      "600:\tlearn: 1.4075440\ttotal: 2m 13s\tremaining: 1m 28s\n",
      "700:\tlearn: 1.4000458\ttotal: 2m 34s\tremaining: 1m 5s\n",
      "800:\tlearn: 1.3933513\ttotal: 2m 54s\tremaining: 43.1s\n",
      "900:\tlearn: 1.3869811\ttotal: 3m 15s\tremaining: 21.3s\n",
      "998:\tlearn: 1.3812715\ttotal: 3m 37s\tremaining: 0us\n"
     ]
    }
   ],
   "source": [
    "best_params_full = [\n",
    "    {\n",
    "        'depth': 5,\n",
    "        'learning_rate': 0.028696624117851774,\n",
    "        'l2_leaf_reg': 0.13805253355908462,\n",
    "        'iterations': 1000,\n",
    "    },\n",
    "    {\n",
    "        'depth': 6,\n",
    "        'learning_rate': 0.039553792355248,\n",
    "        'l2_leaf_reg': 3.147140381141612,\n",
    "        'iterations': 990,\n",
    "    },\n",
    "    {\n",
    "        'depth': 7,\n",
    "        'learning_rate': 0.03722725810673189,\n",
    "        'l2_leaf_reg': 1.186916028751397,\n",
    "        'iterations': 921,\n",
    "    },\n",
    "    {\n",
    "        'depth': 4,\n",
    "        'learning_rate': 0.031169517856212667,\n",
    "        'l2_leaf_reg': 1.1525543265620801,\n",
    "        'iterations': 1000,\n",
    "    },\n",
    "        {\n",
    "        'depth': 5,\n",
    "        'learning_rate': 0.05825031634504199,\n",
    "        'l2_leaf_reg': 0.3242744895010619,\n",
    "        'iterations': 977,\n",
    "    },\n",
    "        {\n",
    "        'depth': 7,\n",
    "        'learning_rate': 0.03881112040229251,\n",
    "        'l2_leaf_reg': 9.253154590525618,\n",
    "        'iterations': 999,\n",
    "    },\n",
    "        {\n",
    "        'depth': 5,\n",
    "        'learning_rate': 0.021448699623418263,\n",
    "        'l2_leaf_reg': 0.052801561460919556,\n",
    "        'iterations': 999,\n",
    "    },\n",
    "    \n",
    "]\n",
    "\n",
    "# Общие параметры для всех моделей\n",
    "common_params = {\n",
    "    'random_state': 42,\n",
    "    'class_weights': [0.7900, 0.9220, 0.9820, 0.6070, 0.3870, 0.2190, 0.1540],\n",
    "    'verbose': 100,\n",
    "}\n",
    "\n",
    "# Список для хранения обученных моделей\n",
    "trained_catboost_models_full = []\n",
    "\n",
    "# Обучение моделей\n",
    "for i, params in enumerate(best_params_full):\n",
    "    print(f\"\\n{'='*50}\")\n",
    "    print(f\"Params: depth={params['depth']}, lr={params['learning_rate']:.6f}, \"\n",
    "          f\"l2_reg={params['l2_leaf_reg']:.6f}\", f\"iterations={params['iterations']}\")\n",
    "    \n",
    "    # Собираем полные параметры модели\n",
    "    model_params = {**common_params, **params}\n",
    "    \n",
    "    # Создаем и обучаем модель\n",
    "    model = CatBoostClassifier(**model_params)\n",
    "    model.fit(pool_reduced)\n",
    "    \n",
    "    trained_catboost_models_full.append(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 314,
   "id": "24b164de-4a21-4a8d-bb52-36f2b3d8e3fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "X['most_common_mcc'] = X.loc[:, 'most_common_mcc'].astype('int')\n",
    "X_reduced_lgbm = X.drop(cols_to_drop_lgbm, axis=1)\n",
    "\n",
    "full_weights = np.array([base_weights[0][y_i] for y_i in y])\n",
    "\n",
    "data_reduced = lgb.Dataset(X_reduced_lgbm, label=y, weight=full_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 316,
   "id": "2e0c9109-c0e9-47da-9244-712ca41d1661",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "==================================================\n",
      "Params: depth=4, lr=0.009413, reg_alpha=3.791332119776044e-08 reg_lambda=0.3564452644947575\n",
      "\n",
      "==================================================\n",
      "Params: depth=4, lr=0.009023, reg_alpha=4.4120630170284344e-08 reg_lambda=0.006138734333871618\n"
     ]
    }
   ],
   "source": [
    "best_params_lgbm = [\n",
    "    {\n",
    "        'max_depth': 4,\n",
    "        'learning_rate': 0.00941310491350601,\n",
    "        'reg_alpha': 3.791332119776044e-08,\n",
    "        'reg_lambda': 0.3564452644947575,\n",
    "    }, \n",
    "    {\n",
    "        'max_depth': 4,\n",
    "        'learning_rate': 0.009023055846960164,\n",
    "        'reg_alpha': 4.4120630170284344e-08,\n",
    "        'reg_lambda': 0.006138734333871618,\n",
    "    }\n",
    "]\n",
    "\n",
    "# Общие параметры для всех моделей\n",
    "common_params_lgbm = {\n",
    "    'objective': 'multiclass',\n",
    "    'num_class': 7,\n",
    "    'n_estimators': 1000, \n",
    "    'random_state': 42,\n",
    "}\n",
    "\n",
    "# Список для хранения обученных моделей\n",
    "trained_lgbm_models_full = []\n",
    "\n",
    "# 1. Обучение моделей\n",
    "for i, params in enumerate(best_params_lgbm):\n",
    "    print(f\"\\n{'='*50}\")\n",
    "    print(f\"Params: depth={params['max_depth']}, lr={params['learning_rate']:.6f}, \"\n",
    "          f\"reg_alpha={params['reg_alpha']}\", f\"reg_lambda={params['reg_lambda']}\")\n",
    "    \n",
    "    # Собираем полные параметры модели\n",
    "    model_params_lgbm = {**common_params_lgbm, **params}\n",
    "    \n",
    "    model = lgb.train(\n",
    "        model_params_lgbm,\n",
    "        data_reduced,\n",
    "    )\n",
    "    \n",
    "    trained_lgbm_models_full.append(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 318,
   "id": "7b0c3e40-8cf0-46e6-9ae6-af2fbde61194",
   "metadata": {},
   "outputs": [],
   "source": [
    "ensemble_models_full = trained_catboost_models_full + trained_lgbm_models_full"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 319,
   "id": "295a76e4-a708-4043-8388-699a5de4dea2",
   "metadata": {},
   "outputs": [],
   "source": [
    "ans = ensemble_predict(ensemble_models_full, \n",
    "                       test.drop(['client_num','most_common_merchant'], axis=1), \n",
    "                       method='weighted_average', model_weights=optimized_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 320,
   "id": "746645be-32f1-4404-9947-21bf14b9653f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>client_num</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10</td>\n",
       "      <td>3.472527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11</td>\n",
       "      <td>0.578408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>14</td>\n",
       "      <td>4.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39138</th>\n",
       "      <td>109127</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39139</th>\n",
       "      <td>109128</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39140</th>\n",
       "      <td>109130</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39141</th>\n",
       "      <td>109137</td>\n",
       "      <td>0.267338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39142</th>\n",
       "      <td>109140</td>\n",
       "      <td>0.516979</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>39143 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       client_num    target\n",
       "0               0  2.000000\n",
       "1              10  3.472527\n",
       "2              11  0.578408\n",
       "3              14  4.000000\n",
       "4              16  1.000000\n",
       "...           ...       ...\n",
       "39138      109127  0.000000\n",
       "39139      109128  0.000000\n",
       "39140      109130  0.000000\n",
       "39141      109137  0.267338\n",
       "39142      109140  0.516979\n",
       "\n",
       "[39143 rows x 2 columns]"
      ]
     },
     "execution_count": 320,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "submission = pd.DataFrame({\n",
    "    \"client_num\": test_clients,\n",
    "    \"target\": ans.ravel()\n",
    "})\n",
    "submission"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 321,
   "id": "247385c4-007c-4586-b50b-f2c4e2776d35",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission.to_csv(\"submission.csv\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c2cbb73-dbd5-4b64-adfd-f2bbfede516f",
   "metadata": {},
   "source": [
    "Второе решение показало следующий privat score: 0.49508 (немного лучше, чем у первого решения)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
