После merge с таблицей сделок строк стало в четыре раза больше
Вы добавляете к клиентской витрине информацию о сделках.
print(clients.shape) # (1000, 6) — одна строка на клиента, есть колонка target
print(deals.shape) # (4200, 4) — несколько сделок на клиента
df = clients.merge(deals, on="client_id", how="left")
print(df.shape) # (4200, 9)
Дальше вы делаете случайный train/test split по строкам df и обучаете бустинг. Что происходит с обучением?
- Ничего страшного: how='left' сохраняет исходную гранулярность, лишние строки бустинг игнорирует
- Активные клиенты получают больший вес, а один и тот же клиент попадает и в train, и в test
- Таргет размножился, поэтому классы стали сбалансированнее и метрика будет честнее
- Проблема только в объёме памяти, на качество модели размножение строк не влияет
