Aspiring Data Science
373 subscribers
425 photos
11 videos
10 files
1.87K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#news #automl #plans

ML/DS-планы на 2024-й.

Как-то незаметно прошло уже почти полгода! Поймал себя на том, что двигаюсь к своей мини-automl системе. Скажете, почему не возьмёшь готовую? Ответ обычный, хочешь чтоб было сделано хорошо - сделай сам (если у тебя есть экспертиза и классные идеи).

В рамках этой automl системы будут:

1) 2 отборщика признаков из Diogenes, MRMR и RFECV.
MRMR уже получил навык создания комбинаций признаков (feature engineering), его надо ускорить (запараллелить) и лучше потестировать подмодуль с ортогональными полиномами (там будет полезен хороший оптимизатор, сейчас стоит оптуна и работает через пень-колоду)

2) мой будущий классный MBHO оптимизатор HPT. мне уже удалось побить оптуну, гиперопт, скопт в задачах одномерной оптимизации (для решения проблемы feature selection, см бенчи по тегам #featureselection #hpt #optuna #hyperopt #skopt), пора его расширить на многомерный случай

3) модуль ансамблирования ENS. будет простое усреднение (много оттенков) и стэкинг. из ноу-хау тут будут instance-based confidence, numaggs over level 0 predictions, identity level 1 baseline, аугментация табличных данных. Для расширения ENS планируется написать универсальную обёртку для ранней остановки. С этой идеей ношусь уже несколько лет, да никак не сделаю. Смысл обёртки в том, чтобы дать функционал early stopping/overfitting detection тем моделькам, которые сами нативно его не поддерживают - путём partial_fit или дихотомического поиска по n_iterations.

Отборщики признаков получат апгрейд и во время своей работы будут собирать ценную информацию для модулей HPT (MRMR считает базовые статистики признаков, силу связей с таргетами и между собой; RFECV создаёт пары гиперпараметры-ml метрики для последующего обучения MBHO) и ENS (будут замерять, насколько прогнозы моделек с определёнными признаками и гиперпараметрами декоррелированы и спосбны помочь ансамблю).

Также планируется большое обновление Diogenes, после которого избыточные признаки опционально будут не удаляться из набора, а сливаться в единый "кластер" c primary (если это будет повышать стабильность). Идея взята из лекций Эрни Чана. Это может быть полезно, когда 1 скрытый драйвер влияет на множество факторов в датасете. Текущая реализация MRMR выбирает 1 фактор с самой сильной MI на таргет, остальные выкидывает, что приводит к потере информации если влияние драйвера на факторы неоднородно по инстансам или времени.

Ещё MRMR получит шаг удаления признака (чтобы сильный признак мог всё же уступать более удачной комбинации) и параллельные списки, когда на каждом шаге не просто берётся лучший кандидат, а N лучших кандидатов формируют "параллельную реальность" (идея взята у Тима Мастерса).

Хочу также изучить гибриды между MRMR и RFECV (например, все признаки отброшенные MRMR прогонять через RFECV).
🔥7
#autosklearn #hpo #hpt #automl

"Fig. 6.3 Average rank of all four Auto-sklearn variants (ranked by balanced test error rate (BER)) across 140 datasets.

Note that ranks are a relative measure of performance (here, the rank of all methods has to add up to 10), and hence an improvement in BER of one method can worsen the rank of another.

Due to the small additional overhead that meta-learning and ensemble selection cause, vanilla Auto-sklearn is able to achieve the best rank within the first 10s as it produces predictions before the other Auto-sklearn variants finish training their first model. After this, meta-learning quickly takes off."

Получается, лучше всего "докидывает" как раз мета обучение, а потом ещё и ансамблирование.
Matthias_Feurer_ROBUST_AND_EFFICIENT_AUTOMATED_MACHINE_LEARNING.pdf
8.2 MB
#papers #automl #hpo #hpt

Читаю сейчас кандидатскую диссертацию Matthias Feurer - ROBUST AND EFFICIENT AUTOMATED MACHINE LEARNING - Systems, Infrastructure and Advances in Hyperparameter Optimization.

Вот это чувак поработал над диссертацией, моё почтение! Не просто наплодил никому не нужных формул.

"Next, I would like to thank the academic and open source communities. Throughout the thesis I developed and maintained several open source packages (OpenML-Python and liac-arff; ConfigSpace, SMAC3 and Auto-sklearn). I am grateful for the opportunity to do so, and would like to thank everyone who contributed back to them to further improve the projects."
🔥1
#automl #papers

An Empirical Study on the Usage of Automated Machine Learning Tools

Forough Majidi, Moses Openja, Foutse Khomh , Heng Li

Интересное исследование, как automl используется в гитхабовских проектах.

https://arxiv.org/pdf/2208.13116
#automl #hpo #hpt #openml

Наконец-то дочитал вторую книжку, Frank Hutter - automatic machine learning methods systems challenges, и кандидатскую диссертацию его менти Маттиаса Фойрера, по сов-му создателя auto-sklearn.

Перехожу наконец-то к feasibility study своей идеи мета-обучения для HPT. Данные openml не получится использовать для полноценного решения, т.к. они не тречат время расчётов и железо, размер модели и время инференса.

Также в запусках нет указания, какие параметры были дефолтными.

Но хотя бы их платформу и собранные данные можно попробовать использовать для

1) быстрой оценки, а можно ли вообще с помощью мета-признаков ранжировать алгоритмы и гиперпараметры на конкретной задаче
2) разведки самых важных метапризнаков (и в будущем создания подобных)
3) изучения их АПИ, чтобы взять хорошие идеи и пофиксить плохие
4) использования хотя бы части их датасетов.

Для затравочки - визуализация метрик SVM в зависимости от 2-х HP.
#automl #tabpfn

Читаю авторскую статью про TabPFN. Если они не накосячили нигде, похоже, это одна их самых сильных работ по ML за последние года. А то и десятилетия.

Ну извините, ТАКОГО преимущества от мета-обучения (хотя там доля и от транформерной архитектуры, знать бы, какая), я не ожидал даже в самых смелых мечтах: "TabPFN (default) outperforms AutoGluon for classification tasks, even if AutoGluon is allowed up to 4 h, a 5.140× speedup".

"Apart from its strong predictive performance, TabPFN exhibits key foundation model abilities, such as data generation, density estimation, learning reusable embeddings and fine-tuning. We showcase these abilities through proof-of-concept experiments on the German Credit Dataset44, which contains credit risk information and the mfeat-factors45 dataset classifying handwritten digits based on a tabular representation.

TabPFN can estimate the probability density function of numerical features, as shown in Fig. 6a, and the probability mass function of categorical features. Computing the sample densities enables anomaly detection to identify issues such as fraud, equipment failures, medical emergencies or low-quality data.

TabPFN also allows synthesizing new tabular data samples that mimic real-world dataset characteristics as shown in Fig. 6b. This enables applications such as data augmentation or privacy-preserving data sharing.

The architecture of TabPFN yields meaningful feature representations that can be reused for downstream tasks such as data imputation and clustering. We extract and visualize learned embeddings from the mfeat-factors dataset in Fig. 6c, showing improved class separation compared with the raw data on the first two principal components."

А есть вообще то, чего она не может?

Limitations of TabPFN. The limitations of TabPFN are as follows:

(1) the inference speed of TabPFN may be slower than highly optimized approaches such as CatBoost;
(2) the memory usage of TabPFN scales linearly with dataset size, which can be prohibitive for very large datasets;
(3) our evaluation focused on datasets with up to 10,000 samples and 500 features; scalability to larger datasets requires further study.
4
#automl #tabpfn

Могу подтвердить, что, похоже, их либа (и подход) реально работает. На нескольких датасетах типа breast cancer, и синтетики типа make_classification(n_samples=40_000, n_classes=2,n_features=40,n_informative=10) TabPFN в моих запусках всегда опережала катбуст по ROC AUC и точности. пусть ненамного, но всегда. гиперпараметры катбуста я 4 часа не тюнил, просто проверил кол-во деревьев 1_000, 10_000, с и без ранней остановки.


На моей старенькой RTX 2070:

train, test sets shape= (30000, 40)

ROC AUC: 0.9945391499218594
Accuracy 0.9890666666666666

train+inference time: 4min 7s


для сравнения результаты катбуста CatBoostClassifier(verbose=0,task_type='CPU',eval_fraction=0.1,early_stopping_rounds=200, num_trees=10000)

ROC AUC: 0.9939392120134284
Accuracy 0.9802


Для train, test sets shape= (20000, 40) время 1min 56s.

С хорошим GPU она возьмёт и датасет 100k-200k строк, наверное.
С другой стороны, мне кажется, если тюнить, можно TabPFN и догнать.

Для PHE-версии надо явно передавать device: AutoTabPFNClassifier(max_time=60*9,ignore_pretraining_limits=True,device="cuda")

Что интересно, он грузит веса типа Attempting HuggingFace download: tabpfn-v2-classifier-od3j1g5m.ckpt, Attempting HuggingFace download: tabpfn-v2-classifier-llderlii.ckpt.

В общем, теперь метод .fit выполняется долго (согласно max_time), да ещё и .predict_proba занял 5 минут на том же датасете. ROC AUC немного улучшилась по сравнению с не-PHE версией, Accuracy чуть просела.

ROC AUC: 0.9948400465955762
Accuracy 0.9888666666666667
3
#automl #hpo #hpt #openml #diogenes

Провёл feasibility study оптимизатора гиперпараметров на базе мета-обучения, по данным openml. Результаты очень обнадёживают.

Для конкретного алгоритма ML (я взял xgboost classifier) , зная признаки датасета и, собственно, гиперпараметры, можно, не проводя каждый раз обучение, предсказывать достижимый ROC AUC со средней ошибкой MAPE в 3-5%.

Это fewshot, обучив модель на 1% комбинаций данного конкретного датасета (не обучив ни на одной комбинации датасета, т.е., только pretrain, MAPE=14%).
С мета-фичами от застройщика авторов openml.

А у меня же еще тонна идей по улучшениям. Я хотел эту идею реализовать еще 2 года тому, ну да ладно, хорошо хоть сейчас начал.

Работы, конечно, море, но предварительные результаты позитивные. В топку "байесовкую оптимизацию". There must be a better way!
#autogluon #automl

Эти товарищи реально слишком много хвалятся, но, если верить разработчикам lightghtautoml, глюон не в лидерах )

что понравилось:

ограничения на время инференса (!)
шаг пост-калибрации в конвейере (температурное шкалирование), такое вижу впервые в пакете automl
MultiModalPredictor (!)

Скоро его попробую на реальной задаче, вместе с Ламой.

https://www.youtube.com/watch?v=VAAITEds-28
#automl #itmo #fedot

Оказывается, ещё и Федот есть у нас )))
itmo я знаю по библиотечке отбора признаков, она не производительная, но богатая.

Пока в Федоте понравились только анимированные графики прогресса.

Надо бы его с Ламой посравнивать на реальных задачах.

https://www.youtube.com/watch?v=_hQtoVgT6Q4
#automl #autogluon #lama

Маленькая история о том, как я неудачно пытался протащить automl в проект в последний момент.

В проекте использовали библиотеки своей разработки над бустингами, я запланировал в следующем релизе добавить automl. Ролики Autogluon, где авторы долго хвастаются, какой у них хороший фреймворк, засорили мне мозг (и, видимо, отпечатались на подкорке), а с LaMa у меня был позитивный личный опыт (правда, давно).

Я вспомнил слова Саши Рыжкова, автора LaMa, с презенташки годовой давности, что на бенчмарках autogluon себя плохо показал, т.к. забивал диск моделями, которые его никто не просил сохранять. Но как-то подумал, ну за год же это глупое поведение исправили или позволили отключать, правда?

НЕТ. Herr там. autogluon засрал весь диск облачного сервера, причём выяснилось, что он дампит на диск не только модели, но и ПРИЗНАКИ, полный датасет. Причем делает это снова и снова, если вы обучаете новую модель на тех же данных. И отключить это нельзя, а вручную подчищать за ним данные я не рискнул, потом неясно, запустится ли без подчищенных файлов инференс. В топку. А хвастались-то больше всех.

Ну с Ламой-то проблем не возникло? Тоже не так. ML-сервер с окружением был настроен с python 3.13, что уже казалось рискованным решением, так и вышло, LaMa на этой версии просто не пошла, а пересоздавать окружение не было возможности ) Так что до сл релиза.

Эрго: не берите последнюю версию Питона для ML проектов, берите хотя бы last-1.