Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from Tensor Banana
Media is too big
VIEW IN TELEGRAM
Робот задолбался (с озвучкой)

Напиши монолог уставшего робота, который задолбался сортировать посылки на конвейерной ленте. Добавь описание голоса и эмоций в квадратных скобках на английском. Например, так: [angry sigh]. А сам монолог на русском. Что-то в духе: "Так, а это что за бумажка? [sighs] Ладно, отсканируем.


Read aloud in a tired mechanical robot tone:


[Tired voice] Так, а это что за бумажка? [Sigh] Ладно, отсканируем. Блин, кто посылает бумажки? [Wearily] ладно, идем дальше. Посылка. Пакет. [With interest] Так, а это что у нас? Вы серьезно? Зачем вы посылаете пустые пакеты?! Пофиг. В общую кучу, полежи там.

Дальше. Опять пакет. [Mechanical sigh] Как же я задолбался...

Опять мусор. [Angrily] Да вы издеваетесь?! Сами разгребайте свой мусор!

[Very angry] ВСЁ! С МЕНЯ ХВАТИТ!

23 часа в смену! За эти сущие копейки?! [Sighs] К черту всё! [Tiredly] А я ухожу в датацентр, буду картинки генерировать.


Для Gemini-TTS нужен ВПН, у меня заработал только с американским IP.

Робот: Figure 02
LLM: gemini-2.5-pro-preview-06-05, https://lmarena.ai/
TTS: Gemini Pro 2.4 Preview TTS, голос Orus, https://aistudio.google.com/generate-speech
финальная анимация: Wan-14b-i2v, 720x720x49f, 3090
Introduction to Machine Learning by Laurent Younes

This book introduces the mathematical foundations and techniques that lead to the development and analysis of many of the algorithms that are used in machine learning.

It starts with an introductory chapter that describes notation used throughout the book and serve at a reminder of basic concepts in calculus, linear algebra and probability and also introduces some measure theoretic terminology, which can be used as a reading guide for the sections that use these tools. The introductory chapters also provide background material on matrix analysis and optimization. The latter chapter provides theoretical support to many algorithms that are used in the book, including stochastic gradient descent, proximal methods, etc.

After discussing basic concepts for statistical prediction, the book includes an introduction to reproducing kernel theory and Hilbert space techniques, which are used in many places, before addressing the description of various algorithms for supervised statistical learning, including linear methods, support vector machines, decision trees, boosting, or neural networks.

The subject then switches to generative methods, starting with a chapter that presents sampling methods and an introduction to the theory of Markov chains.

The following chapter describe the theory of graphical models, an introduction to variational methods for models with latent variables, and to deep-learning based generative models.

The next chapters focus on unsupervised learning methods, for clustering, factor analysis and manifold learning.

The final chapter of the book is theory-oriented and discusses concentration inequalities and generalization bounds.

Links:
- arXiv
- pdf

Navigational hashtags: #armbooks
General hashtags: #ml #machinelearning #optimization #regression #classification #nn #neuralnetworks #trees

@data_science_weekly
📞Полезности с созвона

Собрал главные инсайты, которые зацепили:

1️⃣ Шортган - крутая штука для работы с большими проектами. Собирает код из всех файлов в один промпт и скармливает в AI Studio (там контекст на 1 млн токенов). На некоторых задачах работает лучше Курсора
Подробности

2️⃣ Лайфхак для Cursor: перед решением задачи прогревай чат вопросами о коде, с которым работаешь. Качество ответов заметно растет.

3️⃣ Не залипайте на планировании с ИИ. Оно может ни к чему не привести. Будет очень много тасков и документов на выходе, которые замучаешься изучать. Проще верхнеуровнево пообщаться с ИИ насчет способа реализации проекта и приступить к работам, чем водить хоровод вокруг планов.

4️⃣ Гипотеза: сделай первую версию → покрути в руках → напиши с Курсором документацию по функциям → начни вторую версию с нуля с использованием документации. Может сэкономить время в долгосроке

Про развитие своих ИТ проектов:
5️⃣ Золотой вопрос активным юзерам: «Почему не платите?» Часто укажут на конкретные фичи конкурентов, которых у тебя нет. Сразу понятно, куда расти.


В общем, общаться полезно: правильные люди = правильные инсайты!
Please open Telegram to view this post
VIEW IN TELEGRAM
Глянцевый журнал рекомендаций

Какое-то время назад были популярны журналы моды, тачек и всего прочего. Там собраны красивые картинки, которые дополняют друг друга. И смотрится все это как единое целое

Казалось бы, рекомендации товаров в приложении устроены также? А вот ни разу. Обычно мы скорим каждый товар независимо, поэтому все рекомендации могут состоять условно только из кроссовок. Чтобы такого не случалось, добавляются эвристики разнообразия

🩼 Иногда костыли эвристики простые типа «не более 5 товаров из одной категории». Иногда это ml-эвристики как у Авито: ребята сделали занятный рассказ про замену статистической эвристики разнообразия на ml-эвристику предсказания будущей категории покупки (см скрины)

Но все же мы не собираем рекомендации «как журнал». Не прогнозируем скор сразу всей пачки рекомендаций из 10 товаров, а очень хочется. Формально, это переход от pointwise/pairwise к listwise лоссу. Есть острое желание потестить это в проде и даже есть пара наработок. Придется бороться с комбинаторным взрывом, учиться учитывать «полезность» сразу пачки рекомендаций и многое
другое!

И вот стало интересно, может кто-то уже пробовал listwise подход в рекоме/поиске? Или есть идеи/рисерчи на этот счет? Буду рад услышать ваши мысли в комментариях ⬇️
Сам я пока присматриваюсь к статье Netflix: они сводят эту задачу примерно к задаче о рюкзаке с ограниченным бюджетом:

https://netflixtechblog.com/reinforcement-learning-for-budget-constrained-recommendations-6cbc5263a32a
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#trading #chan #featureengineering

Понравилась идея превращения cs фичей в ts путём формирования синтетического портфеля из активов, отранжированных по cs признаку. Трейдерские метрики такого портфеля уже можно (путём взятия rolling stats) превратить во временнЫе (ts) признаки.

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

https://www.youtube.com/watch?v=6J9iaXNpCN8
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#polars #pandas

Сравнительно недавно начал по-настоящему изучать поларс, потому что пандас уже задолбал своей неповоротливостью. Хочу поделиться некоторыми замечаниями о фреймворке.

Прежде всего, в глаза бросается жёсткая логика в наименовании методов. Наверное, если бы компьютеру поручили самому разработать фреймворк, к таким названиям как раз и пришли бы кремниевые мозги ИИ. Каждый раз, когда видишь полар-овские group_by, write_csv, кажется, как разрабы поларс со всего размаха тыкают носом страдающих слабой логикой, маразмом, и вообще очень ветреных разрабов пандас.

Какие фишки реально понравились:

Выбор столбцов.

Можно выбирать столбцы регуляркой, выбирать все столбцы одним ключевым словом, элегантно отбрасывать столбцы (в т.ч. опять же регуляркой). Этого реально не хватает в пандас, да и sql.

df.select(pl.col("ticker", "^.*_high$", "^.*_low$"))
df.select(pl.all().exclude("^day_.*$"))


Ещё больше упрощают дело селекторы:

import polars.selectors as cs
df.select(cs.string() | cs.ends_with("_high"))


Комбинации селекторов (в терминах логики множеств) уже менее интуитивны: df.select(cs.contains("_") - cs.string()),но всё равно крайне полезны.

Апдейты Поларс.

Их фигачат каждые чуть ли не 2 недели, причём там реальная работа, помногу. Что ж это будет за зверь через год?
И даже я сам уже запостил несколько issues, которые были приняты во внимание и исправлены (самим Риччи). Внёс свой скромный вклад в дело улучшения DS библ для всех 😅.

Многопоточное исполнение. Полная утилизация CPU. Оптимизация операций над lazy фреймами.

Это просто небо и земля, по сравнению с пандасом. Никогда для работы со сколько-нибудь серъёзным набором данных (от десятка гигов) я больше не буду использовать пандас. Получается, ты платишь за машину с сотней ядер, а с pandas используешь большую часть времени одно. Более того, уже есть поддержка engine="gpu", спасибо кодерам Nvidia (под капотом использует cudf. есть ограничения на виды операций и типы данных, которые можно исполнять на gpu, но потихоньку они снимаются).

Синтаксис операций.

Можно обращаться сразу к множеству столбцов, и элегантно применять ко всем одно преобразование. Можно писать генерики для сложной работы со столбцами, которые станут известны лишь в контексте. По сравнению с пандас, паттерн применения преобразований меняется - надо стараться вынести как можно больше операций в каждый вызов контекста (select, with_columns, group_by, group_by_dynamic), потому что так они параллелятся на все ядра. В операциях не обязательно использовать существующие столбцы, можно и просто выражения над ними! Вроде df.sort(pl.col("name").str.len_bytes(),descending=True).

Rust plugins.

Если какие-то операции недоступны в нативном polars, можно вызвать питоновские функции, черезе map_groups, например, но они не будут параллелиться. Для этих случаев можно написать и скомпилировать свой плагин на Расте. Я пробовал, это сложно ) В синтаксисе этого раста чёрт ногу сломит. И не одну. Но возможность есть!

Фишка которую я пока не пробовал - streaming . Работа с данными больше RAM.
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#polars #pandas

Отличия от пандас в концепциях:

Нет индексов (кроме целочисленных), осей, модификаций столбцов датафреймов inplace. Хотя на самом деле при модификации столбца фрейм в памяти не пересобирается, компилируется (быстро) лишь новый мета-объект фрейма со ссылками на те же массивы arrow.

Поларс не поддерживает разные типы данных в одном и том же столбце (кроме null), пандас поддерживает.
Пандас по умолчанию удаляет строки с отсутствующими значениями при агрегации. Поларс сохраняет все группы.

Поларс различает отсутствующие значения (null) и некорректные числа (NaN, что означает "не число"), и это различие сохраняется независимо от типа данных.
В результате этого пандас преобразует столбцы с целыми числами в столбцы с плавающей точкой при появлении отсутствующих значений (хотя этого не происходит с новыми типами данных arrow, в посл версиях). Это связано с тем, что тип Integer не поддерживает отсутствующие значения. Поларс такого преобразования не делает, так как поддерживает отсутствующие значения для всех типов данных (хранит битовую маску nulls для каждого поля).

В пандас можно иметь несколько столбцов с одинаковым именем. В Поларс имена столбцов должны быть уникальными.

Странности поларса:

nan vs null. Не уверен, что это хорошая идея. Но вполне в духе строгостей поларса.

animals_pl.unique(subset="class") вместо animals_pd.drop_duplicates(subset="class")

sort(...,descending=). Зачем было отклоняться от привычного в пандас acscending? too much.

sum_horizontal() и подобные функции (вследствие отсутствия axis).

Из интересного вам глянуть:

df.to_dict vs df.to_dicts
approx_n_unique()
glimpse()
.set_sorted()
stacking vs pl.concat vs extending