Data notes – Telegram
Data notes
46 subscribers
59 photos
5 videos
2 files
122 links
My data science notes
Download Telegram
The second edition of "The Theory and Practice of Enterprise AI" has been released! You can now download the free PDF version from the book's website, and the hardcopy is available for purchase on Amazon.
Free PDF: https://lnkd.in/gjBv3DM7
Forwarded from New Yorko Times (Yury Kashnitsky)
ML system design в реальных проектах – 200 блог-постов
#links_with_intro #ml

Команда Evidently (наверняка знаете Эмели Драль, она с кофаундером Elena Samuylova пилит решение для мониторинга и тестирования ML-моделей) собрала около 200 блог-постов про ML system design в реальных проектах – от Netflix, Doordash, Booking и т.д. Кажется неплохим источником знаний для “курса по Data Science, которого нет”, про который я рассказывал раньше. Я не большой фанат ссылок на в целом классные подборки, которые добавляешь в закладки, а потом забываешь про них навсегда. Но в данном случае действительно крутой ресурс, в том числе для подготовки к собеседованиям.

Сюда же можно добавить еще 10 case studies, собранных Chip Huyen в книге “Designing Machine Learning Systems” (вот мой пост в том числе про эту книгу). Там каждый из 10 кейсов еще вкратце пересказан.

Про видео-интервью про ML system design и книгу Валерия Бабушкина & Арсения Кравченко, думаю, тут все и так в курсе.
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#trading #ml #chan

Любопытный подход к отбору признаков: сначала схожие фичи группируются в кластера, дальнейший отбор ведётся FS-алгоритмом уже по кластерам. Видимо, это сразу решает проблему колллинеарности.

https://www.youtube.com/watch?v=2-5HYJ0HhyQ
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#ml #featureselection #featureengineering #mrmr #sulov

Наткнулся на новую библиотечку по созданию и отбору признаков. Гордятся реализацией MRMR (Minimum Redundancy Maximum Relevance) и SULOV (Searching for Uncorrelated List of Variables).

https://github.com/AutoViML/featurewiz
Forwarded from Data Secrets
This media is not supported in your browser
VIEW IN TELEGRAM
Конспекты YouTube

Eightify.app — расширение для Google Chrome, которое извлекает ключевую информацию из видео и отдает пользователю в текстовом виде. Построено, к слову, на основе GPT-4. Ничего полезнее сегодня вы не найдете

😻 #advice
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Secrets
Самый полный репозиторий библиотек Python для Data Science разработчика

Если ты занимаешься Data Science, то знаешь, как важно иметь под рукой нужные инструменты для эффективной работы. Мы тут как раз нашли заметку, в которой перечислены все самые полезные и эффективные библиотеки и модули Python для разных задач. Есть разделы "Очистка и обработка", "Рекомендательные системы", "Временные ряды", "NLP", "Визуализация". Все со ссылками на документацию.

https://analyticsindiamag.com/python-libraries-repository-for-data-science/

😻 #advice #python
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#mlops #mlflow

Продолжаю изучать mlflow. Очень понравилась, что по обученной модели можно быстро получить список метрик и значимостей признаков. А ещё можно даже настроить критерии приёмки модели в бой, абсолютные (точность не менее X%) и относительные (точность не менее Y% лучше чем DummyClassifier). Ложка дёгтя в том, что указанный в доке вызов mlflow.models.list_evaluators() не работает.

https://mlflow.org/docs/latest/models.html#model-validation
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#mlops #tracking #mlflow

Несколько классных трюков для продуктивной работы с mlflow. Мне оч понравилась встройка кастомных веб-страничек и дочерние эксперименты (UI с прошлого года поддерживает многоуровневость).

По идее, в МЛ эксперимент может равняться фичерсету+таргету, а запуски (runs) могут соответствовать разным конвейерам обработки (с/без FS,RS,OR,ES,HPT).

Дочерние запуски нужны, если хотим логировать промежуточные модели, обученные на фолдах CV. Или если хотим на одних и тех же данных/конвейере сравнить несколько моделей разных классов (gbdt, ann). Или если включено HPT, тогда каждый запуск порождает N субмоделей с разными гиперпараметрами.

К сожалению, вложенными могут быть только запуски, но не эксперименты, хотя это вроде бы на поверхности. У нас же в рамках одного проекта может быть несколько датасетов, несколько задач, у каждой много таргетов. (+Желательны свои уровни допуска разным юзерам, но об этом умолчим). Сейчас пользователям MLFlow приходится, видимо, эту иерархию разворачивать в плоские структуры. Или как-то лепить в тэги.

https://towardsdatascience.com/5-tips-for-mlflow-experiment-tracking-c70ae117b03f
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#optimisation #numba #numpy #auc #fastauc

Ещё немного про оптимизацию. В попытке найти быструю реализацию roc_auc набрёл на библу factauc, где автор не поленился и сделал numba-оптимизированную, и даже сишную реализации. В сишную он явно вложился, вон сколько кода, и не напрасно: она получилась самой быстрой, почти вдвое быстрее нумбовской (что меня уже насторожило). Проверил на своём массивчике 8M float-ов, действительно самые тормозные catboost и sklearn (больше 2 секунд), фастаук уже позволяет прыгнуть до 0.6 секунды с нумба и до 0.4 с Си++. Глянул нумбовскую реализацию, а там argsort закомпилирован. Вспомнилось, что раньше нумба замедляла эту функцию. Вынес argsort "за скобки" njit-компилятора, и вуаля, С++ реализация побита, 0.3 секунды )) Даже неловко было сообщать автору, но что поделаешь.

P.S. Всеволод сказал, что на неделе предлагаемое улучшение потестит и, если что, в fastauc замёрджит )
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#optimization #ml #metrics #python #numba #codegems

В общем, sklearn-овские метрики оказались слишком медленными, пришлось их переписать на numba. Вот пример classification_report, который работает в тысячу раз быстрее и поддерживает почти всю функциональность (кроме весов и микровзвешивания). Также оптимизировал метрики auc (алгоритм взят из fastauc) и calibration (считаю бины предсказанные vs реальные, потом mae/std от их разностей). На 8M сэмплов всё работает за ~30 миллисекунд кроме auc, та ~300 мс. Для сравнения, scikit-learn-овские работают от нескольких секунд до нескольких десятков секунд.

@njit()
def fast_classification_report(
y_true: np.ndarray, y_pred: np.ndarray, nclasses: int = 2, zero_division: int = 0
):
"""Custom classification report, proof of concept."""

N_AVG_ARRAYS = 3 # precisions, recalls, f1s

# storage inits
weighted_averages = np.empty(N_AVG_ARRAYS, dtype=np.float64)
macro_averages = np.empty(N_AVG_ARRAYS, dtype=np.float64)
supports = np.zeros(nclasses, dtype=np.int64)
allpreds = np.zeros(nclasses, dtype=np.int64)
misses = np.zeros(nclasses, dtype=np.int64)
hits = np.zeros(nclasses, dtype=np.int64)

# count stats
for true_class, predicted_class in zip(y_true, y_pred):
supports[true_class] += 1
allpreds[predicted_class] += 1
if predicted_class == true_class:
hits[predicted_class] += 1
else:
misses[predicted_class] += 1

# main calcs
accuracy = hits.sum() / len(y_true)
balanced_accuracy = np.nan_to_num(hits / supports, copy=True, nan=zero_division).mean()

recalls = hits / supports
precisions = hits / allpreds
f1s = 2 * (precisions * recalls) / (precisions + recalls)

# fix nans & compute averages
for arr in (precisions, recalls, f1s):
np.nan_to_num(arr, copy=False, nan=zero_division)
weighted_averages[i] = (arr * supports).sum() / len(y_true)
macro_averages[i] = arr.mean()

return hits, misses, accuracy, balanced_accuracy, supports, precisions, recalls, f1s, macro_averages, weighted_averages
Forwarded from Data Secrets
Начинаем погружаться в Марковские цепи

Это такая математическая модель, которая с успехом применяется в разных областях, таких как машинное обучение, генерация текстов или музыки, криптография и многих других. Ей много лет: она была разработана Андреем Марковым в начале 20 века.

😻 #math
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM