На что потратить время при моделировании? Часто можно услышать от начинающих дата саентистов, что одна модель хуже другой из-за используемого метода машинного обучения или нейросети. Например, одна модель - XGboost, другая - Random Forrest, и из-за этого одна лучше, а другая хуже. Это не совсем так. Давайте разберёмся из чего складывается хорошая модель machine learning.
Качество данных. Чем чище данные, тем лучше обучится модель и лучше будет работать. Важно не только почистить данные при обучении, но и сделать некий движок, который будет обрабатывать входящий поток данных.
Размер выборки. Чем больше у вас наблюдений - тем лучше обучится модель и тем стабильнее она будет.
Репрезентативность выборки. Вам нужно понять, для чего вы будете использовать модель. Допустим, вы хотите предсказать, за сколько доедет такси до пассажира. Вы обучили модель на данных, запустили её в продакшен, но вдруг замечаете, что она плохо предсказывает. В чём дело? Оказывается, ваша команда обучала модель на данных по московской области, а ваши такси чаще ездят именно в Москве, где расстояния между точками заказов короче в несколько раз.
Набор фичей. Из данных нужно составить фичи - то, на чём она в итоге будет обучаться. Пример фичи: прибыльность по выручке = чистая прибыль / выручка. Чем граммотнее вы составите фичи и обработаете их перед тем, как запускать алгоритм, тем лучше будет результат.
Выбор алгоритма. Самое сложное в data science - это получить хорошие данные и составить фичи. Выбрать алгоритм - довольно простое занятие. Чаще всего выбирают несколько, а потом сравнивают между собой.
#datascience #machinelearning #ai
Качество данных. Чем чище данные, тем лучше обучится модель и лучше будет работать. Важно не только почистить данные при обучении, но и сделать некий движок, который будет обрабатывать входящий поток данных.
Размер выборки. Чем больше у вас наблюдений - тем лучше обучится модель и тем стабильнее она будет.
Репрезентативность выборки. Вам нужно понять, для чего вы будете использовать модель. Допустим, вы хотите предсказать, за сколько доедет такси до пассажира. Вы обучили модель на данных, запустили её в продакшен, но вдруг замечаете, что она плохо предсказывает. В чём дело? Оказывается, ваша команда обучала модель на данных по московской области, а ваши такси чаще ездят именно в Москве, где расстояния между точками заказов короче в несколько раз.
Набор фичей. Из данных нужно составить фичи - то, на чём она в итоге будет обучаться. Пример фичи: прибыльность по выручке = чистая прибыль / выручка. Чем граммотнее вы составите фичи и обработаете их перед тем, как запускать алгоритм, тем лучше будет результат.
Выбор алгоритма. Самое сложное в data science - это получить хорошие данные и составить фичи. Выбрать алгоритм - довольно простое занятие. Чаще всего выбирают несколько, а потом сравнивают между собой.
#datascience #machinelearning #ai
Как подбирать фичи для разработки предсказательной модели? Сегодня поговорим о том, как надо проверять факторы перед тем, как посылать их в модель (любую модель!). Разберём это на примере предсказания события (например, того, что человек заболеет в течение месяца).
Конечно, мы можем просто взять и засунуть в модель 1000 разных факторов, подождать месяц, пока компьютер сможет это обработать и после - вуаля, готово! Но что будет с моделью? Скорее всего, она переобучится, а значит будет хорошо предсказывать события внутри датасета, на котором обучалась, но когда мы выведем модель в продакшен, то поймём, что она ужасно предсказывает новые события. Именно поэтому факторы нужно проверять на индивидуальную предсказательную силу (Somer-D или индивидуальный Джини).
То есть сначала нужно разработать модель на каждом отдельном факторе из, допустим, 1000, которые мы придумали. У нас получится 1000 простых однофакторных моделей.
Далее надо посчитать предсказательную силу каждой из этих моделей. Если предсказательная сила у модели (фактора) низкая - убираем её из нашего шорт-листа. Если очень высокая сила - повод задуматься о том, что с этим фаткором не так и почему он такой мощный. Может быть, он редко всплывает в выборке или он является производным от события, которое мы предсказываем (например, если у вас температура 37.5 - значит вы заболели, и фактор температуры не предсказывает болезнь, а лишь говорит о том, что вы заболели какое-то время назад).
После надо посмотреть корреляции между факторами. Если корреляция высокая, надо оставлять только тот фактор, у кого выше Джини. Например, в плане заболеваемости "Как часто вы ездите в общественном транспорте" и фактор "Как часто вы ездите на такси или личной машине" будут значить примерно одно и то же, предсказательная сила у них тоже будет одинаковая, потому что они взаимоисключающие.
Далее надо посмотреть, сколько факторов осталось. Если факторов много, а выборка небольшая, то стоит уменьшить их количество, ужесточив требования в рамках предыдущих шагов или убрать факторы в зависимости доступности данных по ним.
И только после всех этих процедур можно загружать фичи в алгоритм и обучать его.
#datascience #machinelearning #ai #машинноеобучение #искуственный #интеллект #python #ИИ
Конечно, мы можем просто взять и засунуть в модель 1000 разных факторов, подождать месяц, пока компьютер сможет это обработать и после - вуаля, готово! Но что будет с моделью? Скорее всего, она переобучится, а значит будет хорошо предсказывать события внутри датасета, на котором обучалась, но когда мы выведем модель в продакшен, то поймём, что она ужасно предсказывает новые события. Именно поэтому факторы нужно проверять на индивидуальную предсказательную силу (Somer-D или индивидуальный Джини).
То есть сначала нужно разработать модель на каждом отдельном факторе из, допустим, 1000, которые мы придумали. У нас получится 1000 простых однофакторных моделей.
Далее надо посчитать предсказательную силу каждой из этих моделей. Если предсказательная сила у модели (фактора) низкая - убираем её из нашего шорт-листа. Если очень высокая сила - повод задуматься о том, что с этим фаткором не так и почему он такой мощный. Может быть, он редко всплывает в выборке или он является производным от события, которое мы предсказываем (например, если у вас температура 37.5 - значит вы заболели, и фактор температуры не предсказывает болезнь, а лишь говорит о том, что вы заболели какое-то время назад).
После надо посмотреть корреляции между факторами. Если корреляция высокая, надо оставлять только тот фактор, у кого выше Джини. Например, в плане заболеваемости "Как часто вы ездите в общественном транспорте" и фактор "Как часто вы ездите на такси или личной машине" будут значить примерно одно и то же, предсказательная сила у них тоже будет одинаковая, потому что они взаимоисключающие.
Далее надо посмотреть, сколько факторов осталось. Если факторов много, а выборка небольшая, то стоит уменьшить их количество, ужесточив требования в рамках предыдущих шагов или убрать факторы в зависимости доступности данных по ним.
И только после всех этих процедур можно загружать фичи в алгоритм и обучать его.
#datascience #machinelearning #ai #машинноеобучение #искуственный #интеллект #python #ИИ
👍1
Из чего строится работа data scietist? Часто ребята, начинающие интересоваться DS представляют себе свою будущую работу как бесконечную сложную математику и выявление инсайтов, невидимых обычным смертным, почти на каждодневной основе.
Спешу вас разочаровать. Как я и писал выше, чем чище данные - тем лучше обучится модель (будет лучше работать), поэтому львиная доля времени обычно уходит на чистку выборки.
Обычно большие данные - это очень неструктурированная информация: где-то данных вообще нету, где-то отдельные значения пропущены, а где-то люди вводят данные вручную (получается каша). Всё это надо чистить, но когда у тебя условные 10млн строк, то чистить надо автоматически. Обычно крутая чистка данных занимает 90% кодов и времени дата саентиста.
Пример. У нас есть поле "город" - вроде бы нормальная переменная и проблем возникать не должно, но при ближайшем рассмотрении мы находим следующие варианты написания города Санкт-Петербург:
Санкт Петербург - пропущено тире
Санкт Петербур - пропущена буква
Питер - сокращённое название
Санкт Питербург - ошибка в написании
Saint Petersburg - на иностранном языке
Saint P - неформальное название на английском
Исходя из того, что в России всего 1113 городов, представьте размер этого статистического ужаса.
Именно поэтому data science - это огромный пласт чистки данных, которую невозможно провести руками. Если вы идёте в эту профессию, то должны быть к этому готовы, потому что никто, кроме вас, этого не сможет сделать.
Спешу вас разочаровать. Как я и писал выше, чем чище данные - тем лучше обучится модель (будет лучше работать), поэтому львиная доля времени обычно уходит на чистку выборки.
Обычно большие данные - это очень неструктурированная информация: где-то данных вообще нету, где-то отдельные значения пропущены, а где-то люди вводят данные вручную (получается каша). Всё это надо чистить, но когда у тебя условные 10млн строк, то чистить надо автоматически. Обычно крутая чистка данных занимает 90% кодов и времени дата саентиста.
Пример. У нас есть поле "город" - вроде бы нормальная переменная и проблем возникать не должно, но при ближайшем рассмотрении мы находим следующие варианты написания города Санкт-Петербург:
Санкт Петербург - пропущено тире
Санкт Петербур - пропущена буква
Питер - сокращённое название
Санкт Питербург - ошибка в написании
Saint Petersburg - на иностранном языке
Saint P - неформальное название на английском
Исходя из того, что в России всего 1113 городов, представьте размер этого статистического ужаса.
Именно поэтому data science - это огромный пласт чистки данных, которую невозможно провести руками. Если вы идёте в эту профессию, то должны быть к этому готовы, потому что никто, кроме вас, этого не сможет сделать.
Telegram
Data Science для чайников
На что потратить время при моделировании? Часто можно услышать от начинающих дата саентистов, что одна модель хуже другой из-за используемого метода машинного обучения или нейросети. Например, одна модель - XGboost, другая - Random Forrest, и из-за этого…
Мои дата саентисты нарасхват! Только набрал команду, как нас сразу же стали использовать практически во всех проектах материнской компании. Обычно десантируют на самые сложные задачки, где не хватает рук.
Из-за этого иногда не хватает сил внутри нашего стартапа - приходится опять вспоминать, как правильно кодить.
Из-за этого я стал задумываться, как же быстро разучиваешься кодерским скиллам. Некоторые даже самые простые команды приходится гуглить, как будто я начал изучать питон только вчера! Буквально за 4-5 месяцев без коддинга - и сразу скиллы практически на нуле. Конечно, сейчас есть намного больше понимания, каким образом всё работает: я лучше понимаю, как устроены алгоритмы и как их правильно применять, но вот чисто "работа руками" требует ежедневной практики, чтобы оставаться в форме!
Отсюда можно сделать один вывод: если вы собрались в data science, то вам не обязательно уметь круто писать код. Вы модете менеджить процессы, либо подбирать персонал, как в любом другом бизнесе. Пример для вдохновения: основатель Алибаба Джек Ма за историю развития своего бизнес-гиганта не написал ни одной строчки кода, зато смог сплотить вокруг себя крутых спецов и дать им возможность реализовать себя.
Из-за этого иногда не хватает сил внутри нашего стартапа - приходится опять вспоминать, как правильно кодить.
Из-за этого я стал задумываться, как же быстро разучиваешься кодерским скиллам. Некоторые даже самые простые команды приходится гуглить, как будто я начал изучать питон только вчера! Буквально за 4-5 месяцев без коддинга - и сразу скиллы практически на нуле. Конечно, сейчас есть намного больше понимания, каким образом всё работает: я лучше понимаю, как устроены алгоритмы и как их правильно применять, но вот чисто "работа руками" требует ежедневной практики, чтобы оставаться в форме!
Отсюда можно сделать один вывод: если вы собрались в data science, то вам не обязательно уметь круто писать код. Вы модете менеджить процессы, либо подбирать персонал, как в любом другом бизнесе. Пример для вдохновения: основатель Алибаба Джек Ма за историю развития своего бизнес-гиганта не написал ни одной строчки кода, зато смог сплотить вокруг себя крутых спецов и дать им возможность реализовать себя.
HR минутка дня. Когда ищу людей очень часто слышу "я не буду выполнять тестовое задание!". Правильное ли это отношение к процессу отбора?
Мне кажется, что тут стоит уметь разделять твердолобую принципиальную позицию от стоп-факторов для предотвращения откровенного надувательства со стороны потенциального работодателя.
Всегда надо проверять как человек пишет код. Давайте признаемся, что одной ссылки на гитхаб далеко не всегда достаточно. в 99% случаях, когда заходишь на гит - это мёртвое место, где автора не цитируют и не пользуются его кодом. Лишь в 1% случаев на гите происходит какая-то реальная активность. То есть в 99% случаев люди вполне могут скопировать чужой код и выставить как свой - никто и не заметит!
С другой стороны работодатели часто просят кандидатов сделать какую-то большую работу как часть вступительного экзамена. Кандидата в итоге не нанимают, а код или его часть могут использовать в продакшене! Тоже не честно.
Надо уметь балансировать. Небольшие вступительные тесты и задания надо делать, особенно если работодатель - большая фирма с типовыми заданиями для всех. Если это маленькая контора с огромным заданием на неделю - наверное, не надо суваться.
Мне кажется, что тут стоит уметь разделять твердолобую принципиальную позицию от стоп-факторов для предотвращения откровенного надувательства со стороны потенциального работодателя.
Всегда надо проверять как человек пишет код. Давайте признаемся, что одной ссылки на гитхаб далеко не всегда достаточно. в 99% случаях, когда заходишь на гит - это мёртвое место, где автора не цитируют и не пользуются его кодом. Лишь в 1% случаев на гите происходит какая-то реальная активность. То есть в 99% случаев люди вполне могут скопировать чужой код и выставить как свой - никто и не заметит!
С другой стороны работодатели часто просят кандидатов сделать какую-то большую работу как часть вступительного экзамена. Кандидата в итоге не нанимают, а код или его часть могут использовать в продакшене! Тоже не честно.
Надо уметь балансировать. Небольшие вступительные тесты и задания надо делать, особенно если работодатель - большая фирма с типовыми заданиями для всех. Если это маленькая контора с огромным заданием на неделю - наверное, не надо суваться.
Как учить data science? Вчера мне позвонил мой родственник, который в этом году выпускается из школы и поступает в ВУЗ. Пока все карантинятся от короновируса, он решил потратить время с пользой и попробовать себя в программировании. Звонит и спрашивает "Привет! Я в книжном, какую книжку купить по кодингу?". Если честно, для меня такой вопрос был сюрпризом. Я думал, что поколение нынешних старшеклассников все давно "оцифровались" и учатся на специальных сайтах, ибо так удобнее. Мой родственник купил книгу, и вечером, когда мы встретились, он показал мне что там пишут - полную фигню. Он купил книгу про Python, где давалась куча какой-то ненужной теории и было реально мало кода. Не представляю, как с помощью такой бумаги можно научиться программированию, поэтому составил для вас и для него список самых актуальных курсов по data science для чайников. Сразу скажу, что здесь нет рекламы - просто делюсь опытом.
1) Машинное обучение и анализ данных от Яндекса и МФТИ - наверное, самый известный и уважаемый курс
2) Образовательный сайт Datacamp - я начинал с него. Очень удобно, что можно писать код прямо в браузере - сразу начинаешь программировать, а не слушать лекции.
3) Stackoverflow - на этом сайте отвечают на вопросы в стиле "у меня не работает код, что делать?". В 99% случаев тут можно найти готовый кусочек кода, который делает определённую задачу. Часто разработка сводится к поиску инфы на этом сайте, так что очень советую им пользоваться, если что-то не получается.
В целом, в наше время существует огромное количество платных и бесплатных способов чему-то научиться и повысить свою трудовую стоимость в разы. Дерзайте, у вас получится!
И подписывайтесь на наш канал!
1) Машинное обучение и анализ данных от Яндекса и МФТИ - наверное, самый известный и уважаемый курс
2) Образовательный сайт Datacamp - я начинал с него. Очень удобно, что можно писать код прямо в браузере - сразу начинаешь программировать, а не слушать лекции.
3) Stackoverflow - на этом сайте отвечают на вопросы в стиле "у меня не работает код, что делать?". В 99% случаев тут можно найти готовый кусочек кода, который делает определённую задачу. Часто разработка сводится к поиску инфы на этом сайте, так что очень советую им пользоваться, если что-то не получается.
В целом, в наше время существует огромное количество платных и бесплатных способов чему-то научиться и повысить свою трудовую стоимость в разы. Дерзайте, у вас получится!
И подписывайтесь на наш канал!
WOE или weight of evidence - это метод, с помощью которого вы можете разделять ваши наблюдения на корзинки или бины и на основе их предсказывать вероятность наступления какого-либо события. Этот метод используется чаще всего в риск менеджменте, когда вы хотите сделать интерпретируемую модель на основании логистической регрессии. Основное преимущество этого метода в том, что вы можете легко работать с исключениями.
Пример WOE: вы делите долги компании на ее балансовую стоимость, у каждого полученного результата его целевая переменная, например, вероятность дефолта. Вы сортируете полученные значения от самого маленького к самому большому, а потом делите полученную выборку на 10 групп с одинаковым количеством наблюдений в каждой. Внутри каждой группы получается процент целевой переменной, в нашем случае процент дефолтов. На этих группах разрабатываете логистическую регрессию.
Исключения (например деление на 0) засовываете в отдельную группу и называете ее любым числом, не входящим ни в один из бинов.
Не так давно появилась удобная бибилиотека, которая позволяет делать WOE преобразования удобными. Почитать про нее подробнее можно по ссылке:
https://pypi.org/project/optbinning/
Пример WOE: вы делите долги компании на ее балансовую стоимость, у каждого полученного результата его целевая переменная, например, вероятность дефолта. Вы сортируете полученные значения от самого маленького к самому большому, а потом делите полученную выборку на 10 групп с одинаковым количеством наблюдений в каждой. Внутри каждой группы получается процент целевой переменной, в нашем случае процент дефолтов. На этих группах разрабатываете логистическую регрессию.
Исключения (например деление на 0) засовываете в отдельную группу и называете ее любым числом, не входящим ни в один из бинов.
Не так давно появилась удобная бибилиотека, которая позволяет делать WOE преобразования удобными. Почитать про нее подробнее можно по ссылке:
https://pypi.org/project/optbinning/
PyPI
optbinning
OptBinning: The Python Optimal Binning library
Запускаю серию статей по метрикам качества моделей для машинного обучения! Для начала надо сказать, что модели бывают двух типов:
1) Классификации - это когда вы предсказываете к чему именно относится то или иное наблюдение. Например, перед вами картинка и вы должны понять, что на ней, а ответа может быть три: это либо собачка, либо кошечка, либо мышка.
К одному из под-методов классификации относится бинарная классификация: либо единичка, либо нолик. То есть мы предсказываем либо перед нами кошечка, либо это не кошечка.
2) Регрессии - это когда вы предсказываете какую-то величину на основании предыдущего опыта. Например, вчера цена биткоина была на уровне 32.000 долларов, а на завтра вы прогнозируете ее на уровне 34.533 доллара. То есть вы ищете какое-то число.
Соответственно метрики, на которые смотрят при работе с моделями тоже разные. С завтрашнего дня подробнее буду рассказывать про каждую из них.
1) Классификации - это когда вы предсказываете к чему именно относится то или иное наблюдение. Например, перед вами картинка и вы должны понять, что на ней, а ответа может быть три: это либо собачка, либо кошечка, либо мышка.
К одному из под-методов классификации относится бинарная классификация: либо единичка, либо нолик. То есть мы предсказываем либо перед нами кошечка, либо это не кошечка.
2) Регрессии - это когда вы предсказываете какую-то величину на основании предыдущего опыта. Например, вчера цена биткоина была на уровне 32.000 долларов, а на завтра вы прогнозируете ее на уровне 34.533 доллара. То есть вы ищете какое-то число.
Соответственно метрики, на которые смотрят при работе с моделями тоже разные. С завтрашнего дня подробнее буду рассказывать про каждую из них.
❤2
Метрики для классификации.
Для начала надо усвоить таблицу снизу. Она называется confusion matrix (матрица ошибок). Допустим, наша модель предсказывает купят ли некие люди слона. Потом мы пошли продавать им слона и оказалось, что часть людей слона купили, а часть - не купили.
Так вот результаты такого исследования можно разбить на четыре группы:
1) Модель сказала, что человек купит слона и он купил слона! -> True Positive (TP)
2) Модель сказала, что человек не купит слона, а он взял и купил слона! -> False Negative (FN)
3) Модель сказала, что человек купит слона, но он не купил его, когда ему предложили -> False Positive (FP)
4) Модель сказала, что человек не купит слона. И он действительно его не купил -> True Negative (TN)
Для начала надо усвоить таблицу снизу. Она называется confusion matrix (матрица ошибок). Допустим, наша модель предсказывает купят ли некие люди слона. Потом мы пошли продавать им слона и оказалось, что часть людей слона купили, а часть - не купили.
Так вот результаты такого исследования можно разбить на четыре группы:
1) Модель сказала, что человек купит слона и он купил слона! -> True Positive (TP)
2) Модель сказала, что человек не купит слона, а он взял и купил слона! -> False Negative (FN)
3) Модель сказала, что человек купит слона, но он не купил его, когда ему предложили -> False Positive (FP)
4) Модель сказала, что человек не купит слона. И он действительно его не купил -> True Negative (TN)
Продолжение про метрики качества: Accuracy. Теперь давайте разберем самую простую и базовую метрику качества, про которую чаще всего говорят заказчики, не понимающие в ML. Называется она accuracy или точность. Смотрим на пост про confusion matrix и запоминаем как считается точность модели:
Accuracy = (TP+TN)/(TP+TN+FP+FN)
Accuracy используют редко, потому что она дает плохое представление о качестве модели, если у нас не сбалансированны классы. Например, у нас есть 100 картинок котиков и 10 картинок собачек. Пускай для упрощения скажем, что котики - это 0, а собачки - это 1 (перейдем к бинарной классификации). В данном примере котики и собаки - это два класса. Собак меньше, чем котиков в 10 раз - значит выборка из картинок не сбалансирована.
Например, наша модель правильно определила 90 котиков из 100. Получается True Negative = 90, False Negative = 10.
Еще наша модель определила правильно 5 собачек из 10. Получается True Positive = 5, False Positive = 5.
Подставив данные в нашу формулу получим, что accuracy тут равен 86,4. Однако если бы мы просто сказали, что на всех картинках котики, то получили бы accuracy 90, хотя для этого и никакой модели и не нужно. И вот казалось бы, угадывая достаточно много картинок (аж 86%!) наша модель на самом деле плохая.
Accuracy = (TP+TN)/(TP+TN+FP+FN)
Accuracy используют редко, потому что она дает плохое представление о качестве модели, если у нас не сбалансированны классы. Например, у нас есть 100 картинок котиков и 10 картинок собачек. Пускай для упрощения скажем, что котики - это 0, а собачки - это 1 (перейдем к бинарной классификации). В данном примере котики и собаки - это два класса. Собак меньше, чем котиков в 10 раз - значит выборка из картинок не сбалансирована.
Например, наша модель правильно определила 90 котиков из 100. Получается True Negative = 90, False Negative = 10.
Еще наша модель определила правильно 5 собачек из 10. Получается True Positive = 5, False Positive = 5.
Подставив данные в нашу формулу получим, что accuracy тут равен 86,4. Однако если бы мы просто сказали, что на всех картинках котики, то получили бы accuracy 90, хотя для этого и никакой модели и не нужно. И вот казалось бы, угадывая достаточно много картинок (аж 86%!) наша модель на самом деле плохая.
👍3
Продолжение про метрики качества: Precision, Recall. Мы выяснили, что из Confusion Matrix часто рассчитывают метрики качества моделей, при этом Accuracy применяют редко (хоть она и очень популярна у заказчиков, не шарящих в машинном обучении). Что еще можно рассчитать на основе этой матрицы?
Precision = TP / (TP + FP) и показывает долю объектов, названных нашей моделью положительными и при этом действительно являющимися положительными. В примере с котиками и собачками Precision = 0.5 (попробуйте посчитать сами).
Recall = TP / (TP + FN) и показывает нам какую долю объектов положительного класса из всех объектов положительного класса нашел алгоритм. В нашем примере с котиками и собачками Recall = 0.33 (пересчитайте сами).
Эти метрики адекватнее показывают качество модели, чем Accuracy, но имеют ряд недостатков. Например, вы можете изменять результат обоих меток просто двигая уровень отсечения по вероятности отношения к классу. Но эту тему я разберу уже отдельно.
Precision = TP / (TP + FP) и показывает долю объектов, названных нашей моделью положительными и при этом действительно являющимися положительными. В примере с котиками и собачками Precision = 0.5 (попробуйте посчитать сами).
Recall = TP / (TP + FN) и показывает нам какую долю объектов положительного класса из всех объектов положительного класса нашел алгоритм. В нашем примере с котиками и собачками Recall = 0.33 (пересчитайте сами).
Эти метрики адекватнее показывают качество модели, чем Accuracy, но имеют ряд недостатков. Например, вы можете изменять результат обоих меток просто двигая уровень отсечения по вероятности отношения к классу. Но эту тему я разберу уже отдельно.
Продолжение про метрики качества: F-score. В прошлых сообщениях я делился, что такое Confusion matrix, почему Accuracy - не лучшая метрика, а также как считать Precision, Recall и что это такое.
Иногда во всех этих метриках можно запутаться, а алгоритмы машинного обучения устроены таким образом, что чаще всего умеют оптимизировать какую-то одну метрику качества. Именно поэтому стали придумывать показатели, которые характеризуют одновременно и Precision и Recall, и называются эти показатели F-скором.
F-скоров бывает несколько типов, я вам расскажу про самый базовый расчет, который называется F1-скор:
F1 = 2 * (Precision * Recall) / (Precision + Recall)
Из примера с котиками и собачками качество модели получается = 0.4 (попробуйте посчитать сами). Таким образом F1 показывает одновременно насколько хорошо модель находит объекты положительного класса из всех объектов положительного класса и какая доля из тех, кого алгоритм назвал положительным классом, действительно являются положительным классом.
Иногда во всех этих метриках можно запутаться, а алгоритмы машинного обучения устроены таким образом, что чаще всего умеют оптимизировать какую-то одну метрику качества. Именно поэтому стали придумывать показатели, которые характеризуют одновременно и Precision и Recall, и называются эти показатели F-скором.
F-скоров бывает несколько типов, я вам расскажу про самый базовый расчет, который называется F1-скор:
F1 = 2 * (Precision * Recall) / (Precision + Recall)
Из примера с котиками и собачками качество модели получается = 0.4 (попробуйте посчитать сами). Таким образом F1 показывает одновременно насколько хорошо модель находит объекты положительного класса из всех объектов положительного класса и какая доля из тех, кого алгоритм назвал положительным классом, действительно являются положительным классом.
Поскольку у нас оч много новых подписчиков, решил провести опрос: чего бы вам больше хотелось видеть на канале?
Anonymous Poll
38%
Обзоры конкретных библиотек в Python
43%
Продуктовые примеры применения AI
54%
Пошаговые инструкции как сделать свой алгоритм
36%
Общие вещи по поводу AI: что это такое, как проверяется его качество
0%
Свой вариант в комментариях
Продолжение про метрики качества: почему многие метрики требуют настройки. До этого мы выяснили что такое Confusion Matrix, Accuracy, Precision и Recall, а также F1-score. Если честно, у всех этих метрик качества есть большой минус - мы должны выбирать порог, при котором 0 становится 1, из-за чего может меняться качество модели.
Мою логику можно проследить по цифрам на черном фоне на картинке:
(1) Давайте приведем пример, что есть некие 10 человек, которым мы хотим продать слона. Мы сделали модель, которая показывает вероятность продажи этого слона каждому человеку. Мы сходили к этим людям и только часть из них на самом деле купила слона.
(2) Мы решили проверить, насколько хорошо наша моделька определила тех, кто хочет купить слона. Решили, что моделька с уровнем отсечения в 30% вероятности покупки - это наши потенциальные клиенты. Посчитали все метрики для Confusion Matrix.
(3) Проделали то же самое, но с уровнем отсечения в 70%, то есть выше 70% вероятности покупки - это наши целевые клиенты.
(4) Посчитали сами Confusion Matrix для двух этих случаев.
(5) Посчитали качество моделей. Оно получилось разным в зависимости от точки отсечения.
Таким образом data scientist может изменять качество модели в зависимости от определения порога отсечения в задачах классификации. Tricky? Еще как! Как с этим быть? Настраивать не только целевые метрики, но и считать бизнес часть. Например, для банковских кредитов очень важен False Negative и Gini (рассмотрю его далее), потому что неугадывание одного дефолта по кредитам - это большие потери.
Мою логику можно проследить по цифрам на черном фоне на картинке:
(1) Давайте приведем пример, что есть некие 10 человек, которым мы хотим продать слона. Мы сделали модель, которая показывает вероятность продажи этого слона каждому человеку. Мы сходили к этим людям и только часть из них на самом деле купила слона.
(2) Мы решили проверить, насколько хорошо наша моделька определила тех, кто хочет купить слона. Решили, что моделька с уровнем отсечения в 30% вероятности покупки - это наши потенциальные клиенты. Посчитали все метрики для Confusion Matrix.
(3) Проделали то же самое, но с уровнем отсечения в 70%, то есть выше 70% вероятности покупки - это наши целевые клиенты.
(4) Посчитали сами Confusion Matrix для двух этих случаев.
(5) Посчитали качество моделей. Оно получилось разным в зависимости от точки отсечения.
Таким образом data scientist может изменять качество модели в зависимости от определения порога отсечения в задачах классификации. Tricky? Еще как! Как с этим быть? Настраивать не только целевые метрики, но и считать бизнес часть. Например, для банковских кредитов очень важен False Negative и Gini (рассмотрю его далее), потому что неугадывание одного дефолта по кредитам - это большие потери.
Telegram
Data Science для чайников
Метрики для классификации.
Для начала надо усвоить таблицу снизу. Она называется confusion matrix (матрица ошибок). Допустим, наша модель предсказывает купят ли некие люди слона. Потом мы пошли продавать им слона и оказалось, что часть людей слона купили…
Для начала надо усвоить таблицу снизу. Она называется confusion matrix (матрица ошибок). Допустим, наша модель предсказывает купят ли некие люди слона. Потом мы пошли продавать им слона и оказалось, что часть людей слона купили…
👍2
AI для чайников | Александр Троицкий
@dsproduct.xlsx
P.S. Можете покрутить Вводные Данные (1) и Уровни Отсечения в (2) и (3), чтобы самим поиграться с метриками качества модели в зависимости от порога перехода из 0 в 1.
Продолжение про метрики качества: ROC-AUC. До этого мы разобрали Confusion Matrix, Accuracy, Precision и Recall, F1-score, а также пример с точками отсечения. Пожалуй, самой популярной метрикой для бинарной классификации все же является ROC-AUC. Она не требует настройки с уровнем отсечения и хорошо подходит для несбалансированной выборки. Предлагаю разобраться с ее расчетом пошагово на примере с покупкой слона.
(1) Итак, у нас есть вероятность покупки слона и исход события.
(2) Посчитав количество положительных исходов (а их тут 3) и отрицательных исходов (их тут 7 штук), нарисуем табличку высотой 3 и шириной 7. Площадь таблички получается 21.
(3) Расположим вероятность покупки слона от самой большой до самой маленькой. Будем идти сверху вниз по вероятности: если купил слона, то ставим 1 на клеточку выше (начинаем с точки 0,0), если не купил, то ставим 1 на клеточку правее. Правее всех полученных единичек ставим 1 до конца матрицы. Суммируем, получаем 16.
(4) ROC-AUC = 16 / 21 = 76%.
(1) Итак, у нас есть вероятность покупки слона и исход события.
(2) Посчитав количество положительных исходов (а их тут 3) и отрицательных исходов (их тут 7 штук), нарисуем табличку высотой 3 и шириной 7. Площадь таблички получается 21.
(3) Расположим вероятность покупки слона от самой большой до самой маленькой. Будем идти сверху вниз по вероятности: если купил слона, то ставим 1 на клеточку выше (начинаем с точки 0,0), если не купил, то ставим 1 на клеточку правее. Правее всех полученных единичек ставим 1 до конца матрицы. Суммируем, получаем 16.
(4) ROC-AUC = 16 / 21 = 76%.
Продуктовое применение DS & AI. Самые явные бенефициары развития ИИ - это отрасли с большим количеством данных. В основном это банки и страховые, телекомм, ритейл.
В финансовой отрасли ИИ используют для прогнозирования наступления негативных событий. В банках это невозврат кредита или неисполнение обязательств по договору (банковские гарантии), в страховых этот перечень шире: от шанса попасть в аварию до вероятности поднятия среднегодовой температуры в Штате Х до температуры У по Цельсию (многие культуры плохо переживают определенную температуру и из-за этого урожайность снижается).
Данных тут много, банки научились их складывать в аккуратные ДВХ раньше других, а моделирование происходит на основе бинарной классификации, что является одним из самых простых DS методов. Если посмотрите на прибыльность финтеха последние годы и количество привлеченных инвестиций, то становится понятно, что финансовая отрасль стала первым бенефициаром от развития DS & ML & AI.
Сложностей тоже много, в особенности чрезмерная зарегулированность отрасли. Из-за регуляторов банкам не позволяют создавать сложно интерпретируемые модели, мол, их не могут проверить непрограммисты-аудиторы. Само собой, такой подход снижает эффективность и повышает риски для банков. С аудитом DS моделей в мире вообще много сложностей, о них я поведаю позже.
В финансовой отрасли ИИ используют для прогнозирования наступления негативных событий. В банках это невозврат кредита или неисполнение обязательств по договору (банковские гарантии), в страховых этот перечень шире: от шанса попасть в аварию до вероятности поднятия среднегодовой температуры в Штате Х до температуры У по Цельсию (многие культуры плохо переживают определенную температуру и из-за этого урожайность снижается).
Данных тут много, банки научились их складывать в аккуратные ДВХ раньше других, а моделирование происходит на основе бинарной классификации, что является одним из самых простых DS методов. Если посмотрите на прибыльность финтеха последние годы и количество привлеченных инвестиций, то становится понятно, что финансовая отрасль стала первым бенефициаром от развития DS & ML & AI.
Сложностей тоже много, в особенности чрезмерная зарегулированность отрасли. Из-за регуляторов банкам не позволяют создавать сложно интерпретируемые модели, мол, их не могут проверить непрограммисты-аудиторы. Само собой, такой подход снижает эффективность и повышает риски для банков. С аудитом DS моделей в мире вообще много сложностей, о них я поведаю позже.
👍5
@dsproduct.xlsx
11.6 KB
Продолжение про метрики качества: MSE, RMSE, MAR, R-квадрат. До этого мы обсуждали метрики для задач классификации, то есть когда мы либо различаем котиков и собачек, либо предсказываем вероятность наступления события. Теперь переключимся на метрики для задач регрессии. Примером задачи регрессии может быть оценка квартиры, то есть мы будем выбирать не между двумя или тремя классами, а вольны угадывать число. Как всегда я подгрузил файлик с расчетом первых 4ех метрик в приложения к этому посту. Будем разбирать как считаются MSE, RMSE, MAE, R-квадрат.
👍1
Продуктовое применение DS & AI: Churn Probability. Одним из самых явных применений DS является поиск тех клиентов, которые скоро перестанут пользоваться вашими услугами. Эти модели делают практически по всех отраслях. Когда мы говорим про Churn Probability недостаточно просто предсказать какой клиент скоро отвалится - надо понять как его удержать, поэтому в идеале надо сделать не одну модель, а две: вероятность отвала (что перестанет пользоваться услугами) и модель удержания клиента (выбор действия или предложения).
Вероятность отвала. Чаще всего в бизнесе уже есть понятие того, ушел клиент или нет. Например, в банкинге это обороты по счету и остатки на текущем счете. В ритейле это количество покупок за последний месяц. Не используйте в качестве целевой, например, закрытие счета в банке или удаление приложения на телефоне - это действия, к которым прибегают в крайнем случае, зачастую они чрезмерны для потребителя.
Модель удержания клиента. Для клиента нужно выбрать с одной стороны предложение, которое его заинтересует и заставит остаться, с другой стороны - метод доставки этого предложения (телефон,. пуш, имейл, баннер). Самое сложное здесь - создание целевых переменных для разработки. Если у вероятности отвала обычно много целевых данных, то у модели удержания - меньше и они смещены в сторону отдельных групп клиентов. Лучший выход - рассылка случайных типов предложений случайным способом для удержания и разработка на результатах такого теста.
Вероятность отвала. Чаще всего в бизнесе уже есть понятие того, ушел клиент или нет. Например, в банкинге это обороты по счету и остатки на текущем счете. В ритейле это количество покупок за последний месяц. Не используйте в качестве целевой, например, закрытие счета в банке или удаление приложения на телефоне - это действия, к которым прибегают в крайнем случае, зачастую они чрезмерны для потребителя.
Модель удержания клиента. Для клиента нужно выбрать с одной стороны предложение, которое его заинтересует и заставит остаться, с другой стороны - метод доставки этого предложения (телефон,. пуш, имейл, баннер). Самое сложное здесь - создание целевых переменных для разработки. Если у вероятности отвала обычно много целевых данных, то у модели удержания - меньше и они смещены в сторону отдельных групп клиентов. Лучший выход - рассылка случайных типов предложений случайным способом для удержания и разработка на результатах такого теста.
👍3
Data Science for dummies.xlsx
21.1 KB
Продолжение про метрики качества: MAPE, SMAPE. До этого мы обсуждали метрики для задач классификации, а также основные метрики для регрессии. Сегодня хочется закрыть тему с метриками, рассмотрев еще парочку из регрессии.
MAPE и ее вариация SMAPE позволяют оценить на сколько процентов разошлись результаты в среднем по сравнению с настоящими значениями.
В целом, чаще всего в классификации используют R-квадрат (коэффициент детерминации), MAE и MAPE.
В файлике приложил дополнительные вычисления, а также исправил опечатку R-квадрата из прошлого поста про метрики.
MAPE и ее вариация SMAPE позволяют оценить на сколько процентов разошлись результаты в среднем по сравнению с настоящими значениями.
В целом, чаще всего в классификации используют R-квадрат (коэффициент детерминации), MAE и MAPE.
В файлике приложил дополнительные вычисления, а также исправил опечатку R-квадрата из прошлого поста про метрики.
🔥3😱1