Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Придумайте заголовок )
👍2
Forwarded from Пресидский залив (Nadia ズエバ)
Мой фреймворк для проектов с DL-экспериментами

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

👉🏻 Формулирую задачу в первом приближении
Что хотим на вход, а что — на выход. Какие есть ограничения? По мере взаимодействия с миром проекта формулировка может уточняться

👀 Смотрю по сторонам.
Что уже было сделано до меня, куда можно потыкать палкой? Какие есть статьи по этой теме, на кого они ссылаются? С какими конфами/соревнованиями ассоциированы? Метрики? Здесь не нужно фиксировать метрику и архитектуру — это про насмотренность чтобы в процессе решения задачи быстрее ориентироваться

🚴Создаю бейзлайн-решение.
Это может быть опенсорс из коробки, главное, чтобы работало. Фраза с физтеха — "лучше иметь велосипед, чем дверь от ламборгини"

📈 Фиксирую метрики и голденсеты Второй пункт лучше зафиксировать и не менять, а вот первый по мере получения новой информации о нашем мире вполне может обновляться

🏆 Выбираю своего "чемпиона" из доступного на этом шаге набора — сетап в который больше всего верю. После обучения я делаю анализ слабых мест модели — на голденсете и процессинге семплов с большими ошибками

📚 Data
В первых итерациях — опенсорс, выявили сложные места и итеративно добавляем пачки. Почти всегда данные придется собирать дополнительно

♻️ После того как была получена модель с ok качеством, ее можно оптимизировать. Ускорять, уменьшать без значительных проигрышей в точности

📲 Куда поедем?
На сервер — стоит убедиться, что не течет память. Если модель будет жить на девайсе — стоит быть готовым к тому, что она не спортируется с пол-пинка. Особенно, если там есть какие-то нетривиальные слои. Я сталкивалась с ситуациями, когда приходилось повозиться с coremltools/tfjs и даже безобидным onnx

🛫 Taking off!
Все спортировано, с инфраструктурой помержено. АВ тесты прошли успешно. Посматриваем мониторинг и перемещаемся в следующую локацию 🧙🏻‍♂️
кто узнал игру? 😏
1
Изучаем байесовскую оптимизацию

https://bayesoptbook.com/book/bayesoptbook.pdf
🔥2
#timeseries #ml #competition #electricity

Тот момент, когда организаторы ML сорева с валидацией в реальном времени задают странные вопросы о том, где ты взял OOS данные...
#chess #stats

Нашёл свою старую шахматную аналитику по рейтингам FIDE, вдруг кому надо подобное. Цель была в определении "восходящих звёзд" и особенно "подозрительно быстро восходящих звёзд".

https://github.com/fingoldo/FideRatings/blob/master/FideRatings.ipynb
🔥1
#ml #featureengineering #geofeatures #advicewanted

Есть задачка на генерацию геофичей. Юзер логинится в приложение в разных точках города, Известны его координаты при логине и метки времени. Какие бы интересные фичи построить из графа его перемещений?

Пока что нашел вот такую прекрасную серию статей

https://towardsdatascience.com/graph-machine-learning-with-python-pt-1-basics-metrics-and-algorithms-cc40972de113

https://towardsdatascience.com/graph-machine-learning-with-python-part-3-unsupervised-learning-aa2854fe0ff2

https://towardsdatascience.com/graph-machine-learning-with-python-part-4-supervised-semi-supervised-learning-d66878161b79
👍1
#surverys

Кто может посоветовать сервис для проведения опросов? Гугл формс, конечно, бесплатный, но по ссылке нельзя передать параметры (например, хэш юзера или кампании), и он не собирает ip, а если бы собирал, можно было бы у респондента не спрашивать страну.
СурвейМанки, с другой стороны, задирает цены, $34/mo и это только при оплате сразу за год, а так ещё выше.
#ml #graphs #convolution #templatematching #spectral #laplacian #fourier #gcn #chebyshev #chebnets #cayleynets #graphsage #gin

Оказывается, ну почти всё в нашей жизни можно представить как граф. Так вот внезапно ты становишься объктом исследования науки и учёных, о которых ничего и не знал.

https://youtu.be/Iiv9R6BjxHM
👍2
#recommendations

Попробовал трипадвизор, он советует кафешки, которые тупо не работают. Ну зато хоть размял свои мощные мышцы.
#payments

Уважаемые подписчики из России, мне удалось открыть карту в зарубежном банке, если у вас из-за войны/санкций такая же аховая ситуация с оплатой зарубежных облачных сервисов (AWS, GCP, etc), какая была у меня недавно, но очень надо, можете написать в личку для помощи с оплатой. По себе знаю, что фиг кто поможет.
🔥6
#ml #geofeatures #python

Отличная глава о подготовке геофичей

https://geographicdata.science/book/notebooks/12_feature_engineering.html
#featureengineering #supervisedlearning #standardpractice

Недавно был материал о стандартном подходе к решению ML-задач с разметкой (не хочется использовать термин "с учителем", нет там учителя/супервизора), хотелось бы подробнее остановиться на создании признаков.
Часто бывает, что в модельной задаче есть целые группы признаков, которые относятся к определённой сущности: пользователю, компании, активностям, внешней среде, локациям. Часть из них текстовые, часть графовые. Это всё ещё часто осложняется временной структурой, и надо думать об агрегатах этих всех признаков по некоторым скользящим окнам. Если всё это богатство слепить в одну таблицу, начинают буксовать любые алгоритмы, не говоря уже про требования к железу. Как не сойти с ума во время такой инженерии и добиться осмысленных результатов в рамках бюджета?
Пока я остановился на таком подходе.
1) определяем Cross-Validation schema и метрики
2) настраиваем библу для трекинга, типа neptune или mlflow
3) начинаем с DummyClassifier/Regressor (DummyLags, если у вас timeseries-задача) со всеми доступными strategy. Лучший по метрикам становится baseline-ом.
4) работаем индивидуально по группам, относящимся к отдельным классам сущностей (юзеры, компании, и т.п.), начиная с самых простых
5) также можно работать по признакам, объединённым типом данных, например, все текстовые. это позволит ещё и логично считать межпризнаковые связи, например, расстояния в разных пространствах.
6) на данной группе построенных признаков обучаемся, фиксируем CV метрики, делаем анализ важности признаков, фиксируем барчарт важностей и список как артефакт модели и фичерсета. важность признаков в группе позволяет понять, куда копать дальше, в какие дебри углубляться
7) если это временной ряд, надо строить окна. строим коррелограмму, ориентируемся на пики графика, начинаем с небольших окон.
8) когда все группы пройдены, анализируем важности признаков и принимаем решение о том, в какую сторону углубляться, повторяем цикл с более "тонкими" признаками
9) теперь объединяем группы, пробуем обучаться на всех сразу, и используя Feature Selector (по-прежнему на CV).
10) если остаётся время, пробуем отношения фичей из разных групп, их добавляем к основному датасету и прогоняем тоже через пункт 9

Теперь смотрим в свой трекинг, выбираем лучший вариант по соотношению сложность/качество. Страдает ли этот метод от подгонки? Конечно, ведь мы, принимая решения о новых фичах, заглядываем в метрики. Можно ли этого избежать? Не знаю. Но можно зарезервировать часть данных под OOS, и финальное решение принимать только по этому набору, это уменьшит смещение.
👍1
#featureengineering #hamilton

Новая библа для вдумчивого, покрытого тестами создания признаков. Каждый признак - функция. Драйвер выполняет функции в том числе на системах оркестрации типа prefect, airflow. Есть удобные декораторы метаданных, валидации. Наверное, это хорошо для энтерпрайза, где командная работа, и важно понимание, как что считается и кто за что в ответе. Также обещают масштабируемость (Ray, Dask, Spark).


https://www.youtube.com/watch?v=oQLEkjUNq0U&ab_channel=PyData
👍1