Forwarded from Data notes
YouTube
Обрабатываем терабайты данных в кредитном скоринге / Евгений Смирнов (Альфа Банк)
Приглашаем на конференцию Saint HighLoad++ 2025, которая пройдет 23 и 24 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
Профессиональная конференция разработчиков высоконагруженных систем Saint…
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
Профессиональная конференция разработчиков высоконагруженных систем Saint…
Forwarded from Data notes
Algorithms You Should Know Before System Design Interviews - YouTube
https://www.youtube.com/watch?v=xbgzl2maQUU
https://www.youtube.com/watch?v=xbgzl2maQUU
YouTube
Algorithms You Should Know Before System Design Interviews
Get a Free System Design PDF with 158 pages by subscribing to our weekly newsletter: https://bytebytego.ck.page/subscribe
Animation tools: Adobe Illustrator and After Effects.
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd…
Animation tools: Adobe Illustrator and After Effects.
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd…
Forwarded from Data notes
Хабр
Почему анализ ошибок – это начало разработки ML системы, а не конец?
Мы школа онлайн-образования, которая уже три года делает курсы по Data Science и разработке. Одна из наших целей — собрать коммьюнити классных специалистов и делиться крутыми и неочевидными знаниями....
Forwarded from Data notes
Позвали пособесить двух ребят на позиции DS в нигерийский банк. Да, там у них это тоже есть :) Открываю резюме первого, написано все довольно неплохо, заявлено 6 лет релевантного опыта (почти как у меня), линкедин профиль пафосный с кучей контактов и активностей, много разного на гитхабе (правда, код не посмотрел, а зря, как потом выяснилось) думаю, интересно будет поговорить. На деле оказалось, что из 6 лет опыта там только 2-3, про проекты рассказать подробнее, чем описано в резюме, не смог , а когда стали спрашивать по технике что-то вроде "как строится ROC кривая и какой смысл у площади под ней) парень не стесняясь включенной камеры стал вбивать вопросы в гугл/чатЖПТ и зачитывать ответы...задачку на кодинг решил не давать. Ну ладно, разные люди бывают, подумал я и подключился к звонку со следующим кандидатом. Но чуда не случилсоь и второй коллега вел себя абсолютно аналогично.
Спрашиваю нанимающего менеджера, как так, на что они расчитывают, ну допустим ты как-то незаметно считерил и получил оффер, а как потом работать?) На что он ответил, что уже три года они ищут внутренних кандидатов по требованию руководства (сейчас там в основном внешники из других стран на аналогичных позициях работают), но наняли только одного адекватного человека, все остальные ведут себя примерно так как описано выше:)
Современные технологии позволяют пройти собеседование по видео практически не имея опыта (тут можно пофантазировать, как именно, допустим чел не печатает, а у ему просто кто-то диктует ответ во второй наушник и т.д.) и получить оффер. У индусов вот целая индустрия есть, где за вас сделают все этапы от сочинения несуществующего опыта до прохождения интервью за вас. Особенно это стало актуально сейчас во время возросшей конкуренции. Похоже, что background checking становится одним из наиболее критических этапов найма.
Спрашиваю нанимающего менеджера, как так, на что они расчитывают, ну допустим ты как-то незаметно считерил и получил оффер, а как потом работать?) На что он ответил, что уже три года они ищут внутренних кандидатов по требованию руководства (сейчас там в основном внешники из других стран на аналогичных позициях работают), но наняли только одного адекватного человека, все остальные ведут себя примерно так как описано выше:)
Современные технологии позволяют пройти собеседование по видео практически не имея опыта (тут можно пофантазировать, как именно, допустим чел не печатает, а у ему просто кто-то диктует ответ во второй наушник и т.д.) и получить оффер. У индусов вот целая индустрия есть, где за вас сделают все этапы от сочинения несуществующего опыта до прохождения интервью за вас. Особенно это стало актуально сейчас во время возросшей конкуренции. Похоже, что background checking становится одним из наиболее критических этапов найма.
💯2
Forwarded from Data notes
Прочел Credit Risk Scorecards: Developing and Implementing Intelligent Credit Scoring. Несмотря на почтенный возраст (книга вышла в 2005 году), оказалась невероятно полезной для погружения в кредитный скоринг. Поскольку сам сейчас работаю над задачами, связанными со скорингом, в очередной раз убеждаюсь, что основа успеха data based products - это понимание специфики индустрии, и только потом технологии. Для себя узнал много неочевидных фишек, которые специфичны именно для скоринга, которые скорее всего будут упущены, если проектом заниматься без знания этой специфики даже будучи технологическим ниндзя. Этот тренд уже очевиден при поиске работы: приоритет отдается кандидатам с опытом именно в конкретной индустрии, а не тем, у кого в разделе Stack в резюме перечислено больше всего хитроумных названий и аббревиатур.
Forwarded from Artem Ryblov’s Data Science Weekly
Designing Machine Learning Systems by Chip Huyen
Machine learning systems are both complex and unique. Complex because they consist of many different components and involve many different stakeholders. Unique because they're data dependent, with data varying wildly from one use case to the next. In this book, you'll learn a holistic approach to designing ML systems that are reliable, scalable, maintainable, and adaptive to changing environments and business requirements.
Author Chip Huyen, co-founder of Claypot AI, considers each design decision--such as how to process and create training data, which features to use, how often to retrain models, and what to monitor--in the context of how it can help your system as a whole achieve its objectives. The iterative framework in this book uses actual case studies backed by ample references.
This book will help you tackle scenarios such as:
- Engineering data and choosing the right metrics to solve a business problem
- Automating the process for continually developing, evaluating, deploying, and updating models
- Developing a monitoring system to quickly detect and address issues your models might encounter in production
- Architecting an ML platform that serves across use cases
- Developing responsible ML systems
Link: https://www.oreilly.com/library/view/designing-machine-learning/9781098107956/
Navigational hashtags: #armknowledgesharing #armbooks
General hashtags: #machinelearningsystemdesign #systemdesign #machinelearning #ml #designingmachinelearningsystems
@data_science_weekly
Machine learning systems are both complex and unique. Complex because they consist of many different components and involve many different stakeholders. Unique because they're data dependent, with data varying wildly from one use case to the next. In this book, you'll learn a holistic approach to designing ML systems that are reliable, scalable, maintainable, and adaptive to changing environments and business requirements.
Author Chip Huyen, co-founder of Claypot AI, considers each design decision--such as how to process and create training data, which features to use, how often to retrain models, and what to monitor--in the context of how it can help your system as a whole achieve its objectives. The iterative framework in this book uses actual case studies backed by ample references.
This book will help you tackle scenarios such as:
- Engineering data and choosing the right metrics to solve a business problem
- Automating the process for continually developing, evaluating, deploying, and updating models
- Developing a monitoring system to quickly detect and address issues your models might encounter in production
- Architecting an ML platform that serves across use cases
- Developing responsible ML systems
Link: https://www.oreilly.com/library/view/designing-machine-learning/9781098107956/
Navigational hashtags: #armknowledgesharing #armbooks
General hashtags: #machinelearningsystemdesign #systemdesign #machinelearning #ml #designingmachinelearningsystems
@data_science_weekly
👍2
Forwarded from Data notes
Пожалуй один из самых полезных курсов, пройденных мной в прошлом году, стал
- Python 3: Deep Dive (Part 1 - Functional)
- Python 3: Deep Dive (Part 2 - Iterators, Generators)
- Python 3: Deep Dive (Part 3 - Dictionaries, Sets, JSON)
- Python 3: Deep Dive (Part 4 - OOP)
Сейчас невероятное количество действительно годных курсов по Python именно для начинающих, чего я никак не могу сказать про материалы именно для углубленного изучения. И этот курс именно то, чего я так долго искал, перепробовав и забросив в начале пути достаточно много других материалов. Прелесть этого курса в том, что в нем нет упора на какую-либо конкретную область применения или бибиотеки, вместо этого идет подробный разбор по косточкам именно стандартных конструкций и объектов языка + части стандартной библиотеки, что мне помогло ответить на огромное количество вопросов, которые были для меня белыми пятнами до этого. Наконец-то у меня создалась некая целостная картина о том, как (и почему именно так!) устроены основные типы данных, функции, декораторы, генераторы, классы, модули. Есть практические занятия с подробным разбором решений.
Могу уверенно сказать, что курс полностью закрывает все вопросы (за исключением, пожалуй, асинхронщины) с интервью на middle+/senior Data Scientist по устройству Python (проверено лично и неоднократно)
Ну и бонусом для занимающихся data science будет то, что все лекции и демо проводятся в старом добром Jupyter Notebook :)
Python 3: Deep Dive от Fred Baptiste. Курс настолько большой, что разбит на 4 отдельных курса на Udemy:- Python 3: Deep Dive (Part 1 - Functional)
- Python 3: Deep Dive (Part 2 - Iterators, Generators)
- Python 3: Deep Dive (Part 3 - Dictionaries, Sets, JSON)
- Python 3: Deep Dive (Part 4 - OOP)
Сейчас невероятное количество действительно годных курсов по Python именно для начинающих, чего я никак не могу сказать про материалы именно для углубленного изучения. И этот курс именно то, чего я так долго искал, перепробовав и забросив в начале пути достаточно много других материалов. Прелесть этого курса в том, что в нем нет упора на какую-либо конкретную область применения или бибиотеки, вместо этого идет подробный разбор по косточкам именно стандартных конструкций и объектов языка + части стандартной библиотеки, что мне помогло ответить на огромное количество вопросов, которые были для меня белыми пятнами до этого. Наконец-то у меня создалась некая целостная картина о том, как (и почему именно так!) устроены основные типы данных, функции, декораторы, генераторы, классы, модули. Есть практические занятия с подробным разбором решений.
Могу уверенно сказать, что курс полностью закрывает все вопросы (за исключением, пожалуй, асинхронщины) с интервью на middle+/senior Data Scientist по устройству Python (проверено лично и неоднократно)
Ну и бонусом для занимающихся data science будет то, что все лекции и демо проводятся в старом добром Jupyter Notebook :)
Udemy
Python 3: Deep Dive (Part 2 - Iterators, Generators)
Sequences, Iterables, Iterators, Generators, Context Managers
❤1
Forwarded from Data notes
Насущная проблема инвесторов из РФ: лимит на продажу заблокированных активов 100 тысяч рублей, превышать который нельзя. Если таковых на бОльшую сумму, то возникает вопрос, какие активы продать, чтобы использовать лимит по-максимуму? С ответом поможет линейное программирование!
Пример использования: задаем наш лимит, количества бумаг и цену каждой. На выходе получим количества бумаг, для которых нужно подать заявку на продажу, чтобы использовать лимит по максимуму:
from ortools.linear_solver import pywraplp
def maximize_spending(L, prices, stock):
# Create a linear solver object
solver = pywraplp.Solver.CreateSolver('SCIP')
# Define variables
quantities = [solver.IntVar(0, stock[i], f'quantity_{i}') for i in range(len(prices))]
# Define objective function: maximize the total spending
objective = solver.Objective()
for i in range(len(prices)):
objective.SetCoefficient(quantities[i], prices[i])
objective.SetMaximization()
# Add constraint: total spending should not exceed the limit M
constraint_total_spending = solver.Constraint(0, L)
for i in range(len(prices)):
constraint_total_spending.SetCoefficient(quantities[i], prices[i])
# Solve the problem
status = solver.Solve()
if status == pywraplp.Solver.OPTIMAL:
total_spending = sum(quantities[i].solution_value() * prices[i] for i in range(len(prices)))
items_quantities = {f'I{i+1}': int(quantities[i].solution_value()) for i in range(len(prices))}
return total_spending, items_quantities
else:
return None
Пример использования: задаем наш лимит, количества бумаг и цену каждой. На выходе получим количества бумаг, для которых нужно подать заявку на продажу, чтобы использовать лимит по максимуму:
# Money limit
L = 100000
# Prices of items I1, I2, I3, I4
prices = [709.18, 11851.10, 1528.21, 9395.44]
# Quantities of items in stock Q1, Q2, Q3, Q4
stock = [17, 4, 19, 12]
total_spending, items_quantities = maximize_spending(L, prices, stock)
if total_spending is not None:
print("Maximum spending:", total_spending)
print("Items quantities:", items_quantities)
else:
print("No solution found.")Forwarded from Data notes
На текущем проекте довелось заниматься поиском кандидатов в антифрод правила и в правила отказа для кредитного скоринга в новых источниках данных. Описал подходы, которые помогли, в заметке
Medium
High-value segments detection approaches in data analysis
In the context of binary classification tasks, a small group of objects with a very high mean target value is often called a “high-value…
Forwarded from Data notes
Долгое время удивлялся, почему мне попадается так мало проектов, где по полной используется sklearn.Pipeline. Под этим я имею в виду не игрушечные примеры из 2-3 шагов, где первый PCA или OHE, а второй - логрег или random forest, а нормальный пайплайн из десятка шагов с отбором и преобразованием признаков из реальных задач, например, шаг, где детектятся группы сильно кореллирующих фичей, затем из каждой группы оставляется только одна, самая сильная. Или, когда на этапе моделирования катбустом мы делаем несколько итераций с отбрасыванием фичей с нулевой значимостью. Мы итак делаем эти шаги, так почему бы не сделать их частью пайплайна? Да, стандартные решения из sklearn вряд ли подойдут, поэтому круто научиться их делать самому. Собрал все свои кастомные трансформеры, совместимые с sklearn.Pipeline, положил их в репу и описал в заметке, думаю, будет полезно (ссылка на репу)
Medium
Custom transformers for Scikit-Learn Pipelines
I think that Scikit-Learn pipelines power still being underrated today as I see its usage pretty rarely in ML projects that I faced with…
Forwarded from Data notes
Не самые стандартные вопросы по классическому МЛ, которые попадались на собесах за последнее время:
- Почему не стоит в проде использовать
- Как вычислить уверенность
- Как меняются bias и variance в
- В чем принципиальное отличие логрега из
- В чем различия между дискриминативными и генеративными моделями? (речь про классический МЛ)
- Чем обусловлена разная форма распределения скоров
- Почему нейросети могут генерировать признаки автоматически, а GBDT - нет?
- Какие преимущества дает знание второй производной от функции потерь в GBDT?
- Для чего (и в каких случаях) необходима калибровка ответов бинарного классификатора? А когда можно обойтись без нее?
- Почему не стоит в проде использовать
RandomForest из sklearn? Какие есть альтернативы, если все-таки нужнен именно RandomForest?- Как вычислить уверенность
RandomForest в прогнозе при решении задачи регрессии?- Как меняются bias и variance в
RandomForest при увеличении числа деревьев? А в GBDT?- В чем принципиальное отличие логрега из
statsmodels и из sklearn?- В чем различия между дискриминативными и генеративными моделями? (речь про классический МЛ)
- Чем обусловлена разная форма распределения скоров
LogisticRegression , SVC, RandomForest?- Почему нейросети могут генерировать признаки автоматически, а GBDT - нет?
- Какие преимущества дает знание второй производной от функции потерь в GBDT?
- Для чего (и в каких случаях) необходима калибровка ответов бинарного классификатора? А когда можно обойтись без нее?
Forwarded from Data notes
Еще вопросики по Python:
- Когда GIL не помеха для multithreading?
- В чем разница между multithreading и async? А что у них общего?
- Как так получилось, что в Python есть GIL, который создает ограничения при работе с multithreading, когда в других языках, например, C#, многопоточность спокойно работает безо всяких GIL?
- Приведите известные примеры применения множественного наследования
- Про ускорение вычислений. Что такое numba, когда она может помочь ускорить выполнение кода, а когда нет? Аналогичный вопрос про Cython.
- Приведите примеры из Ваших проектов, где примененялись декораторы и генераторы. Как связаны генераторы и async?
- Какие объекты Python хранятся в стеке (stack), а какие - в куче (heap)?
- Когда GIL не помеха для multithreading?
- В чем разница между multithreading и async? А что у них общего?
- Как так получилось, что в Python есть GIL, который создает ограничения при работе с multithreading, когда в других языках, например, C#, многопоточность спокойно работает безо всяких GIL?
- Приведите известные примеры применения множественного наследования
- Про ускорение вычислений. Что такое numba, когда она может помочь ускорить выполнение кода, а когда нет? Аналогичный вопрос про Cython.
- Приведите примеры из Ваших проектов, где примененялись декораторы и генераторы. Как связаны генераторы и async?
- Какие объекты Python хранятся в стеке (stack), а какие - в куче (heap)?
Forwarded from Data notes
Стало попадаться много высказываний вроде "ах, вот N лет назад чтобы устроиться в ДС/МЛ достаточно было сказать, что умеешь писать фит-предикт в ноутбучке и тебе апплодировали стоя и брали на работу с огромной зарплатой. А вот сейчас с джунов три шкуры на собеседованиях дерут, на которые еще и не пробиться никак сквозь тысячи откликов."
Вспомнил, как я искал свою первую работу в сфере в 2016-17 годах. На тот момент диплом, основанный на решении задачи из реальной жизни с помощью МЛ (прогнозирование стоимости ремонта оборудования) был уже фактически написан и оставалась только формальная защита, что сильно пригодилось при обсуждении опыта и навыков на собесах.
Из фейлов - общение с tutu.ru на джуна-аналитика. Вопросы по основам SQL, которые зашли, а затем последовала задача, где нужно было определить оптимальное кол-во СМС-напоминалок клиенту, чтобы он продолжил покупку билетов на сайте, если он вдруг забросил процесс по каким-то причинам. Наивно верящий тогда в то, что МЛ - это серебрянная пуля, я начал бормотать что-то про выборку, которую нам надо собрать, пробовать разное кол-во СМС ну и так далее. Естественно, решение было гораздо проще. Справедливый отказ как итог.
Из успехов - мой тогдашний шеф зареферил меня в известный рекламный холдинг на data scientist intern. Они только начали набирать команду, в которой еще никого не было, но главное, что они точно знали, какие задачи нужно было решать и кто именно им нужен, что далеко не всегда верно даже сегодня!
Собственно, собес:
- Две задачи по терверу, одна из которых нередко попадается и сейчас. Вторая на смесь комбинаторики с тервером на расчет агрегированных показателей ТВ охватов. Простой вариант затащил, а сложный - облом, причем как оказалось потом, эту задачу они сами не могли решить за вменяемое время (спойлер: потом мне ее как раз и дали в течение первых месяцев)
- Кодинг на бумаге: обход бинарного дерева в глубину. Кажется ерундой, но позиция стажерская да и без подготовки далеко не все мидлы осилят (сужу по опыту собесов уже со стороны собеседующего)
- Поскольку питона тогда в отделе еще и в помине не было, основным языком разработки был C# и требовалось знать и его, чтобы в первое время интегрировать наработки в существующую систему. C# на тот момент я уже год как изучал в универе, поэтому здесь тоже все было ок
- Вопросы по дипломному проекту. Как собирал данные, как строил модель, как валидировал и как это потом можно будет внедрить. Не очень-то отличается от того, что спрашивают сегодня, а это, еще раз напомню, стажерская позиция.
- Какие задачи интересны, чем хотелось бы заниматься .. бихейв. Здесь тоже сошлись
В итоге проработал в этой компании больше 3 лет и очень благодарен людям за наставничество.
Вспомнил, как я искал свою первую работу в сфере в 2016-17 годах. На тот момент диплом, основанный на решении задачи из реальной жизни с помощью МЛ (прогнозирование стоимости ремонта оборудования) был уже фактически написан и оставалась только формальная защита, что сильно пригодилось при обсуждении опыта и навыков на собесах.
Из фейлов - общение с tutu.ru на джуна-аналитика. Вопросы по основам SQL, которые зашли, а затем последовала задача, где нужно было определить оптимальное кол-во СМС-напоминалок клиенту, чтобы он продолжил покупку билетов на сайте, если он вдруг забросил процесс по каким-то причинам. Наивно верящий тогда в то, что МЛ - это серебрянная пуля, я начал бормотать что-то про выборку, которую нам надо собрать, пробовать разное кол-во СМС ну и так далее. Естественно, решение было гораздо проще. Справедливый отказ как итог.
Из успехов - мой тогдашний шеф зареферил меня в известный рекламный холдинг на data scientist intern. Они только начали набирать команду, в которой еще никого не было, но главное, что они точно знали, какие задачи нужно было решать и кто именно им нужен, что далеко не всегда верно даже сегодня!
Собственно, собес:
- Две задачи по терверу, одна из которых нередко попадается и сейчас. Вторая на смесь комбинаторики с тервером на расчет агрегированных показателей ТВ охватов. Простой вариант затащил, а сложный - облом, причем как оказалось потом, эту задачу они сами не могли решить за вменяемое время (спойлер: потом мне ее как раз и дали в течение первых месяцев)
- Кодинг на бумаге: обход бинарного дерева в глубину. Кажется ерундой, но позиция стажерская да и без подготовки далеко не все мидлы осилят (сужу по опыту собесов уже со стороны собеседующего)
- Поскольку питона тогда в отделе еще и в помине не было, основным языком разработки был C# и требовалось знать и его, чтобы в первое время интегрировать наработки в существующую систему. C# на тот момент я уже год как изучал в универе, поэтому здесь тоже все было ок
- Вопросы по дипломному проекту. Как собирал данные, как строил модель, как валидировал и как это потом можно будет внедрить. Не очень-то отличается от того, что спрашивают сегодня, а это, еще раз напомню, стажерская позиция.
- Какие задачи интересны, чем хотелось бы заниматься .. бихейв. Здесь тоже сошлись
В итоге проработал в этой компании больше 3 лет и очень благодарен людям за наставничество.
VK
ITworks для аналитиков. Запись со стены.
Не забыли еще нашу рубрику #кейсыаналитика? 😉
Смотрите, какую задачку мы нашли у Яндекса:
Смотрите полностью ВКонтакте.
Смотрите, какую задачку мы нашли у Яндекса:
Смотрите полностью ВКонтакте.
#recommenders #google #youtube #wizards
Задумался о реализации системы рекомендаций рекламы в ютубе.
Ожидания: топовые дата сайентисты гугла наверняка сделают что-то крутое и интересное.
Реальность: 3 задроченных ролика про то как увольняют Jira, какую-то палестинскую вымогательницу на фоне руин, какие-то блядские игры в браузере. всё это крутится в цикле.
А, еще сервис составления опросов и сервис AI-войсоверов. Всё.
Убрать набившее оскомину рекламное объявление невозможно. Технически кнопка такая есть, но она по факту ничего не меняет.
Спасибо, что хоть ублюдков, продвигавших какие-то финансовые махинации на фоне выступлений Маска, вышвырнули (надолго ли?).
Я, наверное, чего-то не понимаю, но зачем мне показывать одну и ту же рекламу сотни и тысячи раз?
Задумался о реализации системы рекомендаций рекламы в ютубе.
Ожидания: топовые дата сайентисты гугла наверняка сделают что-то крутое и интересное.
Реальность: 3 задроченных ролика про то как увольняют Jira, какую-то палестинскую вымогательницу на фоне руин, какие-то блядские игры в браузере. всё это крутится в цикле.
А, еще сервис составления опросов и сервис AI-войсоверов. Всё.
Убрать набившее оскомину рекламное объявление невозможно. Технически кнопка такая есть, но она по факту ничего не меняет.
Спасибо, что хоть ублюдков, продвигавших какие-то финансовые махинации на фоне выступлений Маска, вышвырнули (надолго ли?).
Я, наверное, чего-то не понимаю, но зачем мне показывать одну и ту же рекламу сотни и тысячи раз?
#binning #optbinning #papers
Приятное, лёгкое для чтения интро в библиотеку OptBinning. А вот уже публикация посолиднее, с указанием алгоритмов.
Мне кажется, для задач регрессии уж точно можно уменьшить потерю информации, если заменять бин не константой (например, WoE бина), а какой-то линейной функцией от константы и значений точки. Даже странно, почему это никто еще не рассмотрел.
https://medium.com/@makhija.amit/mastering-optimal-binning-with-optbinning-a-comprehensive-guide-c6cf52572d64
Приятное, лёгкое для чтения интро в библиотеку OptBinning. А вот уже публикация посолиднее, с указанием алгоритмов.
Мне кажется, для задач регрессии уж точно можно уменьшить потерю информации, если заменять бин не константой (например, WoE бина), а какой-то линейной функцией от константы и значений точки. Даже странно, почему это никто еще не рассмотрел.
https://medium.com/@makhija.amit/mastering-optimal-binning-with-optbinning-a-comprehensive-guide-c6cf52572d64
Medium
Mastering Optimal Binning with Optbinning: A Comprehensive Guide
Binning is a powerful data preprocessing technique used in statistics, data analysis, and machine learning to group continuous data into…
🔥1
#scoring #binning #woe #gini #psi
Вот еще была интересная либа vtb_scorekit.
"Алгоритм работы этого метода следующий:
Ищется разбиение на максимальное кол-во бинов. Для этого может использоваться либо наш собственный алгоритм, основанный на деревьях, либо библиотека optbinning.
Далее в найденном биннинге проводятся проверки
на тренд WOE — он может быть либо монотонным, либо V (или /\)‑образным, но во втором случае Gini переменной должно быть выше относительно монотонного тренда на заданную в параметрах величину. Такая дополнительная проверка позволяет исключить случайные отклонения от монотонности в трендах
стабильность тренда WOE — тренд должен сохраняться на всех тестовых сэмплах, и доверительные интервалы WOE в соседних бинах не должны пересекаться
стабильность Gini — Gini на всех тестовых сэмплах не должно сильно отличаться относительно обучающей выборки и все значения должны попадать в доверительные интервалы, рассчитанные бутстрэпом.
Если хотя бы одна проверка не пройдена, то максимальное число бинов уменьшается, и процедура повторяется до тех пор, пока мы не получим стабильный биннинг, удовлетворяющий всем заданным критериям.
После этого мы можем заново провести поиск уже с другим набором параметров, например, другим методом или другим критерием расщепления дерева, а затем из всех найденных стабильных биннингов автоматически выбирается оптимальный с наилучшим Gini.
В результате всех этих расчетов мы получаем и тестируем десятки (а иногда и сотни) биннингов для каждой переменной и выбираем из них лучший. Благодаря тому, что расчет каждой переменной идет полностью независимо от остальных, можно проводить все эти вычисления параллельно и, выделив большое число ядер для расчета, получать результат достаточно быстро."
Тут уже есть из коробки многофакторный анализ, проводящийся в 4 этапа:
"Сначала будут отсечены слабые и не стабильные факторы по заданным трешхолдам Gini и PSI факторов
Затем будет проведен корреляционный анализ и исключены коррелирующие факторы, либо как альтернатива этот шаг может быть пропущен, а коррелирующие факторы могут исключаться динамически по мере отбора факторов в модель. Эта опция обычно позволяет получить немного более сильную модель, но вычислительные затраты возрастают на порядок.
На третьем этапе проводится итерационный отбор факторов, который может отбирать переменные как для максимизации заданной метрики, так и по p-value переменных.
В самом конце исключаются малозначимые факторы и вошедшие в модель со знаком, противоречащим бизнес-логике."
https://habr.com/ru/companies/vtb/articles/743392/
Вот еще была интересная либа vtb_scorekit.
"Алгоритм работы этого метода следующий:
Ищется разбиение на максимальное кол-во бинов. Для этого может использоваться либо наш собственный алгоритм, основанный на деревьях, либо библиотека optbinning.
Далее в найденном биннинге проводятся проверки
на тренд WOE — он может быть либо монотонным, либо V (или /\)‑образным, но во втором случае Gini переменной должно быть выше относительно монотонного тренда на заданную в параметрах величину. Такая дополнительная проверка позволяет исключить случайные отклонения от монотонности в трендах
стабильность тренда WOE — тренд должен сохраняться на всех тестовых сэмплах, и доверительные интервалы WOE в соседних бинах не должны пересекаться
стабильность Gini — Gini на всех тестовых сэмплах не должно сильно отличаться относительно обучающей выборки и все значения должны попадать в доверительные интервалы, рассчитанные бутстрэпом.
Если хотя бы одна проверка не пройдена, то максимальное число бинов уменьшается, и процедура повторяется до тех пор, пока мы не получим стабильный биннинг, удовлетворяющий всем заданным критериям.
После этого мы можем заново провести поиск уже с другим набором параметров, например, другим методом или другим критерием расщепления дерева, а затем из всех найденных стабильных биннингов автоматически выбирается оптимальный с наилучшим Gini.
В результате всех этих расчетов мы получаем и тестируем десятки (а иногда и сотни) биннингов для каждой переменной и выбираем из них лучший. Благодаря тому, что расчет каждой переменной идет полностью независимо от остальных, можно проводить все эти вычисления параллельно и, выделив большое число ядер для расчета, получать результат достаточно быстро."
Тут уже есть из коробки многофакторный анализ, проводящийся в 4 этапа:
"Сначала будут отсечены слабые и не стабильные факторы по заданным трешхолдам Gini и PSI факторов
Затем будет проведен корреляционный анализ и исключены коррелирующие факторы, либо как альтернатива этот шаг может быть пропущен, а коррелирующие факторы могут исключаться динамически по мере отбора факторов в модель. Эта опция обычно позволяет получить немного более сильную модель, но вычислительные затраты возрастают на порядок.
На третьем этапе проводится итерационный отбор факторов, который может отбирать переменные как для максимизации заданной метрики, так и по p-value переменных.
В самом конце исключаются малозначимые факторы и вошедшие в модель со знаком, противоречащим бизнес-логике."
https://habr.com/ru/companies/vtb/articles/743392/
Хабр
Фреймворк vtb_scorekit для разработки интерпретируемых скоринговых моделей
Всем привет! Меня зовут Сакович Руслан, я занимаюсь корпоративным риск-моделированием, и сегодня расскажу о построении скоринговых моделей. Эти модели позволяют оценивать кредитные риски и являются...
👍1🔥1
#abtesting
Про ухудшающий эксперимент интересно, и про опасность подмены метрик, как и излишнего оптимизма. "Катить по серому" - забавно.
https://www.youtube.com/watch?v=gMx-juYkNCw
Про ухудшающий эксперимент интересно, и про опасность подмены метрик, как и излишнего оптимизма. "Катить по серому" - забавно.
https://www.youtube.com/watch?v=gMx-juYkNCw
YouTube
A/B тесты как способ развития продукта
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.