TGViewer
YeaHub Tech YeaHub Tech @yeahub_tech · 412 subscribers
Post #273 94
#MachineLearning

🔖 Как Random Forest вычисляет продавцов-мошенников на маркетплейсах

Автор столкнулась с обманом на маркетплейсе и решила разобраться: можно ли с помощью ML выявлять мошенников до того, как они обманут покупателей?


🔸 Данные

Набор данных с Kaggle содержит информацию о продавцах C2C-платформы: подписчики, активность, количество товаров, давность входа. Целевая переменная Fraud (1 = мошенник) добавлена на основе несоответствия отправленного товара описанию.

Проблема: датасет несбалансирован — среднее значение Fraud меньше 0.5, что означает перекос в сторону честных продавцов.


🔸 Построение модели

Используется Random Forest с GridSearchCV для подбора гиперпараметров. Ключевой момент — параметр class_weight: ['balanced', 'balanced_subsample'] для борьбы с дисбалансом классов.

Метрика оптимизации — ROC AUC score.

Первый запуск:
paramdict = {
'criterion': ['gini','entropy'],
'min_samples_leaf': range(1,5),
'class_weight': ['balanced','balanced_subsample'],
...
}


Результат показал, что min_samples_leaf=4 (верхняя граница диапазона) — нужно расширить поиск.

Второй запуск:
'min_samples_leaf': range(4,10)


Лучшие параметры оказались внутри диапазона — модель найдена.

Результат: Recall для класса 1.0 (мошенники) = 69.77%

Недостаточно для production!


🔸 Оптимизация порога

Автор предлагает сместить акцент с точности на полноту (Recall). Логика:

Два типа ошибок:
- False Negative: пропустили мошенника (опасно!)
- False Positive: заблокировали честного продавца (менее критично)

Лучше заблокировать несколько честных продавцов, чем пропустить мошенника — на маркетплейсе всегда много альтернатив.

ROC-кривая в 3D

Построена интерактивная 3D ROC-кривая с осями:
- X: False Positive Rate
- Y: True Positive Rate
- Z: Probability Threshold

Автор отмечает три точки компромисса:

Красная черта: FPR ≈ 36%, порог = 0.35
Оранжевая: FPR ≈ 50%, порог = 0.25
Зелёная: FPR ≈ 60%, порог = 0.20

Выбор зависит от толерантности к ложным срабатываниям. Автор выбрала зелёную (порог 0.20) как оптимальную.


🔸 Финальные результаты

После сдвига порога до 0.20:

Recall для класса 1.0 = 90.11%

Прирост с 69.77% до 90.11% — модель теперь обнаруживает 9 из 10 мошенников!


🔸 Ключевые выводы

1. Дисбаланс классов решается через class_weight='balanced'
2. GridSearchCV помогает найти оптимальные гиперпараметры
3. Сдвиг порога критически важен для несбалансированных задач
4. ROC-кривая в 3D — удобный инструмент для выбора порога
5. Бизнес-логика важнее технических метрик: лучше больше FP, чем FN

Практическое применение:

Маркетплейс может использовать эту модель для:
- Автоматической проверки новых продавцов
- Дополнительной верификации подозрительных аккаунтов
- Приоритизации ручных проверок

Конечно, 10% мошенников всё равно проскочат, но это огромный прогресс для защиты покупателей.


📎 Статья

🎙 Новости

📝 База вопросов
  • 👍 1
More from @yeahub_tech
  1. Oct 9, 2026#Собес #pipeline #ci #stage 🤔 Что происходит при автоматической сборке feature-ветки на s…
  2. Oct 8, 2026#course #задачи #тесты 📚 JavaScript. A3 Задачи Задачи на программирования на языке JavaSc…
  3. Oct 7, 2026#course #начинающие 📚 Твой Golang Твой Golang — это идеальный старт для освоения языка. П…
  4. Oct 5, 2026🧑‍💻 Вопросы с собесов для Node.js Разработчика 1. Как использовать Service Workers для р…
  5. Oct 2, 2026#Собес #transaction #propagation #required 🤔 Что такое propagation у транзакций и какие т…
  6. Oct 1, 2026#book #book 📚 Библия C#. 6-е изд. Автор: Михаил Фленов Это настольная книга программиста,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →