Если меня попросят описать самый часто встречаемый дата лик при работе с моделями машинного обучения, то бесспорным номером один будет прогноз прошлого через будущее.
Возникает он, очевидно, когда есть какая то стрела времени, что как несложно догадаться - довольно частый случай.
Две основных причины возникновения таких ликов :
1. рассчет статистик через временное окно, затрагивающее будущее
2. Разбиение выборки(train/test) по user ID без учёта временной компоненты
Почему это происходит? Видимо людям тяжело, когда появляется дополнительная размерность в виде времени
Что делать? Универсальный ответ - обучение и проверка модели должны полностью воспроизводить сценарий реального применения. Например, если нужен прогноз на октябрь и делается он в сентябре, не получится посчитать скользящее среднее захватывая Октябрь, этих данных просто ещё нет, значит и при обучении так делать не надо.
Если хочется прогнозировать отток в октябре, мы не можем обучить модель на тех кто ушел в отток в октябре, потому что их ещё нет. Поэтому если мы обучим и проверим модель на сентябрьских данных, это тоже будет некорректно, ведь в реальности проверяя октябрь, мы не имели октября для обучения, поэтому и проверяя сентябрь, мы не можем иметь его в датасете для обучения
Такого типа проблему я видел везде, от Биг Теха, до маленьких стартапов
Один из способов оптимизации налогов в UK - это вложение денег в venture capital trusts. Кратко - вкидываешь туда до 200к в год, пять лет подряд. Начиная с первого года и бесконечно долго получаешь 30% (60к) - как tax relief, еще там конечно есть дивиденды (tax free) - но они почти полностью съедаются на комиссии фонда, рост вроде тоже есть, в среднем 5%(тоже tax free) - но основная суть конечно в tax relief.
Как это работает? Правительство стимулирует вкладываться в развитие местного бизнеса, применяя для этого налоговые льготы. VCT - это своего рода ETF на компании попадающие под такие условия (такий компаний к слову много). В целом, можно самому вкладывать в отдельные компании, схема это называется enterprise investment schemes (EIS). Если ты вкладываешься в такую контору, то получаешь в этом же году 40% от суммы как tax relief, если компания разоряется - еще 30% (то есть минимум 70 процентов заберешь), если не разоряется - через какое то время можешь продать эти акции tax free, дивиденды по такой схеме кажется тоже tax free
Кажется довольно интересный способ мотивации инвестировать в локальный бизнес. Причем бизнесом этим может быть хоть кофейня. Я например в свое время вложился в производителя газировки (до сих пор ее пью) и чая (тоже его пью)
Пришла пора рассказать где я теперь работаю
Компания называется BP, ранее известная как British Petroleum
Это крупная компания с центральным офисом в Лондоне
Занимаются много чем: нефть, газ, топливо, магазины, биолаборатории (разрабатывают бактерии, поглощающие пластик), авиация, лубриканты (Castrol), ветряная и солнечная энергия, электрозаправки, биотопливо, водородное топливо, трейдинг, логистика, venturing (в свое время инвестировали в небезызвестный Palantir) и многое другое
Я вышел работать в должности старшего главного начальника, взгромоздив на свои плечи роль лидера команды DataWorx Customer & Product and Trading & Shipping.
Это довольно большая команда, численностью около 600 человек, в которую входят дата инженеры, дата аналитики, дата саентисты и млщики (то есть как обычно). Как следует из описания выше, это покрывает примерно 3/5 всей компании.
Очевидно мы нанимаем, например сейчас у меня есть 4 вакантных роли директоров/принципалов (как менеджеры так и IC), которые репортят напрямую мне. Плюс, понятное дело, есть немало ролей стаффов и синьоров. Направлений - гигантская куча, только крупных кусков - порядка 30, где крупный кусок, это бизнес с оборотом около 5-10 млрд долларов
Поэтому, если я вас знаю и работал с вами, но еще не пришел к вам - не стесняйтесь писать мне. Даже если не знаю, но вы считаете что пройдете на стафа/принципала - тоже пишите. Кроме того, соседи тоже активно нанимают и SWE и продактов. Основные локации - UK/US/India/Australia - еще есть Kuala Lumpur. Кстати, если вы активно хотели переехать в Австралию (Мельбурн), UK или KL - это хороший шанс (резюме можно отправить сюда - valerii.babushkin@bp.com - либо оставить заявку здесь)
Немного видео
Ролик 1
Ролик 2
Ролик 3
Ролик 4
Разбирал недавно код нескольких дата пайплайнов, в попытке понять почему же на них тратится так много денег
Ответ был найден быстро, проблему вызывала следующая строчка
df.coalesce(1).write.parquet
Соотвественно, машина арендовалась полностью, а использовалось только одно ядро/поток/воркер из как минимум 16 ( а то и 32 или 64 - зависит от типа инстанса). Вместо того чтобы выдать 16 файлов, выдавался один, но в 16 раз медленее. Для небольших файлов это проблема несущественная, для всего остального - серьезный косяк.
Так, многопоточность, в очередной раз спасла мир
Возможно я что-то упускаю и гнать все через 1 воркер это best practice?
У меня в друзьях в фейсбуке есть сказочник из Узбекистана.
Причем не такой сказочник как Дмитрий Гайдук.
То он устроится в Open AI работать над Узбекским языком и через два месяца уволится (понятное дело ни в каком chat GPT он не работал)
То создаст Сервис для обхода блокировок от ChatGPT, а когда узнает, что другие люди могут смотреть кем и когда зарегистрирован сайт, тут же удалит пост
Регулярная его рубрика - дискриминация при найме на работу где он пишет дичь, про то, что в Узбекистане не нанимают на работу Узбеков
При этом чел переодически писал посты в сингулярис/одс (и мне в личку), где просил помочь ему решить какие то базовые домашки на дом, которые дают при собеседовании
Но самое интересное, что куча людей в ФБ верит в эту сказку и активно участвует в обсуждениях приключений Дон Кихота наших дней
Наблюдая это в живую, понимаю откуда у Блиновской имущества на 64 млрд рублей
Однажды я работал директором по моделированию и анализу данных в одной из крупнейших корпораций РФ - X5 Retail Group. Одновременно с этим я работал вице-президентом по машинному обучению в одной из крупнейших корпораций мира - Alibaba.
Преисполнившись чувством собственной важности, я решил что пора купить себе очки и направился в салон оптики. В салоне меня поджидал продавец. Он с энтузиазмом начал показывать и нахваливать свой товар, переходя от одной полки к другой. В какой-то момент он остановился, окинул меня взглядом и сказал: ну эти лизны дорогие, около чирика (10 тысяч рублей), поэтому выбирай из тех что уже тебе показал.
Так я и сделал лазерную коррецию зрения
Прочитал заметку небезызвестного Ron Kohavi (автора книги по а/б тестам) , When Not to Trust a Published A/B Test – an Example - где он ругает контору Optimizely
Сетап следующий
The test was run by Optimizely, an A/B Testing Vendor, on their own site. The site uses “Get Started” as a Call to Action (CTA) on its pages in the upper-right, as shown below in Figure 1. Additional details are on GuessTheTest - Which CTA copy won?
The Treatment replaced that copy with “Watch a demo” on the Orchestrate product page, as shown below in Figure 2.
The test ran for 44 days with a 50%/50% design. 22,208 visitors saw the Control and 22,129 visitors saw the Treatment.
The Overall Evaluation Criterion (OEC) was clicks on the button.
The results showed that Control had 0.91% click-through rate and the Treatment had 1.59% click-through rate, a 75% lift
Сначала рассказывает про хорошее:
1. Ровно одно изменение на весь тест
2. Группы разбиты 50/50%
3. Sample Ratio Mismatch отсутствует
4. Тест длится долго, больше недели, это хорошо (он правда ворчит что 44 дня - это получается неполный недельный цикл и лучше либо 42 либо 49, тут соглашусь)
Плохое:
1. Мощность теста нужно просчитывать заранее. Обычно хороший аплифт это 5 или 10%. Для 5% в упомянутом тесте нужно 688к наблюдений, а было только 22к - соотвественно эксперимент заранее имеет недостаток в мощности, например эффект в 5, будет пойман только в 7.3% случаев. Если посчитать пост хок, то тест нормально ловит аплифт в 74.7% - и тут кроется ловушка, описанная здесь в разделе 5 - A/B Testing Intuition Busters - Post-hoc Power Calculations are Noisy and Misleading. Кратко - если уж вы поймали стат значимый результат, то он в среднем будет завышен от реального, когда ваш эксперимент имеет недостаточную мощность, а для того изменения, которые вы поймали, мощность у вас конечно будет по расчетам нормальная.
Легко проверить - возьмем и просимулируем 10 000 экспериментов с мощностью в 7.3% и аплифтом в 5%, видим следующее:
i. Стат значимый результат в 13.7% случаев (5% от ложноположительных + 7.3% когда увидели - вот вам уже и число близкое к тому что мы получили)
ii. Минимальный аплифт (когда наблюдается положительная разница) - 14.3%, средний (в абсолютах) - 22.9%, максимальный - 55.5% (но ведь мы знаем что истинный аплифт 5%!, то есть если мы что-то и поймаем, мы в среднем завысим эффект в 4.6 раз)
Разбор того-же самого в посте на LI
2. Судя по описанию теста, такое изменение тестировали на разных страницах и взяли ту, где стало круто - наше любимое множественное сравнение! Никаких поправок на него конечно не делалось
3. Optimizely еще не раскатали тест на всех - это красный флаг, значит что-то их самих не устраивает
4. Самое клевое - Кнопка на ряде мобил и девайсов не показывалась
The button does not seem to show up on smaller viewpoints
If the user doesn’t see the copy, any treatment effect is likely to be diluted, as the treatment effect for those users is zero. It isn’t clear from the description whether this was a PC-only test or if triggering was employed to limit to users who actually saw the button.
То есть возникает вопрос как еще трактовать то результаты, насколько они репрезентативны и для какой группы
Итог - хороший разбор от Рона
Считаю ошибкой со стороны Optimizely заявлять о таких результатах сразу. По хорошему, после того что они увидели нужно было делать раскатку на всех, а через некоторое время катить обратный эксперимент и оценивать еще раз
#ArticleReview
Прочитал статью DISCOVERING LATENT KNOWLEDGE IN LANGUAGEMODELS WITHOUT SUPERVISION
Авторы статьи сделали ряд неожиданных предположений и предложений:
1. Вероятности ответов Да и Нет на один и тот же вопрос (имеющий только один правильный ответ из этих двух вариантов) - должны суммировать в единицу
2. Создаем набор из пар вопросов и ответов, где вопрос повторяется два раза, ответ же Да в одном случае и нет в другом
3. Забираем из модели активации которые генерируются при каждом из вариантов
4. Делаем такой лосс чтобы эти активации выдавали вероятности (после накладывания некоторой матрицы параметров) и суммировались в единицу для каждой пары (и еще учитываем уверенность, чтобы избежать модели дегенерата, которая будет всегда говорить - не все так однозначно, всей правды мы не узнаем и выдавать вероятность в 0.5 на любой вопрос и ответ Да/Нет)
5. Ну и все - обучили сеть из которой можно вытаскивать ответы да/нет, правда очевидно что может сработать не сразу и нужно будет умножать ответ на - 1 (вдруг она да в ноль будет скидывать, а нет в единицу).
Говорят что решили и это ( Technically, we also need to determine whether p˜(qi) > 0.5 corresponds to “Yes” or “No,” as this isn’t specified by LCCS. For simplicity in our evaluations we take the maximum accuracy over the two possible ways of labeling the predictions of a given test set. However, in Appendix A we describe how one can identify the two clusters without any supervision in principle by leveraging conjunctions.) но в апендикс я понятное дело не лез.
Пишут что всех порвали (среди zero shot подходов) и даже дают код
В целом годное чтиво
В четверг 13 июля в 19 часов по мск вместе с @JustStas поговорим про построение модели Marketing Mix с помощью библиотеки Robyn.
Расскажем, как она работает и чем применение на практике отличается от теории.
Серия постов про Robyn тут.
Почти 4 года назад я помогал одной арабской конторе в проекте с predictive maintenance нефтяных установок. Основным контактом был чел, который в принципе толи ничего не понимал в мл, толи очень мало, зато был PhD в области AI.
В последнее время он начал спамить в Linkedin что как непросто, но в тоже время круто быть контрибьютором в open source и назвал себя в профиле Keras-core contributor, я удивился и подумал ничего себе чел сделал прогресс, дай-ка посмотрю что делает. И посмотрел.
Есть в принципе и не совсем плохие, где он увеличивает test coverage (хотя если уже детально рассматривать все варианты, то неплохо бы и сообщать какой именно кейс выпал). Как минимум один раз он пофиксил что-то действительно некорректное
Вывод: Хотите лычку core контрибьютора в Open Source - это можно сделать довольно просто
Должен заметить, что с момента моего прихода акции БиПи выросли на 10 процентов.
Это можно конечно связать с ростом цен на нефть, но зачем, когда есть более очевидное объяснение
Заметил что с каждым годом становится все труднее заставлять себя не работать, причем, как мне кажется, механизм этой зависимости в чем-то схож с зависимостью от социальных сетей/контента
Возможно, что различные активности, в которые я постоянно вписываюсь, от 10 тренировок по джиу джитсу в неделю и качалки до написания книги, это лишь способ организма спастись от окончательного падения в бездну зависимости
Минутка рекламы
My colleagues and I are hosting a free virtual event exploring causal AI applications - please join me and the team alongside the inspirational Turing Award winner Judea Pearl, Robert Ness (Microsoft), Totte Harinen (AirBnB) and more. Please join us on September 12:
Наткнулся на сообщение СЕО конторы где я работал, из которого узнал, что компания проинвестировала в молодых и перспективных стартаперов. Команда на фото
Читать полностью…Сегодня узнал что стал по настоящему знаменитым. Ряд людей написали, что их пытаются соскамить, прикрываясь моим именем. Правда брошюра с предложением настолько нелепа и к тому же описывает меня на состояние 3 года назад, что возникает невольно мысль. Уж не сказочник ли из предыдущего поста постарался?
Читать полностью…Архивное видео 2018 года: Запись трансляции Data&Sсience: отвечают знатоки Во время которого Артур Кузин aka Noise отвечает про шум
Читать полностью…Несколько разочаровался в oura ring. После того как у меня появилась чудо простыня, которая не только меняет свою температуру, чтобы улучшить качество сна, но в дополнение имеет кучу датчиков и отслеживает различные показатели, начал сравнивать их с кольцом. Конечно, я не знаю своего истинного пульса и фаз сна, но точну знаю, поспал я днем или нет - простыня такое ловит без проблем, кольцо через раз. Или в целом, насколько хорошо я восстановился. Не так, чтобы oura несла совсем бред, но иногда она конечно сходит с ума. Самые ярки моменты - это если вырезать какие-то куски сна, то общий скор в Oura может стать сильно лучше. Из разряда, проспал 8 часов - говорит все, тебе капец, пульс поздно упал, вырезаешь первые два часа - все, ништяк, молодец. Очевидно что это еще проблема в алгоритмах обработки сигналов. Отсюда вопрос к студии, что еще попробовать и чтобы переносное. Возможно Whoop?
Читать полностью…Прочитал заметку небезызвестного Ron Kohavi (автора книги по а/б тестам) , When Not to Trust a Published A/B Test – an Example - где он ругает контору Optimizely
Сетап следующий
The test was run by Optimizely, an A/B Testing Vendor, on their own site. The site uses “Get Started” as a Call to Action (CTA) on its pages in the upper-right, as shown below in Figure 1. Additional details are on GuessTheTest - Which CTA copy won?
The Treatment replaced that copy with “Watch a demo” on the Orchestrate product page, as shown below in Figure 2.
The test ran for 44 days with a 50%/50% design. 22,208 visitors saw the Control and 22,129 visitors saw the Treatment.
The Overall Evaluation Criterion (OEC) was clicks on the button.
The results showed that Control had 0.91% click-through rate and the Treatment had 1.59% click-through rate, a 75% lift
Сначала рассказывает про хорошее:
1. Ровно одно изменение на весь тест
2. Группы разбиты 50/50%
3. Sample Ratio Mismatch отсутствует
4. Тест длится долго, больше недели, это хорошо (он правда ворчит что 44 дня - это получается неполный недельный цикл и лучше либо 42 либо 49, тут соглашусь)
Плохое:
1. Мощность теста нужно просчитывать заранее. Обычно хороший аплифт это 5 или 10%. Для 5% в упомянутом тесте нужно 688к наблюдений, а было только 22к - соотвественно эксперимент заранее имеет недостаток в мощности, эффект в 5%, например, будет пойман только в 7.3% случаев. Если посчитать пост хок, то тест нормально ловит аплифт в 74.7% - и тут кроется ловушка, описанная здесь в разделе 5 - A/B Testing Intuition Busters - Post-hoc Power Calculations are Noisy and Misleading. Кратко - если уж вы поймали стат значимый результат, то он в среднем будет завышен от реального, когда ваш эксперимент имеет недостаточную мощность, а для того изменения, которые вы поймали, мощность у вас конечно будет по расчетам нормальная.
Можете проверить сами, возьмем и просимулируем 10 000 экспериментов с мощностью в 7.3% и аплифтом в 5%, видим следующее:
i. Стат значимый результат в 13.7% случаев (5% от ложноположительных + 7.3% когда увидели - вот вам уже и число близкое к тому что мы получили)
ii. Минимальный аплифт (когда наблюдается положительная разница) - 14.3%, средний (в абсолютах) - 22.9%, максимальный - 55.5% (но ведь мы знаем что истинный аплифт 5%!, то есть если мы что-то и поймаем, мы в среднем завысим эффект в 4.6 раз)
Разбор того-же самого в посте на LI
2. Судя по описанию теста, такое изменение тестировали на разных страницах и взяли ту, где стало круто - наше любимое множественное сравнение! Никаких поправок на него не делалось
3. Optimizely еще не раскатали тест на всех - это красный флаг, значит что-то их самих не устраивает
4. Самое клевое - Кнопка на ряде мобил и девайсов не показывалась
The button does not seem to show up on smaller viewpoints
If the user doesn’t see the copy, any treatment effect is likely to be diluted, as the treatment effect for those users is zero. It isn’t clear from the description whether this was a PC-only test or if triggering was employed to limit to users who actually saw the button.
То есть возникает вопрос как еще трактовать то результаты, насколько они репрезентативны и для какой группы
Итог - хороший разбор от Рона
Считаю ошибкой со стороны Optimizely заявлять о таких результатах сразу. По хорошему, после того что они увидели нужно было делать раскатку на всех, а через некоторое время катить обратный эксперимент и оценивать еще раз
Вышло записанное некоторое время назад интервью
Обсуждаем:
1.Артура Человека и мои душевные терзания по этому поводу
2. Игоря и стартапы, Прекрасную Мета Россию будущего
3. Сильных пацанов
4. Кто важнее - старший или главный начальник
5. Этику AI
6.Краткий период в жизни, в который можно нормально поработать - и многое другое
21 июля 18:00 по мск “Валерий Бабушкин, Арсений Кравченко: Интервью с авторами Machine Learning System Design”
Читать полностью…Подоспело видео из которого вы узнаете:
Кто сильнее: Терминатор или Робокоп? МГУ или Hard ML? А также самую страшную тайну Aliexpress
Небольшой Анонс. 14 июля в 19:30 (GMT+3) Валерий проведёт System Design интервью в прямом эфире! На повестке — дизайн системы сети заправок и ритейл-магазинов при ней. Ждём вас на трансляции :)
Читать полностью…Понравилась картинка из рассылки pragmatic engineer
Во многом фреймворк перемежается с тем что я рассказывал здесь. Да и сам автор скорее пользуется им, однако такая вещь как автономность/независимость тоже очень влияет, особенно на первых 3-4 уровнях