Telegram Web
Сегодня на hr скрининге в довольно известную компанию, у которой в описании вакансии стоит плашка, что мы "employer of equal opportunities", спросили, а нет ли у меня какого-то другого паспорта, кроме РФ. Затем то же самое про семью. Затем нет ли родственников с гражданством страны, куда предполагается релокация. Прелестно.
😁1🤔1
Forwarded from Aspiring Data Science (Anatoly Alekseev)
#featureengineering #featureselection #diogenes

Хорошие новости!

Как уже поняли читатели моего блога, в библиотеке отбора признаков Диоген появился также и модуль инженерии/конструирования новых признаков, но не бездумного, как в autofeat, а направленного, на основании теоретико-информационных метрик (в основном, взаимной информации MI комбинаций факторов с таргетом).

Основной мотивацией была попытка выделить рациональное зерно из набивших оскомину унылых рекомендаций и бубнежа вида "также иногда помогает логарифмирование, экспоненциирование, извлечение корней, попарное перемножение или деление исходных факторов". Эти рекомендации регулярно встречаются в курсах по FE и презентациях кэгглеров, но непонятно, как к этому вообще подступаться, кроме разве что каких-то случайных выпадов. Ну вот есть у меня 10k оригинальных признаков, мне взаимные отношения или произведения у каких именно из 50M пар проверять?

А так как метод MRMR в Диогене как раз и определяет достаточно хорошее в смысле предиктивности и уникальности подмножество признаков, некоторая проверка комбинаций становится уже реальной. Ещё больше пространство поиска сужает эвристика, что MI от "хорошей" на предмет тесной нелинейной связи пары признаков должна быть выше суммы индивидуальных MI факторов пары.

Это уже позволяет брать любые известные классы функций и для пары признаков a,b пытаться подбирать (в рамках бюджета) F3(F1(a),F2(b)) дающие максимальную MI с таргетом. В некоторых простых случаях этот метод срабатывает на ура, результаты я показывал выше. Но, если истинная зависимость сильно искажает вход ДО передачи в нелинейную функцию, метод становится практически бессилен и связь не обнаруживается.

Алексей @introspec предложил очень классную идею: почему бы не заменить подбор функций, сходимость которого дело скорее удачи, подбором коэффициентов ортогональных многочленов (например, Эрмитовых), теоретически умеющих аппроксимировать любую функциональную зависимость на отрезке? Взяв степень пониже, и коэффициенты поближе к 0, можно обеспечить своего рода регуляризацию.

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

Теперь, собственно, к новостям )
Потестил свой модуль с разными исходными зависимостями, немного прояснил чувствительность и границы применимости метода. Пофиксил баги.

И... Заменил случайный перебор Эрмитовых полиномов на направленную оптимизацию с помощью Optuna )
Решения явно стали находиться получше за разумное время, иногда по качеству не уступают "нативным", когда зависимость известна. Нужно больше тестов. И, самое главное, предстоит выяснить, дают ли такие необычные преобразования реальные преимущества в ML метриках, или же ведут к оверфиту.
Designing Machine Learning Systems by Chip Huyen

Machine learning systems are both complex and unique. Complex because they consist of many different components and involve many different stakeholders. Unique because they're data dependent, with data varying wildly from one use case to the next. In this book, you'll learn a holistic approach to designing ML systems that are reliable, scalable, maintainable, and adaptive to changing environments and business requirements.

Author Chip Huyen, co-founder of Claypot AI, considers each design decision--such as how to process and create training data, which features to use, how often to retrain models, and what to monitor--in the context of how it can help your system as a whole achieve its objectives. The iterative framework in this book uses actual case studies backed by ample references.

This book will help you tackle scenarios such as:
- Engineering data and choosing the right metrics to solve a business problem
- Automating the process for continually developing, evaluating, deploying, and updating models
- Developing a monitoring system to quickly detect and address issues your models might encounter in production
- Architecting an ML platform that serves across use cases
- Developing responsible ML systems

Link: https://www.oreilly.com/library/view/designing-machine-learning/9781098107956/

Navigational hashtags: #armknowledgesharing #armbooks
General hashtags: #machinelearningsystemdesign #systemdesign #machinelearning #ml #designingmachinelearningsystems

@data_science_weekly
Forwarded from addmeto (Grigory Bakunov)
По слухам, GPT-5 ждет нас уже в середине 2024 года. Говорят, что некоторые бизнес-пользователи уже получили доступ к бете самой последней модели от OpenAI. Один из тех, кто получил доступ, говорит, что "это действительно хорошо, как будто существенно лучше (предыдущей версии)”. По времени как раз пора, вероятно, обучение GPT-5 сейчас в самом разгаре.

[o_O] https://www.businessinsider.com/openai-launch-better-gpt-5-chatbot-2024-3
Произошла классика. Галера провела тех скрининг, прислали анкету от заказчика, где попросили заполнить, с чем у меня есть работы, а с чем нет. Список из десятка довольно стандартных задач в МЛ, отметил все, кроме одного. Сегодня читаю:

Unfortunately, we won`t be able to move forward with your profile presentation. For this role, it is also required good experience writing scripts to make API calls. They have been rejected candidates without this knowledge/experience. 


Угадайте, какой пункт я не отметил:)
😢3😁2🤬1
Пожалуй один из самых полезных курсов, пройденных мной в прошлом году, стал Python 3: Deep Dive от Fred Baptiste. Курс настолько большой, что разбит на 4 отдельных курса на Udemy:

- Python 3: Deep Dive (Part 1 - Functional)
- Python 3: Deep Dive (Part 2 - Iterators, Generators)
- Python 3: Deep Dive (Part 3 - Dictionaries, Sets, JSON)
- Python 3: Deep Dive (Part 4 - OOP)

Сейчас невероятное количество действительно годных курсов по Python именно для начинающих, чего я никак не могу сказать про материалы именно для углубленного изучения. И этот курс именно то, чего я так долго искал, перепробовав и забросив в начале пути достаточно много других материалов. Прелесть этого курса в том, что в нем нет упора на какую-либо конкретную область применения или бибиотеки, вместо этого идет подробный разбор по косточкам именно стандартных конструкций и объектов языка + части стандартной библиотеки, что мне помогло ответить на огромное количество вопросов, которые были для меня белыми пятнами до этого. Наконец-то у меня создалась некая целостная картина о том, как (и почему именно так!) устроены основные типы данных, функции, декораторы, генераторы, классы, модули. Есть практические занятия с подробным разбором решений.

Могу уверенно сказать, что курс полностью закрывает все вопросы (за исключением, пожалуй, асинхронщины) с интервью на middle+/senior Data Scientist по устройству Python (проверено лично и неоднократно)

Ну и бонусом для занимающихся data science будет то, что все лекции и демо проводятся в старом добром Jupyter Notebook :)
💯1
🔥 Крутая находка - 1900 вопросов с собеседований по анализу данных, машинному обучению. Фишка в том, что вопросы разбирают Сеньоры, которые сами проводят собесы и дают примеры правильных ответов. Вы легко получите оффер, изучив популярные вопросы 💼

А здесь собрана целая папка для тех, кто любит машинное обучение
👍1
Насущная проблема инвесторов из РФ: лимит на продажу заблокированных активов 100 тысяч рублей, превышать который нельзя. Если таковых на бОльшую сумму, то возникает вопрос, какие активы продать, чтобы использовать лимит по-максимуму? С ответом поможет линейное программирование!

from ortools.linear_solver import pywraplp

def maximize_spending(L, prices, stock):
# Create a linear solver object
solver = pywraplp.Solver.CreateSolver('SCIP')

# Define variables
quantities = [solver.IntVar(0, stock[i], f'quantity_{i}') for i in range(len(prices))]

# Define objective function: maximize the total spending
objective = solver.Objective()
for i in range(len(prices)):
objective.SetCoefficient(quantities[i], prices[i])
objective.SetMaximization()

# Add constraint: total spending should not exceed the limit M
constraint_total_spending = solver.Constraint(0, L)
for i in range(len(prices)):
constraint_total_spending.SetCoefficient(quantities[i], prices[i])

# Solve the problem
status = solver.Solve()

if status == pywraplp.Solver.OPTIMAL:
total_spending = sum(quantities[i].solution_value() * prices[i] for i in range(len(prices)))
items_quantities = {f'I{i+1}': int(quantities[i].solution_value()) for i in range(len(prices))}
return total_spending, items_quantities
else:
return None


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

# Money limit
L = 100000

# Prices of items I1, I2, I3, I4
prices = [709.18, 11851.10, 1528.21, 9395.44]

# Quantities of items in stock Q1, Q2, Q3, Q4
stock = [17, 4, 19, 12]

total_spending, items_quantities = maximize_spending(L, prices, stock)

if total_spending is not None:
print("Maximum spending:", total_spending)
print("Items quantities:", items_quantities)
else:
print("No solution found.")
На текущем проекте довелось заниматься поиском кандидатов в антифрод правила и в правила отказа для кредитного скоринга в новых источниках данных. Описал подходы, которые помогли, в заметке
🔥2👍1
Долгое время удивлялся, почему мне попадается так мало проектов, где по полной используется sklearn.Pipeline. Под этим я имею в виду не игрушечные примеры из 2-3 шагов, где первый PCA или OHE, а второй - логрег или random forest, а нормальный пайплайн из десятка шагов с отбором и преобразованием признаков из реальных задач, например, шаг, где детектятся группы сильно кореллирующих фичей, затем из каждой группы оставляется только одна, самая сильная. Или, когда на этапе моделирования катбустом мы делаем несколько итераций с отбрасыванием фичей с нулевой значимостью. Мы итак делаем эти шаги, так почему бы не сделать их частью пайплайна? Да, стандартные решения из sklearn вряд ли подойдут, поэтому круто научиться их делать самому. Собрал все свои кастомные трансформеры, совместимые с sklearn.Pipeline, положил их в репу и описал в заметке, думаю, будет полезно (ссылка на репу)
👍1🔥1
Оставлю это здесь как кандидата для следующей книги на прочтение Causal Inference for The Brave and True
👍1
Forwarded from Data Secrets
… однако, несмотря на все вышесказанное, сегодня все взгляды обращены на другого игрока👇

Nvidia только что стала самой дорогой компанией на планете, обогнав Microsoft. Сейчас капитализация компании составляет 3,3 триллиона долларов.

Напоминаем, что после презентации Apple Nvidia оттеснили на третье место, но выход нового Nemotron 4 все резко изменил.
Please open Telegram to view this post
VIEW IN TELEGRAM
Не самые стандартные вопросы по классическому МЛ, которые попадались на собесах за последнее время:

- Почему не стоит в проде использовать RandomForest из sklearn? Какие есть альтернативы, если все-таки нужнен именно RandomForest?
- Как вычислить уверенность RandomForest в прогнозе при решении задачи регрессии?
- Как меняются bias и variance в RandomForest при увеличении числа деревьев? А в GBDT?
- В чем принципиальное отличие логрега из statsmodels и из sklearn?
- В чем различия между дискриминативными и генеративными моделями? (речь про классический МЛ)
- Чем обусловлена разная форма распределения скоров LogisticRegression , SVC, RandomForest?
- Почему нейросети могут генерировать признаки автоматически, а GBDT - нет?
- Какие преимущества дает знание второй производной от функции потерь в GBDT?
- Для чего (и в каких случаях) необходима калибровка ответов бинарного классификатора? А когда можно обойтись без нее?
Еще вопросики по Python:
- Когда GIL не помеха для multithreading?
- В чем разница между multithreading и async? А что у них общего?
- Как так получилось, что в Python есть GIL, который создает ограничения при работе с multithreading, когда в других языках, например, C#, многопоточность спокойно работает безо всяких GIL?
- Приведите известные примеры применения множественного наследования
- Про ускорение вычислений. Что такое numba, когда она может помочь ускорить выполнение кода, а когда нет? Аналогичный вопрос про Cython.
- Приведите примеры из Ваших проектов, где примененялись декораторы и генераторы. Как связаны генераторы и async?
- Какие объекты Python хранятся в стеке (stack), а какие - в куче (heap)?
Стало попадаться много высказываний вроде "ах, вот N лет назад чтобы устроиться в ДС/МЛ достаточно было сказать, что умеешь писать фит-предикт в ноутбучке и тебе апплодировали стоя и брали на работу с огромной зарплатой. А вот сейчас с джунов три шкуры на собеседованиях дерут, на которые еще и не пробиться никак сквозь тысячи откликов."

Вспомнил, как я искал свою первую работу в сфере в 2016-17 годах. На тот момент диплом, основанный на решении задачи из реальной жизни с помощью МЛ (прогнозирование стоимости ремонта оборудования) был уже фактически написан и оставалась только формальная защита, что сильно пригодилось при обсуждении опыта и навыков на собесах.

Из фейлов - общение с tutu.ru на джуна-аналитика. Вопросы по основам SQL, которые зашли, а затем последовала задача, где нужно было определить оптимальное кол-во СМС-напоминалок клиенту, чтобы он продолжил покупку билетов на сайте, если он вдруг забросил процесс по каким-то причинам. Наивно верящий тогда в то, что МЛ - это серебрянная пуля, я начал бормотать что-то про выборку, которую нам надо собрать, пробовать разное кол-во СМС ну и так далее. Естественно, решение было гораздо проще. Справедливый отказ как итог.

Из успехов - мой тогдашний шеф зареферил меня в известный рекламный холдинг на data scientist intern. Они только начали набирать команду, в которой еще никого не было, но главное, что они точно знали, какие задачи нужно было решать и кто именно им нужен, что далеко не всегда верно даже сегодня!
Собственно, собес:
- Две задачи по терверу, одна из которых нередко попадается и сейчас. Вторая на смесь комбинаторики с тервером на расчет агрегированных показателей ТВ охватов. Простой вариант затащил, а сложный - облом, причем как оказалось потом, эту задачу они сами не могли решить за вменяемое время (спойлер: потом мне ее как раз и дали в течение первых месяцев)
- Кодинг на бумаге: обход бинарного дерева в глубину. Кажется ерундой, но позиция стажерская да и без подготовки далеко не все мидлы осилят (сужу по опыту собесов уже со стороны собеседующего)
- Поскольку питона тогда в отделе еще и в помине не было, основным языком разработки был C# и требовалось знать и его, чтобы в первое время интегрировать наработки в существующую систему. C# на тот момент я уже год как изучал в универе, поэтому здесь тоже все было ок
- Вопросы по дипломному проекту. Как собирал данные, как строил модель, как валидировал и как это потом можно будет внедрить. Не очень-то отличается от того, что спрашивают сегодня, а это, еще раз напомню, стажерская позиция.
- Какие задачи интересны, чем хотелось бы заниматься .. бихейв. Здесь тоже сошлись

В итоге проработал в этой компании больше 3 лет и очень благодарен людям за наставничество.
Leetcode for ML

Super neat set of machine learning coding challenges.

It could be useful to prep for an exam or ML interview.

Link

Navigational hashtags: #armknowledgesharing #armsites
General hashtags: #ml #dl #machinelearning #deeplearning
Все наслышаны с избытком про LLM и про NVIDIA, которая прославилась беспрецендентным ростом благодаря продаже чипов, своебразных "лопат" для бигтехов, разрабатывающих AI. Этот факт подсвечивает проблему монополии на рынке чипов. Но есть еще ряд компаний, не столь популярных, но играющих не менее важную роль в этом процессе. И если у NVIDIA есть более-менее достойные конкуренты, то вот среди производителей чипов рынок производителей еще уже. Самих по себе производителей чипов в мире много, но здесь речь именно о самых передовых чипах с техпроцессом <10 нМ - именно они используются для AI и в современных компьютерах и смартфонах. Так вот дело в том, что компания TSMC производит большую часть таких чипов, и именно от нее почти полностью зависят Apple и NVIDIA (Apple когда-то делала свои чипы на заводах Samsung, но поскольку это прямые конкуренты на рынке смартфонов, то было решено перенести производство на TSMC). TSMC удивительная компания, которую называют "странообразующим" предприятием для Тайвани. У TSMC положение не только монопольное, но еще довольно уязвимое: мало того что Китай постоянно угрожает Тайвани войной, так еще и сам остров Тайвань находится в сесмоопасной зоне и землятресения там не редкость. Понятно, что у TSMC есть заводы и в других странах, но они производят менее современные чипы. Так что если с TSMC что случится, то последствия для мировой экономики будут катастрофическими. Рекомендую посмотреть вот этот видос про TSMC.

Но и TSMC в свою очередь находится в зависимости от одной малоизвестной компании - нидерландской ASML, которая произвоизводит литографические машины, которые и создают "рисунок" из транзисторов на кристалле. И здесь ситуация аналогичная самой TSMC: производителей литографов в мире много, но вот для самых передовых чипов здесь ASML монополист. Эти машины - настоящее инженерное чудо (рекомендую вот это видео про ASML): тысячи уникальных компонентов, миллиарды долларов инвестиций в исследования и десятки лет разработок, причем при поддержке со стороны мировых производителей электроники, которые между собой конкурируют - неудивительно, что такая компания будет уникальной. Так что если с ней что-то произойдет, то TSMC останется без средств производства, ну и далее - те же последствия. Так что весь технологический мир сегодня буквально зависит от этих двух компаний.
👍1
Write faster Python code, and ship your code faster

Faster and more memory efficient data
- Articles: Learn how to speed up your code and reduce memory usage.
- Products: Observability and profiling tools to help you identify bottlenecks in your code.

Docker packaging for Python
- Articles: Learn how to package your Python application for production.
- Products: Educational books and pre-written software templates.

Navigational hashtags: #armknowledgesharing #armsites
General hashtags: #python #development #docker
1 сентября... 20 лет назад я стал студентом МАИ, 10 лет назад - студентом МГУ. В этот раз похвастаться чем-то похожим, не могу😁
🔥1😁1
2025/10/23 03:05:45
Back to Top
HTML Embed Code: