Интересное что-то
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
#career
Матрица компетенций
Forwarded from Alex M.
исходя из многих отзывов проходивших, матрица в минималистическом варианте похожа на такую:

трейни-джун:
- ничего не знает про дизайн
- знает алгоритмы и пишет на языке вменяемо (знает паттерны, выносит абстракции итп)
- общаться с кандидатом не напряжно

мидл (4 левел по грейду): все то же, что для джуна плюс
- может в дизайн немножко, знает системы с которыми работал на достаточном уровне
- есть кейсы решения бихейв ситуаций с правильным (ожидаемым) подходом

синьор (5 левел): все то же, что для мидла, плюс
- может в дизайн хорошо, задает правильные вопросы, правильно выявляет потенциальные проблемы
- есть потенциал к лидершипу и успешный опыт кроскомандного взаимодействия
#math
Кому вдруг захотелось получить математику
Forwarded from Laida
МАТЕМАТИЧЕСКИЕ КУРСЫ НА STEPIK

https://stepik.org/course/95/syllabus - Основы мат.анализа функции одной переменной (последовательности, пределы, производные, интегралы). В основном несложный курс, иногда решаю за 5-15 минут одну-две задачи из него в качестве зарядки по утрам, когда после сна не получается сразу заставить мозг запуститься на полную. Некоторые задачи, однако, заставляют подумать подольше. Например, некоторые задачи на эквивалентность функций и на замечательные пределы (если решать честно, без рядов Тейлора). Из лекций можно вспомнить основные определения и теоремы.
https://stepik.org/course/126/syllabus - Основы теории графов (связность, паросочетания, раскраски, планарность). Несложный курс, но полезный чтобы периодически освежать память о том, что было в универе. Тоже решаю задачи из него как разминку по утрам.
https://stepik.org/course/326/syllabus - Мат.статистика, курс посложнее (выборки, точечные оценки, доверительные интервалы, стат.гипотезы, стат.критерии, регрессия). 1-2 модули показались мне не очень сложными, но начиная с доверительных интервалов начала уже застревать на задачах. К счастью, под задачами есть комменты, из которых можно почерпнуть подсказки, как и чем воспользоваться для решения. Хочу добраться до стат.гипотез, полезная тема.
https://stepik.org/course/104/syllabus - Введение в теоретическую информатику, БОЛЬШОЙ КУРС ДЛЯ ГИГАЧАДОВ! Перечисление всех тем и их уровней сложности займет слишком много места, поэтому скажу просто, что я начала проходить этот курс с целью подготовки к КАНДИДАТСКОМУ МИНИМУМУ по теоретической информатике в МГУ (в сочетании с традиционными учебниками). После прохождения половины, сдала кандмин, а потом вернулась и прошла оставшуюся половину, ПОТОМУ ЧТО Я УГОРЕЛА ПО COMPUTER SCIENCE, ПАЦАНЫ ДУХ СТАРОЙ ШКОЛЫ ЖИВЕТ ТОЛЬКО В ЭТОМ КУРСЕ, ГДЕ МАШИНЫ ТЬЮРИНГА РЕШАЮТ NP-ПОЛНЫЕ ЗАДАЧИ ПО ХАРКДОРУ, ГДЕ ЛЮБАЯ ВСЮДУ ОПРЕДЕЛЕННАЯ ВЫЧИСЛИМАЯ ФУНКЦИЯ ИМЕЕТ НЕПОДВИЖНУЮ ТОЧКУ, ГДЕ КОНЕЧНЫЕ АВТОМАТЫ ЖИВУТ РЕГУЛЯРНЫМИ ЯЗЫКАМИ И РЕАЛИЗУЮТСЯ ФУНКЦИОНАЛЬНЫМИ СХЕМАМИ! Правда, в курсе есть проблема с получениями рецензий на задачи (курс старый). Но если будешь проходить, пиши, я отрецензирую! Люби малую теорему Ферма, интерактивные доказательства, ВЫВОДИ КОДЫ С ИСПРАВЛЕНИЕМ ОШИБОК ОТКРЫТО И СМЕЛО! Слава Гёделю!
#ml
Анализ маркетинговых кампаний
Forwarded from Vlad Kostoglodov
первое что пришло в голову, хоть это и не блогпост
https://www.algorithmicmarketingbook.com/

https://www.enterprise-ai-book.com/

Приложение
https://github.com/ikatsov/tensor-house/
#books
Лучшие книги в своём классе для понимания мира финансов
Forwarded from Alpha beast
Investment Banking
By Joshua Pearl & Joshua Rosenbaum

Investment Valuation
Damodaran Investment Valuation

Benjamin Graham
Intelligent investor

Brealey Myers
Principles Of Corporate Finance

Ilmanen
Expected returns
Book for portfolio management

Hull J.C.
Options, Futures and other derivatives

McDonald R.
Derivatives markets
Forwarded from Maxim Prikhodko
Вот ещё крутая книжка
Forwarded from Захар
Вот тоже неплохой вариант, пдф версии правда нет…
#interview #ab
Материалы, по которым соискатели готовились к собеседованию:

Обзор системы сплитования (на примере Авито): https://habr.com/p/454164/

Краткий обзор по статистическим тестам:
https://vkteam.medium.com/practitioners-guide-to-statistical-tests-ed2d580ef04f

Пуассоновский бутстрап:
https://youtu.be/Zki9VMzxcFU

Подсчёт MDE:
https://medium.com/statistics-experiments/когда-останавливать-a-b-тест-часть-1-mde-7d39b668b488 (Часть 1)
https://medium.com/statistics-experiments/когда-останавливать-a-b-тест-часть-2-monte-carlo-a342ba5b552c (Часть 2)

Стратификация:
https://habr.com/ru/company/X5Tech/blog/596279/

Методы сокращения дисперсии и зачем это нужно: https://youtu.be/KvIJ8FCJzr4

Увеличение чувствительности в A/B с помощью Cuped: https://youtu.be/pZpUM08mv-E

Про FPR, TPR, Statistical power и p-value:

https://youtu.be/XTcP4oo4JI4

https://youtu.be/-zps6hm0nX8

https://youtu.be/2nP_gcut7SU

Канал для подготовки к интервью в сфере Data Science: https://www.youtube.com/c/DataInterviewPro
Лекция Нерсеса Багияна про A/B-тесты: https://youtu.be/cWmS-ws4z9I
Курс «Основы статистики»: https://stepik.org/course/76/syllabus
Курс «Основы статистики. Часть 2»: https://stepik.org/course/524/syllabus
Курс «Основы статистики. Часть 3»: https://stepik.org/course/2152/syllabus
#Tip26 #EDA

Partial dependence plots (PDP) — это график, который позволяет понять, как различные значения конкретной фичи влияют на предсказания модели.
Под капотом PDP меняет исходные значения целевой фичи и смотрит как изменяются предсказания модели.
По сути PDP показывает ожидаемое среднее значение таргета при различных значения интересующей нас фичи.

Строятся PDP в двух вариантах - для одной фичи и для пары фичей. Обычно для графика выбирают наиболее значимые для модели фичи.

Т.к. PDP работает с уже обученной моделью, то это еще один способ приоткрыть завесу черного ящика (наряду с SHAP и пр.).

PDP можно построить либо с помощью скалерна (но на вход принимаются только родные для скалерна модели):
fig, ax = plt.subplots(figsize=(18.5,4.5))
features = ['bahrooms','sqf_living','yr_buil']
PartialDependenceDisplay.from_estimator(clf, X, features, ax=ax);


Либо с помощью сторонних пакетов, например PDPbox (https://github.com/SauceCat/PDPbox):
features_to_plot = ['sqf_living','bahrooms']
inter1 = pdp.pdp_interact(model=model, dataset=X, model_features=fcols, features=features_to_plot)
pdp.pdp_interact_plot(pdp_interact_out=inter1, feature_names=features_to_plot, plot_type='contour')
plt.show()


З.Ы. У PDPbox есть еще много других интересных графиков.
Forwarded from Ruslan Sarvarov
Возможно это по PARLA
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