Upload
mailru-group
View
4.642
Download
3
Embed Size (px)
Citation preview
Выбираем метрику оценки качества модели
Или как подружить менеджера с data-scientist’ом
Роман Чеботарев
Архитектор решений Advanced Analytics, КРОК
DataFest2, Москва
Проблема
• Data scientist часто получает формулировку задачи с метрикой ее качества…• … которая в реальности берется исходя из common sense• … которой нет («А спрогнозируй-ка мне <..> !»)
• Результат работы алгоритма / модели – вероятностный, выбирая разные пороги, получаем разные результаты
• Очень часто именно от пороговых значений зависит итоговое качество работы решения
Пример• Нужно больше минералов ©
• Щуп – 100% точность (но долго и сложно → дорого)
• Сонар – непрерывный сигнал или много параметров
• Есть база откликов сонара на минералы / не_минералы
Пример
• Можем анализировать отклик сонара и построить модель классификации «минерал vs. не_минерал»
• Большинство моделей дают вероятность (confidence)
• Нужно выбрать порог классификации
Пример
FN TN TN FN FP TN TN TP TN
Порог 50%
• Можем анализировать отклик сонара и построить модель классификации «минерал vs. не_минерал»
• Большинство моделей дают вероятность (confidence)
• Нужно выбрать порог классификации
Выбор порога классификации
• Confusion matrices• ROC диаграммы• Precision-recall диаграммы• Lift диаграммы• И т.п.
Этих аналитик достаточно, если есть четкое понимание, какие ограничения нужно соблюсти (например, FPR < 0.03)
А что делать, если нет?
Итак, наша лучшая модель (ROC)
Итак, наша лучшая модель (ROC)
Какой порог выбрать?
Итак, наша лучшая модель (Lift-диаграмма)
It’s all about money
True False
pred. True +1000 ₽ -300 ₽
pred. False 0 0
Построим COST MATRIX:
• Нашли минерал (TP) – заработали 1000 ₽ (достали минерал и продали)
• Промахнулись (FP) – потеряли 300 ₽ (щуп портится, з\п геологам)
• Остальное – бесплатно
Оптимальный порог = argmax(cumulative lift in money)
0 ₽
50 000 ₽
100 000 ₽
150 000 ₽
200 000 ₽
>0,67 >0,63 >0,6 >0,56 >0,53 >0,49 >0,46 >0,42 >0,39 <=0,39
А если cost(FP) = -1000 ₽ ?
0 ₽
50 000 ₽
100 000 ₽
150 000 ₽
200 000 ₽
>0,67 >0,63 >0,6 >0,56 >0,53 >0,49 >0,46 >0,42 >0,39 <=0,39
True False
pred. True +1000 -300
pred. False 0 0
А теперь проезд платный – 50 ₽
True False
pred. True +950 -350
pred. False -50 -50
• Каждая операция для нас сколько-то стоит
• Так часто бывает на практике (обработка кредитной заявки, покупка данных у поставщиков)
• Это приводит к тому, что нужно оценивать ожидаемую долю каждого класса в задаче
• Желательно делать это до старта разработки :)
К чему это приводит
-50 000 ₽
0 ₽
50 000 ₽
100 000 ₽
150 000 ₽
200 000 ₽
>0,67 >0,63 >0,6 >0,56 >0,53 >0,49 >0,46 >0,42 >0,39 <=0,39
DANGER ZONE
50%
25%
15%
5%
При какой доле минераловс нашим алгоритмом и «расценками» вообще разумно плыть?
+164к ₽
+102к ₽
+66к ₽
-104к ₽
To go or not to go?
В обратную сторону
Итоговая эффективность = f (confusion-matrix,cost-matrix,[atomic-scoring-cost],[classes priors])
• Можно построить зависимость для каждой задачи и найти оптимальную матрицу ошибок → определить оптимальный порог классификации
• Однако, чаще задача решается в прямом виде и строится многомерный массив всех возможных сочетаний → анализируется и выбирается оптимальное сочетание
error cost
error
predictioninterval(s)
Прогнозирование числовых величин
• Аналогичный подход, только стоимость ошибки является функцией величины ошибки
• В отличие от задачи классификации, эту функцию передают непосредственно в процесс обучения как кастомную функцию потерь
Резюме
• Нужно пытаться оценить cost matrix / cost function – сколько стоит каждый вид ошибки
• Очень часто скоринг данных сам по себе не бесплатен, в таком случае нужно понимать долю каждого класса
• Все это часто позволяет понять, какими показателями качества должен обладать алгоритм до начала разработки… и возможно ли это вообще :)
Спасибо за твое время и внимание
RChebotarev [#] croc.ru
Skype: roman.s.chebotarev
Slack [opendatascience]: convex
http://facebook.com/roman.cheborarev
https://ru.linkedin.com/in/roman-chebotarev-5b314339