Вот результат работы colSums(is.na(dati_train)) , показывающий количество пропущенных значений в каждом столбце:
Код: Выделить всё
> colSums(is.na(dati_train)) # Number of NAs per column
PAID POINT_OF_SALE EVENT_ID YEAR
0 0 0 0
MONTH N_SUBSCRIPTIONS PRICE PHONE_NUMBER
0 0 0 0
PROP_CONBINI PAYMENT_TYPE FAV_GENRE AGE
0 0 967 1723
DAYS_FROM_PROMO BOOKS_PAID N_TRANSACTIONS N_ITEMS
0 5574 5574 0
DATE_LAST_PURCHASE CUSTOMER_SINCE MAIL SUBSCR_CANC
5574 5574 0 0
MARGIN
5574
>
- Для «FAV_GENRE» и «AGE» : Поскольку количество пропущенных значений относительно невелико, я рассматриваю возможность использования множественного вменения для их заполнения.
- < strong>Для остальных переменных: недостающие значения систематически распределяются между ними, поэтому я подумал из:
- Создание новой переменной двоичного флага, чтобы указать, отсутствует значение или нет.
- Обучение логистической регрессии и модели LDA, включая эти флаги в качестве функций. Я читал, что это обычная практика, но никогда раньше этого не делал.
- Использование древовидных моделей, таких как Random Forest и XGBoost. Я знаю, что эти модели могут обрабатывать пропущенные значения, но я никогда не работал с отсутствующими данными в этих алгоритмах. Существуют ли какие-либо передовые методы, которым мне следует следовать?
Дайте мне знать, что вы думаете — заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... ion-lda-an