Машинное обучение в бизнесе, версия 2


Лекция в рамках спецкурса по машинному обучению на ЭФ НГУ.

Слайды выступления:

slides_nsu_ml_bussiness.pdf

Текстовая расшифровка, пока не вычитана:

Давайте тогда начнем. Меня зовут Дмитрий Колодезев. Я работаю директором ООО «Промсофт». И две следующих лекции будут читать я. Первая лекция про машинное обучение в бизнесе. Вторая про интерпретированность моделей машинного обучения. Я довольно много занимаюсь интерпретированием. Ну и бизнесом тоже помаленечку занимаюсь. Мы консалтеры, соответственно. Последнее, что я такое крупное делаю, это мы с финансами работали. Так мы работаем с коммерческой недвижимостью. Делаем какую-то аналитику. В общем, полезное такое делаем. Что интересно, сейчас кризис. А у наших заказчиков дела идут хорошо. Может быть, наша какая-то в этом услуга есть. Это я к тому, почему я вдруг про машинное обучение в бизнесе рассказываю. Давайте я сейчас вращаюсь на рабочий стол и поехали. Собственно говоря, лекцию. Стол видно? Напишите. Хорошо. Итак, машинное обучение в бизнесе. Про машинное обучение вам рассказывали уже изрядно. Но все это подразумевало, что есть какая-то задача, которую вам кто-то принес, вы ее начали лишать, и это принесло какую-то пользу. На практике, как только вы приходите к кому-то с идеями принести ему пользу с машинным обучением, вы начинаете сталкиваться с проблемой. И проблемы эти растут главным образом потому, что машинное обучение рассматривается как некоторая магия, волшебный помощник, который сейчас придет и все за вас сделает. А на самом деле обычно машинное обучение, но в большинстве случаев, 9 из 10 случаев, это бездомная драка, когда бизнес скидывает деньги без всякого возврата. Ну это практика просто. И собственно, как уменьшить размер этой дыры и как сделать ваше машинное обучение немножко более полезным для бизнеса, ну вот про это короткая лекция, она не будет полтора часа, она будет короче, полтора часа меньше. Итак, все разговаривают про машинное обучение с придыханием, это такая магия, которая сейчас придет и всех спасет. Однако на самом деле машинное обучение не про это. То есть вот этот известный мем, что если все твои друзья прыгнут с крыши, ты тоже прыгнешь, предполагается, что психически здоровый ребенок говорит, не, я не буду, даже если он на самом деле прыгнет. Алгоритм машинного обучения всегда говорит да, потому что он просто повторяет то, что у него есть в данных. Алгоритм машинного обучения, как правило, не может выдумать ничего такого, что в данных не было, поэтому он просто копирует прошлое решение, удачное, неудачное, сделанное в других условиях, сделанное в таких же условиях. Когда мир меняется со страшной скоростью, приходят всякие коронавирусы, гострегулирование, рецессии приходят и уходят, меняется в принципе способ, какими люди торгуют, покупают, внезапно выясняется, что алгоритм машинного обучения все еще живут в прошлом и предсказывают, что это не то. Прежде всего, ML – это не про высококачественные прогнозы. Почти всегда машинное обучение – это способ быстро принимать не очень важные решения среднего качества, при этом дорого и неконтролируемо. Разберем эти утверждения. Во-первых, быстро. Поскольку решение принимает человек, а не компьютер, то мы можем выдать решение быстро, иногда это важно. Например, когда у нас наша система стоит на конвейере, у нас со скоростью 12 метров в секунду летят упаковки с йогуртом, и нам нужно посмотреть, перестал ли принтер печатать на этих упаковках, или все еще печатает нормально. Нам нужно быстро остановить конвейер. Не очень важное решение. Почему не очень важное? Представим себе, что люди принимают какое-то очень важное решение. Например, мы выбираем спутника жизни, или мы решаем, где купить дом. Мы опираемся, конечно, на мнение алгоритмов машинного обучения, которые нам подсказывают возможных партнеров в Тиндере, или выгодные сделки по недвижимости. Но все равно, когда мы принимаем эти решения, мы обсуждаем их с кучей людей долго. И сам по себе процесс обсудить с кучей людей, это на самом деле просто защита от ошибочных решений. То есть машинное обучение способно быть одним из этих людей. Но чем важнее решение, тем более люди склонны принимать его самостоятельно. Извини, что перебиваю. Да, радиокачество. Да, радиокачество. Машинное обучение способно выдавать, как правило, высококачественные решения. Медленно принимают решение. И алгоритмы могут принимать решение быстро. Людей просто набрать. То есть мы взяли человека, объяснили ему, знаешь, парень, если здесь будет идти бандит с ружьем, нажимай кнопку. Если будет идти девушка с коляской, то пропускай ее. Медленный алгоритм для этого придется очень долго учить. Люди плохо масштабируются. То есть представим себе ситуацию. Кто-то хочет отслеживать на видео и ловить преступников. То есть есть база фотографий преступников. Дим, извини, слушай, не видим презентацию. Как только преступник пройдет в видеокамере, пусть он нажимает кнопку, опергруппа выезжает и арестовывает. Начинаем считать. В Москве 160 тысяч видеокамер. Человек за видеокамерой должен сидеть хотя бы в 4 смены. Простой подсчет показывает нам, что примерно все население трудоспособное Новосибирск должно смотреть в видеокамеры. Кто-то их должен учить, кормить и так далее. То есть это в принципе нереализуемый вариант людьми. Машинное обучение масштабируется. Да, они плохо определяют лица. Да, они дают много ошибок. Но люди в принципе не способны масштабироваться до таких размеров. Поэтому когда нам нужно очень много, то машинное обучение это единственный естественный выбор. Люди однако адаптируются. То есть если вы, допустим, скажете, вот сегодня у нас такой день, сегодня на улице не выпускай стариков и детей, а обычно выпускай. Люди услышат эту фразу, переспросят три раза и начнут так делать. ML-алгоритмы придется переобучать заново. То есть фактически нуля. Люди однако же это издержки бизнеса. То есть мы ставим зарплату в издержки, мы смотрим вот фонд оплаты труда, фонд оплаты труда у нас увеличился, это плохо. Однако ML-алгоритмы, если правильно подойти к этому делу, можно рассматривать как капитальное вложение, и тогда получается, что мы потратили примерно те же самые деньги, что и на людей, но это у нас не издержки, а капитальное вложение, у нас выросла капитализация, мы стали больше, нас любят инвесторы, все хорошо. То есть простого ответа использовать людей или ML-алгоритмы нет. Обычно это не так понятно. Если вам непонятно, стоит ли здесь использовать ML, значит используйте людей просто так. Кто является естественной жертвой автоматизации с помощью машинного обучения? Как ни странно, это не рядовые сотрудники, обычно это начальство. То есть проще всего автоматизировать надзирателей. Нам довольно трудно с помощью машинного обучения автоматизировать работу каменщика, который кладет кирпич. Но довольно просто можно автоматизировать работу бригадира, который ходит и проверяет надзирателей на всех касках. Ну и так далее. То есть именно средний уровень менеджмента, это тот, кто первый погибнет в результате автоматизации машинного обучения. Оценка, контроль, ресурсное планирование, выявление аномалий, прогнозирование, выявление влияющих факторов, отчетность, вот это все простые, хорошо документированные, ясные задачи, которые отнимают огромное количество времени у менеджмента, они как раз отлично автоматизируются. Кроме всего прочего, многие люди по сути своей работы это живые машины. То есть, например, люди, которые делают кредитный сколдинг, люди, которые делают антифрод, люди, ищущие дубликаты, люди, отвечающие на типовые вопросы целый день, люди, анализирующие рекламные кампании в Яндекс.Директе, люди, читающие чужие отчеты и ищущие в них аномалии, то есть что тут не сходится. В принципе, они и так роботы, и роботами себя в общем-то и чувствуют. Ну и естественно, что машинное обучение тут может быть внедрено и хорошо работать именно потому, что это то самое место, где люди быстро принимают не очень важные решения среднего качества, дорого и неконтролируемо. Прежде чем внедрять ML, хорошо посмотреть, что вообще, говоря, у предприятий есть. Потому что любой выпускник этих курсов или каких-то еще может построить очень сложный алгоритм, которым практически невозможно будет пользоваться, потому что для него не будет либо данных, либо его результат нельзя будет использовать в жизни. То есть если ваша модель скажет, что это, допустим, плохой пример, хороший пример, как вы отреагируете на это? Где вы сможете использовать предсказания этой модели? Как правило, большая проблема именно с этим. И как бы в отрасли есть сложившаяся такая пирамида иерархии потребностей в машинном обучении, и все начинается со сбора данных. Большинство людей, которые хотят внедрять ML, не собирают данные. Соответственно, анализировать там нечего. Машинное обучение – это анализ данных. Далее собранные данные надо собрать и хранить в таком виде, чтобы они могли быть проанализированы. Это тоже неочевидная вещь, потому что, например, если вы продали большому предприятию в ходу, большое предприятие сложило свои данные в ходу, но просто раньше у вас была маленькая помойка с данными, стала большая помойка с данными. Там как нельзя было ничего найти, так и нельзя. Данные приходится преобразовывать, выискивать в них откровенные ошибки, аномалии, очищать, готовить. После этого у вас возникает начало машинного обучения. Вы делаете какую-то простую аналитику, считаете простые метрики, сегменты, можете выделять признаки, анализировать их, и готовить данные для обучения. И уже только после этого у вас возникает возможность использовать простые ML-алгоритмы, делать тестирование, эксперименты. Ну и после того, как вы в этом преуспели, вы можете доставать из шкафа запылившиеся глубокие нейронные сети и искусственный интеллект во всей своей красе. Анализировали, где расположены те или иные организации, и получается, что, допустим, ну это далее моя оценка, я не имею никаких инсайдов, например, о Сбербанке. Сбербанк сейчас в двух верхних белых треугольничках, полосках расположен. То есть он пытается от обыденного тестирования перейти к теплорелку. Большинство бизнесов не собирают данные, то есть они внизу этой пирамиды. Ну и если вам повезет, то вы дошли до уровня аналитики и методика. То есть эту оценку надо сделать, надо честно смотреть на вещи, то есть вполне возможно, что машинное обучение вам не нужно, вам сначала просто надо научиться собирать данные. Далее, необходимые условия для внедрения машинного обучения. Это, конечно, владельцы процесса. То есть у любого процесса в бизнесе должен быть владелец. Например, есть процесс банковского сходинга у него есть владелец, есть процесс, например, выявления брака у него есть владелец, есть даже у процесса, например, ну, выявления отказов есть владелец. То есть есть кто-то, кто отвечает за то, чтобы этот процесс шел. у этого человека обычно проблемы совершенно не МЛ порядка, то есть ему либо не хватает ресурсов каких-то, либо не хватает каких-то данных, либо ему не хватает каких-то полномочий, и в большинстве случаев МЛ тут ничего не сделает, но дальше мы смотрим, существует ли в этом процессе неэффективность, то есть неэффективность значит, что-то там должно быть медленно, дорого, трудоёмко, сложно… и при этом владелец процесса должен это понимать. Ну то есть, если мы видим, что что-то медленно, дорого, трудоёмко, сложно, а владелец просто говорит — ну, что вы, это еще недолго, это еще не трудоёмко. То есть, он не разделяет нашу иллюзию, у него, скорее всего, есть основания так считать, но если неэффективности в процессе с точки зрения владельца процесса нет, МЛ там не нужен. Самая, кстати, простая неэффективность, это когда очень много людей занято одной и той же работой. То есть, в принципе, можно посмотреть штатное расписание, выбрать ту позицию, где больше всего фонда платы труда, ну и, в общем, скорее всего, там и надо автоматизировать. Нужны данные, много данных, то есть мы про анализ данных. Конечно, модель машинного обучения можно научить отличать банковскую купюру уже, страну банковской купюры по ста фотографиям, но на самом-то деле, для того, чтобы сделать какую-то оценку риска, например, в финансах или недвижимости, вам нужны хотя бы десятки тысяч примеров, если не сотни, то есть просто даже для грубой оценки, например, на 30-60 тысяч примеров. То есть, если у вас бизнес генерирует 100 транзакций в день, что, в общем-то, неплохо, вот такой неплохой, может быть, даже средний бизнес, то получается, что за год он как раз вам и нагенерирует объем данных. Соответственно, вы пришли на лагерь сбора данных, через год-два пришли и только тут у вас возникает машинное обучение. Если у вас нет возможности получить датасет от конкурентов и обучения. Далее, возможность внедрения. Очень часто мы можем построить модель, но мы не можем использовать результат этой модели. Например, самая частая ситуация, когда для принятия решения модели нужны данные, которые в реальности поступают сильно позже. То есть, например, мы построили модель, которая предсказывает данные о подказе электродвигателя, но данные о работе электродвигателя нам поступают, допустим, с задержкой в сутки, то есть нам время от времени издают эти данные, и мы их анализируем, то есть через сутки двигатель уже сгорел. И возможность внедрения надо оценивать отдельно, почти всегда возможности внедрения нет. Я все время говорю про проблему, но это потому, что про находки вы и так от кого-нибудь слышите. И еще машинное обучение должно приносить какую-то пользу, то есть вы должны провести пользу от улучшений с помощью машинного обучения до бизнес-показателя. Например, такой простой пример, мы с помощью машинного обучения увеличиваем средний чек в интернет-магазине, то есть хорошая рекомендательная система может, например, поднять средний чек на 8%, но на самом-то деле мы не уверены, что у нас получится 8%, и мы пользуемся правилом 1%, смотрим, а имеет ли смысл разворачивать эту систему, если мы поднимем средний чек всего на 1%. Ну, то есть мы поднимем средний чек на 1%, допустим, магазин оборачивает за год миллиард, мы получим от нашего миллиарда 10 миллионов, но из этих 10 миллионов у нас будет, на самом-то деле, только 10% прибыли, ну, в общем, миллион мы получим. Есть ли внедрение этой рекомендательной системы дешевле миллиона, ну, в общем, да, наверное, надо делать. Если бизнес-показатель изменится на 10% и только тогда кто-то заметит это, тогда надо очень тщательно все считать. Например, пусть мы прогнозируем загрузку операторов в колл-центре, и мы говорим, вот, допустим, завтра у вас будет нагрузка, вам надо будет не 10 операторов привезти, а 9. То есть если мы сможем распределить операторов в колл-центре так, что нам нужно на 10% меньше операторов, ну это, наверное, хорошо, но дело в том, что у нас на смену, скорее всего, все равно выйдут 10, то есть ничего не изменится. Если у организации один бухгалтер и наша автоматизация сократит полчаса его работы, организации все равно понадобится один бухгалтер, то есть вообще ничего не изменится. Во многих случаях внедрение машинного обучения не дает даже 10% увеличения бизнес-показателей, то есть если 1% увеличения бизнес-показателей незначим, значит надо очень тщательно считать с финаналитиками, имеет ли МР тут смысл вообще. Как люди решают эти проблемы? В 1996 году, тогда тоже были проблемы с внедрением машинного обучения, его только называли дата-майнингом, была разработана типовая схема внедрения, ее разрабатывали консалтеры Крис Дэн, которая выявила основные этапы, как жить, чтобы дата-майнинг внедрился наиболее полезным и безболезным для бизнеса способом. Все начинается с понимания бизнеса, потом с понимания данных, подготовим данные, моделируем, оцениваем, что у нас там получилось, если получилось плохо, идем дальше понимать бизнес, ну и потом раскатываем нашу модель и радуемся. Все хорошо, что интересно, эта модель немножечко похожа на DVD-диск, они ровесники, то есть в 1996 году начали выпускать DVD-диски первые в Японии, если вы у бабушки или дедушки видели DVD-диск, вот примерно Крис Дэн тех же времен в поделках, она подразумевала процессы внедрения длиной в годы на самом деле Крис Дэн, то есть полгода, год, два года и она, я думаю, что не очень подходит для большинства современных быстро меняющихся бизнесов. Ну, тем не менее, это хорошая модель и скорее всего, если вы придете в какой-нибудь банк, с вами поговорят про Крис Дэн, но делать все равно будут не так, а будут делать, например, вот так, то есть это то, до чего Крис Дэн доэволюционировал, все начинается с понимания бизнес-цели, то есть вы говорите, ребята, я вам сделаю вот такую хорошую модель, она сможет предсказывать, когда ваши сотрудники заваляют и будут грипповать, вы говорите, зачем? Он говорит, ну как, вы знаете, какая у вас будет нагрузка и вы сможете покупать больше или меньше печенья и заказывать воды и туалетные бумаги, вы так оцениваете прозвожную экономию и говорите, нет, нас не интересует, или вы приходите и говорите, вы знаете, мы придумали новую скоринг-модель, она повысит на 1% возвращаемость ваших займов, вы говорите, ого, 1%, это же несколько миллионов в день, вот, и задача согласована с заказчиком, то есть у вас есть задача, она приносит какую-то бизнес-пользу и эту бизнес-пользу владелец процесса разделяет. Затем вы смотрите, что у вас есть из данных, существует обычно какие-то базы данных у заказчика, то есть в принципе весь современный бизнес так или иначе ведется в каких-нибудь IT-системах, проблема в том, что часто в этих IT-системах хранится текущее состояние и не хранится история, или история хранится агрегированная, или история хранится с купюрами, или вообще хранится полная чушь, то есть например время от времени происходит какое-нибудь образное закрытие операционного дня, после чего подсчитываются средние показатели и вся текучка, которая происходила, что пришло, куда ушло, оно безвозвратно по теме агрегировано, иногда в системах полезные данные можно извлечь только из каких-нибудь логов, журналов работы, тогда приходится данные восстанавливать, но так или иначе предположим, что данные у нас есть, данные обычно зашумленные, схема баз данных меняется, сами по себе IT-системы меняются, время от времени программа глючит, поэтому данные надо чистить, надо анализировать и решить важные вопросы, достаточны ли данных для того, чтобы работать или их недостаточно, если данных недостаточно, то понятно, все плохо, если данных нам достаточно, дальше мы думаем, как же мы будем работать, построим модель, калибруем ее, оцениваем качество и проводим первичную валидацию, то есть у нас возможно есть какой-то холд-аут, отложенный набор данных, мы прогоняем на нем тест и смотрим, ну вроде бы как все хорошо, если плохо, то мы возвращаемся и по-прежнему дальше делаем свой любимый выбор, если первичная валидация у нас прошла хорошо, мы идем в бизнес-процесс и говорим, ага, вот у нас есть машинное обучение, оно может быть внедрено в бизнес-процесс вот таким образом, как только мы увидим плохого заемщика, у оператора зажжется красная лампочка, нажмет кнопку, плохого заемщика ударит током. То есть сама по себе возможность внедрения в бизнес-процесс не очевидна, как я уже говорил, обычно ее нет, но допустим, что мы смогли, и дальше нам надо провести какое-то внутреннее тестирование, например, на бэк-тесты часто финансы их делают на старых данных, и посмотреть, ну вообще похоже ли это на правду или нет. Если бэк-тесты прошли, мы запускаем систему мониторинга валидации, то есть после того, как мы выкатили нашу модель работать, мир может измениться и наша модель может начать выдавать полную чушь, и мы об этом должны как-то узнать. То есть речь не о том, что наша система машинного обучения сломается, нет, она может работать, но просто например, представьте себе, в каком-нибудь государстве случился коронавирус, и люди со средним доходом например на семью 150 тысяч рублей раньше были хорошими заемщиками, а теперь они стали плохими заемщиками, потому что на самом деле дохода до мая у них никакого не будет, потому что у них была парикмахерская. А модель об этом не знает, поэтому нам нужна какая-то система мониторинга, валидации качества модели, при этом иногда у нас ответ на то, ошиблась модель или нет, есть быстро. Например, если модель выдала ложное срабатывание и вызвала службу безопасности на объект, когда там просто бурундук пробежал, а бывает отложенный ответ, то есть предположим, что модель машинного обучения оценивает привлекательность инвестиций или заемщика, и вы об этом узнаете через 3 месяца, через 6 или через 2 года, и вам 2 года назад нужно было переобучить модель машинного обучения, но вы узнали через 2 года, когда уже все плохо, то есть на самом деле это очень сложный момент, который часто упускают, ну и предположим, что у вас все работает, время от времени у вас будут какие-то беды, тогда вы заново собираете данные, переобучаете модель и все повторяется. Эта картинка взята из сбербанковского курса машинное обучение в финансовых курсах, отличный, я рекомендую, там рассмотрено все то, о чем не рассказывают в обычном курсе по машинному обучению. Вот, кроме того, любая система машинного обучения, которая принимает достаточно важные для бизнеса решения, то есть совсем самые важные решения никто не доверит принимать, но все-таки какие-то решения она принимает, она должна ожидать, что к ней приведут черные лебеди, то есть опять же тот же самый коронавирус изменил модель оценки всех, то есть все потребители ведут себя иначе, все заемщики ведут себя иначе, вся недвижимость оценивается по-другому, ну и вообще все, с чем я привык работать, оно теперь другое. Как мы могли бы, как модель могла бы заметить, что мир изменился? Во-первых, она могла бы мониторить входные данные, то есть для каждого признака мы могли бы смотреть, как он распределен и если распределение признаков риска изменилось, мы могли бы подать сигнал, чтобы дата-сиентисты сели и переобучили модель. Один из живых примеров, когда в одной из стран, в одном онлайн-сервисе недавно поменяли форму ввода для клиентов, если раньше клиенты по умолчанию ставили одно значение, почти всегда, то теперь клиенты по умолчанию стали ставить другое значение, почти всегда, ну то есть формочку чуть-чуть поменяли, покрасивше сделали, а этот показатель использовался моделью машинного обучения и соответственно все предикты модели на протяжении нескольких месяцев систематически давали завышенные оценки на Frodo и Skoda, а к счастью, это была дублирующая модель, то есть реально ее данные не использовались, в тот момент там шла оценка вручную, то есть модель только обучали, но тем не менее, факт остается фактом, если бы она была такая модель на Frodo, заказчик бы потерял огромное количество денег и узнал бы об этом спустя три-четыре месяца, поэтому мониторить входные данные нужно, нужно делать novelty detection, то есть вдруг к вам приходит какая-то комбинация входных данных, которую вы никогда не видели, то есть ну не буквально, но она сильно отклонилась от того, на чем вы учились, вспомним, что машинное исследование – это просто подбор наиболее похожего примера в прошлом, и если в прошлом нет хорошего примера, он натянется на глобус, то есть возьмет что-нибудь, что ближе всего и объявит его ответом. Затем нам нужно мониторить работу самой модели, это сложно, предположим, мы не знаем, правильные ответы или нет, мы должны угадывать как-то по косвенным признакам, мы, например, можем отслеживать как распределяется предсказание модели, то есть, например, у нас модель отказывала, скажем, 10% заемщикам, а стала отказывать 80% заемщикам, в этот момент нам хорошо бы все бросить и пойти разбираться в чем тут дело, либо на самом-то деле процент мог остаться тем же, но изменился вид гистограммы, то есть у нее стали шире хвосты распределений или наоборот уже, при этом средняя могла не измениться, то есть надо мониторить распределение предсказаний. Нам нужен какой-то способ оценивать уверенность модели, то есть предположим, что мы обучили модель отличать например легковые автомобили от велосипедов и показываем ей, например, моторную лодку, к чему она ближе, к легковой автомобиле, не к велосипеду, она всегда скажет, что это либо легковые автомобили, либо велосипед, она никогда не скажет, что это моторная лодка, моторной лодки не было в обучающей выборке, пример такой очень искусственный, но на практике все происходит вживую именно так, то есть если модели сказали выбирай один из 50 вариантов, и ни один из вариантов не подходит, она все равно выберет один из 50 вариантов, и иногда учат специальную вторую модель, то есть одна модель делает предсказание, а вторая модель предсказывает насколько первая модель уверена в своем ответе, то есть вообще можем ли мы полагаться на ответ первой модели. Ну и тут есть свои проблемы, потому что обучить такую модель почти всегда невозможно, к сожалению, то есть пытаются, обучают например на мусорных данных, ну мусорные данные это тоже какое-то распределение, и если ваша ошибка, ваша новинка пришла не из этого распределения, вы ее тоже не поймаете. Ну и до обучения моделей, одна из типичных ошибок, которые делают с машинным обучением, это выкатывают модель и не дообучают ее, то есть допустим мы в прошлом году сделали хорошую модель, она сегодня работает, завтра работает, скорее всего мир изменился за это время, скорее всего модель надо было дообучить на новых данных. Вторая ошибка, которая делается вслед за первой, это давайте мы поставим автоматическое переобучение, ну например раз в месяц или раз в сутки. Почему эта ошибка? Потому что наша модель может обучиться плохо, и если обучение автоматической раз в сутки, то за ней никто не смотрит. Как мы проверим, что новая дообученная модель лучше старой или вообще достаточно хороша? У нас есть возможность отследить, возможно отследить, если у нас короткие ответы мира, то есть не как допустим в кредитах или недвижимости, через несколько месяцев, а если результат мы узнаем быстро, например купил или не купил, то мы можем мониторить модель на ходу. В любом случае нам нужен какой-то способ отслеживать, стала ли переобученная модель лучше или хуже, и если у нас нет такого способа, мы не должны делать переобучение модели автоматически по расписанию. Ну и вообще непонятно, как проверить, что модель работает хорошо. Когда мы ее учили, у нас была разметка, мы ее обучили на разметке. С той поры мир изменился, разметки нового мира у нас может быть нет. То есть это открытый вопрос, для которого нет хорошего решения. Все его ищут какие-то, такие палеотипы. Дальше, типичная модель, типичная проблема машинного обучения в бизнесе это то, что почти все ML-модели не калиброванные. Что такое калиброванная модель? Калиброванная модель говорит вам, например, что этот заемщик с вероятностью 90 процентов вернет долг. И этот заемщик с вероятностью 90 процентов вернет долг. А на самом деле происходит следующее – модель говорит, ну этот заемщик с вероятностью 90 процентов вернет долг, и на самом деле это говорит только то, что модель думает, что этот заемщик вернет долг с большей вероятностью, чем тот, для которого она предсказала 80%. То есть это может быть вообще 10%, 15%. То есть вероятности, которые выдает предикт проба модели и вероятности в, ну просто вот в вероятностном смысле, это разные вероятности. Существует способ скорректировать предсказания модели так, чтобы они были больше похожи на вероятности. Это так называемая калибровка. В материалах к лекции в конце я приложил ссылку на прекрасную статью Дьяконова с обзором методов калибровки. Вот. А тут изображена калибровочная кривая, кривая надежности. Вот. Где, как она строится? Мы разбиваем группу наших предсказаний и допустим, что мы предсказали, что вот этот человек купит с вероятностью 0,6 и смотрим с какой вероятностью на самом деле эта группа покупает. И в идеальном мире у нас получается диагональный график. То есть здесь мы подкладываем нашу рассчитанную вероятность, здесь на самом деле какая она получилась. Вот. И обычно, обычно большинство моделей, они переоценивают вероятности. То есть, например, какая-нибудь нейронная сеть, скорее всего, выдаст либо очень низкую вероятность, либо очень высокую. Она не выдаст вам 0,5, 0,6 вероятность. То есть она тяготеет к тому, чтобы выдать одно из крайних значений. Существует техника, позволяющая калибровать модели, но они достаточно тоже спорные сами по себе и не всегда хорошо работают. Когда нам калибровка моделей бывает нужна и полезна? Представим себе, что мы, например, оцениваем наш портфель инвестиций. Допустим, мы инвестируем в стартапы и нам говорят, ну, вот эта инвестиция, допустим, она будет успешной с вероятностью, там, скажем, 10%, это с вероятностью 70%, это с вероятностью 60%. Мы берем сумму инвестиций, умножаем ее на вероятность успешности инвестиций и получаем оценку возможного дохода. Так вот, ничего мы не получаем, потому что вероятности у нас не калиброваны. Но калибровать вероятности можно, этим надо отдельно заниматься. Дальше. У бизнеса обычно очень по-разному стоят события false positive и false negative. То есть, предположим, к нам приходит человек и говорит, здравствуйте, я хочу продать вам вагон металла. И ваш алгоритм говорит, это обманщик, эта организация ненадежна, вы не можете с ним делать. То есть, если вы отказали хорошему клиенту, вы потеряли какое-то количество денег, ну, скажем, условно 2 миллиона рублей. Если вы пустили фродера, то есть обманщика, вы потеряли, например, 150 миллионов рублей. И вот тут вопрос, что алгоритмы машинного обучения, они тяготеют к тому, чтобы одинаково оценивать обе эти ошибки, false positive и false negative. Ну, как обычно пытаются решить эту проблему? Ну, давайте мы выразим функцию потерь в рублях. И пусть алгоритм оптимизирует по нашей функции потерь в рублях. Это хороший подход, если он получится. Обычно не получается. Во-первых, функция потерь может быть очень сложной. Она может быть недифференцируемой, соответственно, наши алгоритмы машинного обучения не могут на ней искать оптимум. И она может зависеть от внешних условий, то есть, например, в выходные она может быть одна, в рабочие дни она может быть другая. Она может быть настолько сложной, что вам ее не удастся запихать в ваш оптимизатор. Что же тут делать? Ну, один из вариантов – это оптимизировать модель, подбирать модель по уроку АУК, а потом для каждой модели подбирать порог по своей функции потерь. То есть, в любом классификаторе есть порог отсечения, то есть, допустим, все, что выше 0,5 мы считаем положительным результатом, все, что ниже 0,5 – отрицательным. Этот порог мы можем тоже подбирать. То есть, сначала мы подбираем модель, обучаем модель, которая имеет хороший урок АУК, а потом мы подбираем порог, глядя в нашу функцию потерь. Примерно так. Какие еще проблемы есть в машинном обучении, когда мы идем с ним в живой бизнес? Во-первых, это интерпретируемость, то есть, модель принимает какие-то решения и никому не объясняет почему. Про это как раз будет следующая лекция, как понять почему и как модель принимает решения, но в ссылках к презентации есть ссылка опять же на статью Диаконова «Интерпретация черных ящиков». Там Диаконов очень хорошо рассказывает. Вообще, Диаконова можно читать, просто на ночь очень полезен. Дальше. Модель с одинаковой уверенностью дает качественные и некачественные предикты. То есть, например, предположим, что мы учили ее модель предсказывать кредитный дефолт на городских жителях, к нам приехал сельский житель, у него все по-другому. Но модель его точно так же оценила и мы не узнали, что она увидела что-то такое, чего мы раньше не видели. У нас нет способа узнать, качественно ли отработала сама модель или нет. А есть методики, которые пытаются оценить уровень доверия. То есть, одновременно у нас считается какая-нибудь P-вероятность, по которой мы отсекаем плохих и хороших, и отдельно считается Trust Score. Иногда это работает, иногда нет. Дальше проблема. Предположим, бизнес потратил 6 миллионов рублей, построил модель, она вроде бы работает хорошо, но на основании чего она принимает эти замечательные решения? Бизнесу хотелось бы знать это, чтобы просто объяснить это другим людям. Лиза тоже учитывала это в своей работе. Извлечение знаний из модели машинного обучения, это можно делать с помощью интерпретируемости, это интересная вещь, мы с помощью этой штуки решали интересные проблемы. Но это тоже не очевидно. Далее фиксация прошлого. В проблемах машинного обучения на Западе часто говорят про fairness, честность модели. Но на самом деле проблема тут не в честности, проблема именно в фиксации прошлого. То есть, например, если у нас есть данные по преступлениям за последние 40 лет, и совершенно очевидно, что однокожие жители Америки совершали больше преступлений, алгоритм машинного обучения фактически будет фиксировать проблемы, то есть мир будет устроен так, что они будут по-прежнему совершать больше преступлений, потому что им будут отказывать в кредитах, их не будут принимать в хорошие университеты, то есть алгоритм машинного обучения склонен фиксировать, замораживать наше состояние. То есть если мы развиваемся, если улучшается общество, если улучшаются бизнес-показатели, если улучшаются наши бизнес-процессы, алгоритм машинного обучения любят как аутисты, чтобы все было вот как раньше, как при дедушке. И фиксация прошлого – это действительно проблема, если у вас много алгоритмов машинного обучения и от них сильно зависит ваш бизнес. Они хотят, чтобы все было как раньше и такое же. И дальше, если у вас вместо алгоритма машинного обучения сидит человек, то хороший, ну такой нормальный человек, увидев ситуацию, с которой он раньше не сталкивался или ситуацию, в которой он не уверен, он выполнит эскалацию, то есть позовет начальника и скажет «Николай Николаевич, давайте, пожалуйста, разберемся с вот этим, я что-то не понимаю». Алгоритм машинного обучения не сделает этого в большинстве случаев, если специально от него этого не потребовать. Он делает какое-нибудь решение, и вы не узнаете об этом. Что почитать и посмотреть на тему? Ну, прежде всего, курс на Курсире, для тех, кто действительно хочет внедрять машинное обучение, я думаю, что многие из вас, раз вы экономисты, пойдете в финансы, вот, прежде чем идти в финансы с машинного обучения, посмотрите этот курс, там собрана текущая практика Сбербанка. Я думаю, что Сбербанк сейчас лидер в этой области в России, и Сбербанк на той пирамиде потребностей, он вплотную приближается к верхнему треугольнику, то есть они реально молодцы и хороши, ну, во всяком случае, их один, хорошо и молодцы. Далее, три статьи Дьяконова – проблема коррибировки уверенности, как интерпретировать площадь под кривой ошибок, ну, и про интерпретацию черных ящиков. Вот, слайды выложены в интернете тут, вопросы можно задавать. Давайте я сейчас на этом завершу, и вы меня спрашивайте.