Библиотека собеса по Data Science | вопросы с собеседований
4.33K subscribers
416 photos
10 videos
1 file
381 links
Вопросы с собеседований по Data Science и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7dfb7235

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Как PCA работает с пропущенными значениями в данных

Метод главных компонент (PCA) сам по себе не умеет обрабатывать пропущенные значенияему нужны полные строки данных для вычисления ковариационной матрицы или проведения SVD.

Однако есть несколько способов обойти это ограничение:

🔹 Удаление неполных строк (listwise deletion): самый простой вариант — убрать все строки с пропущенными значениями. Но это может сильно сократить объем данных и исказить результат, особенно если данные пропущены не случайно.

🔹 Импутация: замена пропусков на среднее, медиану, значения ближайших соседей (KNN) или с помощью более сложных статистических моделей. После этого можно применять стандартный PCA. Качество результата сильно зависит от точности импутации.

🔹 Expectation-Maximization PCA: специальная итеративная техника, которая попеременно оценивает пропущенные значения и обновляет компоненты PCA. Этот метод сложнее, но может дать более точные результаты, чем обычная импутация.

🔹 Robust PCA / матричное дополнение: альтернативные методы, подходящие для больших и структурированных наборов данных. Они способны восстанавливать недостающие элементы с сохранением низкоранговой структуры, аналогичной PCA.

⚠️ Важно: любой из этих подходов может внести искажения. Если пропущено слишком много данных, или пропуски носят систематический характер, то результат PCA может быть некорректным.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Пиши как профи: 10 Python-лайфхаков для новичков

Лайфхаки от разработчиков, обжёгшихся до вас

➡️ Что вас ждет внутри:
— почему if x == True: — это преступление
— как списковые включения экономят часы
— зачем линтер важнее кофе
— и почему def func(start_list=[]) может испортить тебе вечер
— как не сойти с ума от зависимостей (и что делать с виртуальными окружениями)
— секретный power move: dir(), help() и другие встроенные суперсилы

И всё это без занудства и «книг для чайников». Просто, по делу, с примерами и личным опытом от бывалых питонистов

📎 Статья

🔵 Начинайте свой путь в программировании и прокачивайте свои навыки с нашим курсом «Основы программирования на Python»

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Можно ли эффективно обучать нейросети, если их функция потерь не является выпуклой

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

🔹 Инициализация весов (например, He или Xavier) помогает избежать плохих стартовых точек.
🔹 Batch Normalization стабилизирует и ускоряет обучение.
🔹 Адаптивные оптимизаторы (как Adam, RMSProp) и моментум помогают лучше проходить через сложные участки ландшафта.
🔹 Регуляризация и схемы изменения learning rate снижают риск переобучения и ускоряют сходимость.

Кроме того, в нейросетях с большим числом параметров локальные минимумы часто оказываются «мелкими» и дают схожее качество на валидации. На практике модели с такими минимумами часто обобщаются отлично — даже несмотря на всю теоретическую «хаотичность» функции потерь.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли использовать MSE или MAE для задач классификации

Обычно для классификации используют логистическую или кросс-энтропийную функцию потерь, но в ряде случаев MSE (среднеквадратичную ошибку) или MAE (среднюю абсолютную ошибку) всё же применяют:

🔸 Бинарная классификация с непрерывным выходом: если модель выдаёт не чистый класс, а значение от 0 до 1, можно рассматривать задачу как регрессию и сравнивать это значение с меткой (0 или 1) с помощью MSE или MAE. Но важно понимать, что такой подход даёт слабые градиенты и может сходиться медленнее, чем при использовании кросс-энтропии.

🔸 Порядковая классификация (ordinal): если классы имеют естественный порядок (например, маленький < средний < большой), использование MSE или MAE может быть оправдано — модель учится предсказывать ранг, и ошибки ближе к истине наказываются слабее, чем ошибки, далёкие от неё.

⚠️ Потенциальные проблемы:
При несбалансированных классах MSE/MAE могут вводить в заблуждение
Такие функции не дают вероятностной интерпретации, как логистическая регрессия
Пороговое определение класса (например, всё, что > 0.5 = класс 1) может быть плохо откалибровано

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему логистическая регрессия не подвержена переобучению так же сильно, как деревья решений или нейросети

Логистическая регрессия — это линейная модель, и ее склонность к переобучению значительно ниже, чем у более гибких моделей, таких как decision trees или нейросети. Вот почему:

1. Ограниченная сложность модели

Логистическая регрессия линейно разделяет пространство признаков, что ограничивает ее гипотезы (модельное семейство). Это значит, что она имеет высокое смещение (bias), но низкую дисперсию (variance). Переобучение обычно связано с высокой дисперсией, которой у линейной модели меньше.

2. Малая VC-дименсия

В отличие от деревьев решений, которые могут запомнить структуру обучающей выборки почти целиком, логистическая регрессия имеет гораздо более низкую VC-дименсию, а значит — меньше риск выучить шум.

3. Регуляризация встроена естественным образом

В логистическую регрессию часто добавляют L1 или L2 регуляризацию (например, через параметр C в `sklearn`). Это сдерживает веса модели и предотвращает переобучение.

4. Обучение через оптимизацию функции правдоподобия

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

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

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие практические соображения важны при выборе функции активации

Память, вычислительная эффективность, числовая устойчивость и простота реализации — всё это важные факторы.

Например, ReLU и её варианты являются простыми покомпонентными операциями, которые хорошо оптимизированы на современном оборудовании (GPU и TPU).

Функции типа сигмоида или tanh могут быть более затратными по вычислениям и подвержены переполнению или исчезающе малым значениям в условиях экстремальных входов.

Когда производительность критична, многие исследователи по умолчанию выбирают ReLU — она обеспечивает хороший баланс между точностью, вычислительной эффективностью и стабильностью.

Дополнительные соображения включают в себя:
➡️ требуемый диапазон входов и выходов для последующих слоёв;
➡️ вероятность возникновения исчезающих или взрывающихся градиентов;
➡️ регуляризирующий эффект некоторых функций активации (например, SELU способствует самонормализации при определённых условиях).

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Есть ли встроенные модели регрессии, которые напрямую работают с пропущенными данными

Да, некоторые модели на основе деревьев решений (включая реализации градиентного бустинга и случайных лесов) могут обрабатывать пропущенные данные внутренне. Например, определённые вариации деревьев решений могут использовать суррогатные разбиения или разделения по умолчанию для объектов с отсутствующими значениями признаков.

Это значит, что модель может выбрать альтернативный путь по дереву, если основной признак отсутствует.

Такие механизмы встроены, например, в:
➡️ XGBoost (можно задать missing),
➡️ LightGBM (имеет встроенную поддержку NaN),
➡️ CatBoost (автоматически обрабатывает пропуски).

Однако, несмотря на удобство, следует внимательно оценивать качество модели, особенно если:
➡️ пропусков много,
➡️ отсутствие значений связано с целевой переменной или другими признаками.

В таких случаях простая внутренняя обработка может быть недостаточной, и потребуется анализ природы пропусков или применение более обоснованных методов (импутация, маскирование и др.).

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🎓 Как выбрать свою роль в Data Science и не потеряться в терминах

Если вы только начинаете разбираться в Data Science — перед вами лабиринт из названий: data scientist, аналитик, ML-инженер, BI, архитектор... Кто чем занимается? Что нужно учить?

➡️ Что внутри статьи

— Кто такие Data Engineer

— Чем отличается Data Architect от инженера и зачем он нужен в big data проектах

— Чем занимаются Data Analyst и почему это отличная точка входа в карьеру

— Что делает настоящий Data Scientist

В статье разобрано всё: от задач до технологий, которые реально спрашивают на собеседованиях.

📎 Ссылка

Азбука айтишника #ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!
🤔 Как принять решение: удалять выбросы или оставлять их

Всё зависит от природы выбросов — являются ли они реальными редкими случаями или ошибками в данных.

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

🔹 Если же выброс возник из-за ошибки ввода, дублирования или другого рода артефакта — его можно удалить без особого риска.

Как принять обоснованное решение

Постройте три версии модели:
1. С выбросами.
2. Без выбросов.
3. С обработанными выбросами (например, винзоризацией или логарифмической трансформацией).

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

📌 Контекст имеет значение

В медицине, например, выброс может указывать на критическое состояние пациента — и его ни в коем случае нельзя игнорировать. А в пользовательских логах выброс может быть признаком бот-активности.

Библиотека собеса по Data Science
📱 Как кросс-валидация применяется к большим нейросетям (например, GPT-подобным моделям) с миллионами или миллиардами параметров

Полноценная k-фолд кросс-валидация в контексте таких моделей обычно непрактична из-за колоссальных затрат времени и вычислительных ресурсов. Однако есть ряд подходов, позволяющих сбалансировать проверку качества модели и реалистичность обучения:

❗️ Возможные стратегии

1. Уменьшенное значение k (Reduced k)

Часто используют просто отложенную выборку (hold-out) или 2-фолд кросс-валидацию. Иногда применяют случайные разбиения несколько раз вместо традиционных 5-10 фолдов.

2. Чекпойнты и частичное повторное использование весов

Хотя обучение на каждом фолде требует разных данных, можно:
🟠дообучать модель с уже натренированными весами,
🟠использовать подходы transfer learning или fine-tuning.

Это не полностью корректно, но снижает затраты.

3. Параллельное и распределённое обучение

Если есть достаточное количество ресурсов (кластер, TPU/облачные GPU), фолды можно обучать параллельно.

4. Субсэмплирование данных

При очень больших датасетах можно делать случайную подвыборку на каждом фолде. Это сохраняет распределение, но уменьшает общий объём обучающих данных.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Как обрабатывается дрейф концепции при обучении моделей с несбалансированными классами во времени

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

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

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

Дополнительно отслеживается динамика распределения миноритарного класса. При изменении его частоты или поведенческих характеристик пересматриваются подходы к выборке и настройки, чувствительные к дисбалансу. Метрики, такие как recall на новых поступлениях, фиксируют отклонения, сигнализируя о необходимости обновлений.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Как обнаружить и смягчить эффект популярности (popularity bias) в рекомендательной системе

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

🔍 Как обнаружить

Посмотрите на логи рекомендаций — если небольшая доля контента получает основную массу показов, это тревожный сигнал. Обычно это «голова» распределения (head), тогда как «хвост» (long tail) игнорируется.

🛠 Методы смягчения

Нормализация метрик (например, watch-time) с учетом числа показов — чтобы не усиливать положительную обратную связь.

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

Умное переупорядочивание (re-ranking): резервировать часть позиций в выдаче для менее популярных видео.

⚠️ Важно

• Слишком сильное наказание популярных видео может снизить удовлетворенность пользователя.

• Нельзя наказывать все тематики одинаково: специализированный контент может иметь честно низкие метрики, не из-за предвзятости, а из-за ниши.

Библиотека собеса по Data Science
Как использовать категориальные признаки в k-Means

Алгоритм k-Means плохо работает с категориальными признаками, потому что понятие среднего значения неприменимо к строковым значениям вроде «красный», «синий» или «зелёный».

🛠 Что можно сделать

📍 One-hot encoding — преобразуем каждую категорию в бинарный вектор. Это позволяет применить *k-Means*, но увеличивает размерность и может искажать расстояния.
📍 Label encoding — простой способ, но порядок присвоенных чисел может ввести модель в заблуждение (например, «cat» = 0, «dog» = 1, «elephant» = 2).
📍 Оба метода не гарантируют адекватную интерпретацию расстояний между категориями.

🔄 Альтернатива

Вместо k-Means для категориальных или смешанных данных лучше использовать:
📍 k-Modes — аналог k-Means, но для чисто категориальных признаков (использует моду вместо среднего).
📍 k-Prototypes — работает с числовыми и категориальными данными одновременно.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делать, если во временных рядах есть сезонные пики, которые могут быть ошибочно приняты за выбросы

Временные ряды часто имеют регулярные сезонные колебания — например, рост трафика в выходные или всплески продаж в праздники. Если такие пики воспринимаются как выбросы, модель может неправильно их интерпретировать и давать неточные прогнозы.

Что можно сделать:
1️⃣ Сезонная декомпозиция: методы вроде STL (Seasonal-Trend decomposition using Loess) позволяют выделить тренд, сезонность и остатки. После отделения сезонной составляющей можно искать выбросы только в остатках.
2️⃣ Учет временного контекста: добавьте в модель признаки, отражающие временные аспекты (например, день недели, час суток), чтобы алгоритм «понимал», когда пики — это норма.
3️⃣ Устойчивые модели прогнозирования: такие модели, как Prophet или SARIMA, умеют учитывать сезонность и различать регулярные циклы от настоящих аномалий.

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

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем отличается использование памяти у оптимизаторов Adam и SGD

Adam потребляет больше памяти, чем стандартный SGD, потому что хранит дополнительные данные для адаптивного обновления параметров.

Adam хранит для каждого параметра две дополнительные переменные:
📍 m — экспоненциальное среднее градиентов (первая моментная оценка),
📍 v — экспоненциальное среднее квадратов градиентов (вторая моментная оценка).

То есть если у модели 10 млн параметров, Adam будет хранить ещё 20 млн значений (всего 30 млн), что заметно увеличивает потребление памяти.

SGD:
📍 В базовом виде — не хранит ничего, кроме самих параметров.
📍 С momentum — хранит один дополнительный буфер (скорость), то есть на одну переменную больше на каждый параметр.

На практике:
➡️ Если у вас ограничения по GPU-памяти, и модель или батчи не вмещаются, можно перейти с Adam на SGD, чтобы высвободить память.
➡️ Но стоит помнить, что Adam часто сходится быстрее и лучше работает с разреженными градиентами (например, при работе с текстами или рекомендациями).

Некоторые фреймворки (например, PyTorch) предоставляют памяти-эффективные версии Adam, но они могут требовать ручной настройки или иметь побочные эффекты.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Почему важно устранять первопричину искажения десятичных данных, а не ограничиваться их очисткой

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

📉 Типовой сценарий:
Обнаруживается, что значения теряют дробную часть — например, «12,5» становится «125». После этого данные очищаются, модель переобучается, однако через некоторое время проблема возникает снова.

🎯 Рекомендованный подход — поиск и устранение первоисточника:

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

🛠 После выявления причины необходимо внести корректировки на уровне источника данных:
Обеспечить сохранение числовой точности.
Внедрить строгие проверки форматов и типов.
Настроить автоматические уведомления о появлении подозрительных или выходящих за допустимые границы значений.

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

Библиотека собеса по Data Science
🤔 Почему моя модель машинного обучения резко теряет точность после выхода в продакшн, хотя на тестах всё было отлично

Потому что модель обучалась на «чистом» датасете, а в продакшне сталкивается с реальными, грязными и непредсказуемыми данными.

🧩 Типовые причины падения качества:

1. Искажения входных признаков
— Например, в одном из полей вместо десятичного значения приходит строка или ноль. Модель не понимает контекст и делает ошибочный прогноз.


2. Отсутствие валидации на этапе inference
— Если данные не проходят базовую проверку перед подачей в модель, она работает на мусоре. А мусор на входе = мусор на выходе (GIGO).


3. Появление новых распределений (data drift)
— В продакшн приходят значения, которых в трейне не было. Модель не обучалась на таких случаях и путается.


4. Неверная предобработка в проде
— Самая частая причина: трансформации признаков в проде не совпадают с тем, как они делались в трейне. Всё — от разного кодирования категорий до забытых скейлеров.


🛠 Как защититься

➡️ Внедрить валидацию входных данных (тип, диапазон, формат).
➡️ Использовать инвариантные признаки, устойчивые к мелким искажениям.
➡️ Настроить мониторинг данных на inference, чтобы ловить отклонения от трейна.
➡️ Автоматизировать регулярное переобучение с учётом новых поступающих данных.
➡️ Обеспечить идентичность пайплайнов: то, что в трейне — то и в проде.

Библиотека собеса по Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM