Я использую XGBClassifier, чтобы предсказать, будет ли пользователь нажимать на объявление или нет.
Я ищу совет, чтобы увеличить мой отзыв для класса меньшинства.
О моих данных:
1. Total rows: 1,266,267
2. Total clicks: 1960 rows (0.15%) => imbalanced dataset
3. Features used:
- Num of views
- Device used
- Time (categorized into 6 buckets)
- Ad category
- Site id (there are 338 unique site id)
- User features (there are 583 unique features)(Note: features available for 60% of the data)
После одной горячей операции общее количество столбцов / элементов составляет 943.
Конечные данные в формате разреженной матрицы.
Результат модели:
Model | AUC | Logloss | Recall* | Precision*
------------------------|--------|---------|---------|-----------
Using all 943 features | 0.7359 | 0.05392 | 0.47 | 0.85
----------------------------------------------------------------
Clustered user features | 0.7548 | 0.05470 | 0.51 | 0.80
into groups |
Final model features |
num=361 |
----------------------------------------------------------------
*recall and precision refers to the minority class (click=1).
**recall, precision for majority class (click=0) is 1.
Чтобы увеличить отзыв в несбалансированном наборе данных, я попытался:
- Сэмплинг (наивысший отзыв 0,92, но точность на 0,03)
- SMOTE (максимальный отзыв 0,77, но точность 0,05)
- Другой алгоритм (лучше всего XGBoost)
- Настройка гиперпараметра (отзыв увеличен на 0,01)
Вопрос:
1. Is my model too complex that it can't generalise well?
2. I have compared my AUC with results from other research papers.
Research AUC ranges from 0.7 to 0.82.
But, none of them showed the recall/confusion matrix.
To anyone that has done CTR prediction before, can I know your recall/confusion matrix?
3. Is there other ways that can help increase recall for imbalanced dataset?