Интересное что-то
517 subscribers
2.71K photos
252 videos
138 files
4.51K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Artificial stupidity
#ltv #AB #statistics

Проведение A/B тестов над LTV.

Учитывая, что LTV - метрика с достаточно долгим сроком прогнозирования (от месяцев до лет), очевидным образом у нас может возникнуть вопрос - а как это тестировать то? Кажется, что при скорости A/B тестов 1 раз в полгода-год, конкуренты легкой лунной походкой обойдут нас на всех поворотах и вырвутся в лидеры. Потому надо что-то делать. 

В принципе, проблему A/B тестирования LTV можно свести к более общей проблеме оценки Long-term эффектов. Этой проблеме даже посвятили отдельный раздел в paper’е Рона Кохави и Лукаса Веермеера “Top Challenges from the first Practical Online Controlled Experiments Summit”. Давайте посмотрим на предлагаемые индустрией решения этой проблемы.

Итак, что же нам предлагают исследователи из разных компаний:

- Отложенная выборка.
Нам предлагается “отложить” на достаточно долгое время некую часть пользователей, на которую мы не будем применять воздействий. В принципе, подход рабочий (мы на одном из предыдущих мест работы его применяли), но сложно реализуемый, если у вас есть хоть какой-то сетевой эффект. Например, часть пользователей будет видеть рекомендательную систему и расскажет своим друзьям. А у них такой системы нет. И тогда поддержке придется туго, если они захотят объяснить, отчего же такое произошло.
Вторая проблема - ротация пользователей. Если мы все не решимся “замораживать” пользователя на год, то у нас должна появиться логика ротации пользователей, то есть перемещения их в “заморозку”, последующего возвращения и правил попадания в эту группу, что может быть не так просто.

- Прокси-метрики.
Простой вариант - мы смотрим не на основную метрику, а на какой-то промежуточный показатель, который, как нам кажется, хорошо определяет поведение основного показателя. Например, для LTV это может быть retention, или user-engagement. То есть, вовлеченность пользователя может неплохо отражать его склонность тратить на нас деньги.
Но минус тут очевидный - “correlation may not imply causation”. Т.к. зависимость между метриками может и не быть реальной причинно-следственной связью. И тогда выводы на proxy не будут вести к улучшению главного показателя. 

- Моделирование на основании частичных данных.
Такой подход используется в Google. Давайте запускать кусочки эксперимента через некоторые периоды времени. И потом сравнивать, как постепенно затухает наша метрика при удалении во времени от эксперимента. А дальше мы можем выучить какую-либо кривую, которая аппроксимирует наше затухание, и учитывать это при предсказании эффектов от экспериментов.
Тут тоже не без проблем. Процесс такого запуска весьма непростой и сделать очень большие временные лаги между запусками вряд ли выйдет. Плюс, у нас добавляется еще и моделирующая составляющая, то есть тут нужно все делать аккуратно. Ну и не забывать о смещении, ибо есть вероятность обучить что-то и нарваться на смещенные предсказания.

- Суррогаты.
Можно сказать, что это своего рода расширение над прокси-метриками. В данном случае, мы ищем статистические суррогаты, которые находятся в графе причинно-следственных связей между treatment и outcome. И, что главное, имеют следующее свойство: treatment и outcome условно независимы при условии суррогата. При этом, нам не обязательно использовать только одну прокси-метрику для построения суррогата - мы можем построить вектор прокси-метрик, который будет иметь требуемое свойство.
Соответственно, из минусов у нас то, что нам надо строить какую-то причинно следственную модель, отбирать прокси-метрики в суррогат, пытаясь учесть все нужные прокси (что не так просто, как может показаться на первый взгляд).

Чтобы чуть углубитьcя в тему, давайте рассмотрим какой-нибудь из вариантов решения проблемы оценки Long-term эффектов. В следующей заметке я опишу использование статистических суррогатов на основе статьи от LinkedIn.
#Tip26.1 #EDA
Для понимания как строится PDP попробуем построить его в ручную.
Алгоритм такой:
- Выбираем какую-нибудь фичу
- Вычисляем все ее уникальные значения (для непрерывной фичи можно взять сколько-то квантильных значений)
- Проходимся по каждому из них и:
- В исходном датасете для нашей фичи заменяем все значения на одно - текущее
- Делаем предсказание
- Усредняем полученные предсказания
И так для каждого уникального значения. В итоге получаем набор пар: (уникальное значение - средний предикт)
По смыслу мы как бы спрашиваем модель: а что если бы фича принимала бы только одно значение из возможного диапазона (при этом другие фичи не трогаем) - какими тогда стали бы предсказания?
- Выводим их на графике.

З.Ы. Также для демонстрации влияния на отдельные примеры выведем случайные 50 записей. Такой график уже будет называться Individual Conditional Expectation (ICE). Он позволяет увидеть какие-либо аномалии - как отдельные записи отклоняются от среднего значения.

# Считаем PDP
col = 'grade'
uniq_values = sorted(X[col].unique())
preds = {}
for v in uniq_values:
X_copy = X.copy()
X_copy[col] = v
preds[v] = model.predict(X_copy)
preds = pd.DataFrame(preds)
pdp = preds.mean()

# Выбираем случайные 50 записей
samp = preds.sample(50).copy()
samp = samp.reset_index().melt('index', var_name='cols', value_name='vals')

# Строим графики
plt.figure(figsize=(13,6))
sns.lineplot(data=samp, x='cols', y='vals', hue='index', legend=False, palette='GnBu', alpha=0.2)
sns.lineplot(x=pdp.index, y=pdp, color='red', linewidth=2)
plt.xlabel(col)
plt.ylabel('PDP');
#visualization
Гайд для начинающих в matplotlib
Из https://t.iss.one/proudobstvo
Имхо актуально во всех направлениях

Кому за что платят:
Джун:
— за стремление оперативно находить знания, необходимые для решения задач.
— за правильные вопросы, если знания не нашёл.

Мидл:
— за широкий круг знаний, применяемых при решении широкого круга задач.

Синьёр:
— за глубинные знания, применяемые при решении узкого круга задач.
— за умение создавать знания после решения ранее нерешаемых задач.
— за правильные ответы на вопросы.

Лид:
— за уверенность и умение решать вопросы, а не задавать их.
— за знание, как умножать знания в команде.
— за умение не делать задачи, которые умеют делать другие.
Полезные блоги про визуализацию данных.

Поделюсь несколькими хорошими ресурсами по визу. Их точно намного больше, всего знать не могу. Но вот, что читаю и смотрю:

1. https://www.perceptualedge.com/blog/
ENG. Блог Стивена Фью. Это самый известный в мире дядя в сфере бизнес-инфографики. Он не так часто пишет, но есть архив, в нем много всего интересного, полезного, умного. Почитайте, не пожалеете)

2. https://blog.datawrapper.de/
ENG. Блог ребят из Datawrapper. Очень простые, понятные и полезные статьи про виз-ию данных. Много примеров. Разбирают ошибки, что нужно учитывать при построении разных диаграмм, как работать с цветом, про него прям много материала.

3. https://filwd.substack.com/
ENG. Пока не большой, но полезный блог Энрико Бертини. Это исследователь в области виз-ии данных и визуальной аналитики.

4. https://www.storytellingwithdata.com/blog
ENG. Не помню, как нашла этот блог. Но очень понятные и полезные статьи. Много примеров и разборов.

5. https://eagereyes.org/
ENG. Блог Роберта Косары. Его работы — это визуальный сторителлинг с помощью данных. Много полезных статей и его интересный взгляд на виз-ию данных.

6. https://t.iss.one/analyst_club
RUS. Телеграм-канал Алексея Колоколова - клуб анонимных аналитиков. Много пишет про диаграммы и дашборды.

7. https://t.iss.one/chartomojka
RUS. Телеграм-канал Александра Богачева - Чартомойка. Думаю его многие знают. Много пишет про диаграммы, делает разборы, делится полезной информацией.

8. https://t.iss.one/revealthedata
RUS. Телеграм-канал Ромы Бунина. Про визуализацию данных, развитие BI-систем и Tableau.

А где смотреть примеры хороших работ, чтобы развивать насмотренность?

1.
https://informationisbeautiful.net/
ENG. Блог Дэвида Маккэндлесса. Взгляд на большие данные с точки зрения дизайнера. Маккэндлесс – известный практик в области инфографики. В основе его идеи лежит преобразование информации, содержащей минимум слов, в красивую и полезную визуализацию. Очень много красивых работ.

https://informationisbeautiful.net/beautifulnews/
И еще его работы.

2. https://journal.tinkoff.ru/flows/statistika/
RUS. Тинькофф-журнал раздел Статистика. Много интересных статей и в каждой есть виз-ия данных. Много хороших работ.

3. https://ria.ru/infografika/
RUS. Раздел инфографики у РИА Новости. Много интересных работ.

Делитесь в комментах ресурсами и блогами, которые знаете/читаете/смотрите по виз-ии данных😊
Forwarded from DevFM
Вопросы для junior python developer

Статьи для подготовки к собеседованиям хорошо помогают в поиске собственных пробелов в знаниях. В статье Полный список вопросов с собеседований по Python для дата-сайентистов и инженеров (habr, 2020, оригинал) на самом деле покрываются базовые аспекты Python для младшего разработчика.

Некоторые вещи объяснены плохо, лучше прочитайте документацию, книги Лутца или Лучано. Кстати, у последнего в этом году вышло второе издание Python. К вершинам мастерства (в оригинале Fluent Python).

И да, в п. 53 автор забыл, что в try-except-finally может быть и else, который выполнится, если не было исключений. О блоке else у for мы писали раньше.

#python #books
Forwarded from Dmitry K
Посоветовали вот плейлист по тематике сисдиза (его уже кидали в чате, но пусть будет еще раз, с описанием).
https://www.youtube.com/channel/UC-Z7T0lAq_xECevIz8E5R5w

> Ещё классные видео есть на Youtube у Mark Richards. Это один из авторов Fundamentals of Software Architecture (книга непростая, но крутая, планирую ее в бумажном варианте тоже заказать себе).
> Формат такой: берётся какой-нибудь вопрос типа ACID vs BASE, request/reply VS messaging и относительно подробно разбирается. Марк очень здорово объясняет
Forwarded from Bear Market
Про OpenSource и финансы

Вообще, финансы, конечно, индустрия наименее расположенная к опенсорс технологиям. Причем какой ее разрез не возьми.

Если говорить про банковские или розничные продукты - основной риск на 100 процентов лежит в плоскости безопасности. Невозможно себе представить, что кто-то будет готов брать на себя угрозу потенциальных взломов клиентских счетов или собственных депозитариев, упростив и ускорив себе разработку. .

С трейдингом, казалось бы, тоже очевидно. Если у тебя есть “edge” - преимущество над остальными, как только ты его отдаешь в опенсорс, оно тут же и потеряется.

И все же. Из нашего опыта, люди очень редко смотрят на одни и те же данные одинаково. Так что даже дата (самое, казалось бы, ценное) не святой грааль. Еще более открытой областью для коллаборации являются инструменты исследования этих данных. Ниже список полезных для quant finance библиотек. Пользуйтесь и делитесь с квантами.

Github quantitative finance repos

Goldman Sachs
https://github.com/goldmansachs

OpenBB-finance/OpenBBTerminal: Investment Research for Everyone, Anywhere.
https://github.com/OpenBB-finance/OpenBBTerminal

enthought/pyql: Cython QuantLib wrappers
https://github.com/enthought/pyql

vollib/vollib: Fundamentally a swig/python wrapper around Peter Jaeckel's lets_be_rational. lets_be_rational focuses exclusively on Black76, while Vollib extends this to add support for Black-Scholes and Black-Scholes-Merton.
https://github.com/vollib/vollib

jsmidt/QuantPy: A framework for quantitative finance In python.
https://github.com/jsmidt/QuantPy

alpha-miner/Finance-Python: python tools for Finance with the functionality of indicator calculation, business day calculation and so on.
https://github.com/alpha-miner/Finance-Python

pmorissette/ffn: ffn - a financial function library for Python
https://github.com/pmorissette/ffn

GriffinAustin/pynance: Lightweight Python library for assembling and analyzing financial data
https://github.com/GriffinAustin/pynance

ynouri/pysabr: SABR model Python implementation
https://github.com/ynouri/pysabr

domokane/FinancePy: A Python Finance Library that focuses on the pricing and risk-management of Financial Derivatives, including fixed-income, equity, FX and credit derivatives.
https://github.com/domokane/FinancePy

goldmansachs/gs-quant: Python toolkit for quantitative finance
https://github.com/goldmansachs/gs-quant

federicomariamassari/willowtree: Robust and flexible Python implementation of the willow tree lattice for derivatives pricing.
https://github.com/federicomariamassari/willowtree

federicomariamassari/financial-engineering: Applications of Monte Carlo methods to financial engineering projects, in Python.
https://github.com/federicomariamassari/financial-engineering

dbrojas/optlib: A library for financial options pricing written in Python.
https://github.com/dbrojas/optlib

google/tf-quant-finance: High-performance TensorFlow library for quantitative finance.
https://github.com/google/tf-quant-finance

RomanMichaelPaolucci/Q-Fin: A Python library for mathematical finance
https://github.com/RomanMichaelPaolucci/Q-Fin

quantsbin/Quantsbin: Quantitative Finance tools
https://github.com/quantsbin/Quantsbin

bbcho/finoptions-dev
https://github.com/bbcho/finoptions-dev
#causal
Бесплатная книжка по Каузал инференс в питоне
https://matheusfacure.github.io/python-causality-handbook/landing-page.html