Аналитика и ML — Вопросы на собеседовании

Вопросы по машинному обучению, классическим алгоритмам ML, анализу данных, SQL и технологиям Big Data.

В чем разница между обучением с учителем (Supervised Learning) и без учителя (Unsupervised Learning)?

* **Обучение с учителем (Supervised)**: Модель обучается на размеченных данных, где для каждого примера есть правильный ответ (таргет). Задачи: регрессия (предсказание цены) и классификация (спам/не спам). * **Обучение без учителя (Unsupervised)**: Модель ищет скрытые закономерности в неразмеченных данных. Задачи: кластеризация (сегментация клиентов), снижение размерности (PCA), поиск аномалий.

Что такое переобучение (Overfitting) и недообучение (Underfitting) модели? Как с ними бороться?

* **Переобучение (Overfitting)**: Модель слишком хорошо запомнила обучающую выборку (шум), но плохо обобщает на новых данных (низкая ошибка на train, высокая на test). * *Борьба*: Регуляризация (L1/L2), кросс-валидация, уменьшение сложности модели, добавление данных, дропаут (в нейросетях). * **Недообучение (Underfitting)**: Модель слишком проста для поиска зависимостей (высокая ошибка везде). * *Борьба*: Усложнение архитектуры модели, добавление новых признаков (feature engineering).

Разница между регуляризацией L1 (Lasso) и L2 (Ridge)?

* **L1 (Lasso)**: Добавляет к функции потерь сумму модулей весов (L1-норму). Способствует занулению весов наименее важных признаков, выполняя автоматический отбор признаков (feature selection). * **L2 (Ridge)**: Добавляет к функции потерь сумму квадратов весов (L2-норму). Штрафует большие веса, делая их близкими к нулю, но никогда не зануляет их полностью.

Как работают метрики Precision, Recall и F1-score?

* **Precision (Точность)**: Доля истинно положительных среди всех предсказанных моделью как положительные. `TP / (TP + FP)`. Важна, когда дороги ложные срабатывания (блокировка транзакций). * **Recall (Полнота)**: Доля истинно положительных среди всех реальных положительных объектов. `TP / (TP + FN)`. Важна, когда нельзя пропустить событие (поиск рака). * **F1-score**: Среднее гармоническое между Precision и Recall. `2 * (P * R) / (P + R)`. Балансирующая метрика.

Как работает алгоритм решающего дерева (Decision Tree)?

Решающее дерево разбивает пространство признаков на области с помощью последовательных вопросов (сплитов). На каждом шаге выбирается признак и порог разбиения, которые максимизируют прирост информации (Information Gain) или минимизируют неопределенность (индекс Джини для классификации, дисперсию для регрессии).

Что такое случайный лес (Random Forest) и как работает бэггинг?

Случайный лес — это ансамбль решающих деревьев, построенный с помощью бэггинга (Bootstrap Aggregating) и метода случайных подпространств: 1. Каждое дерево обучается на случайной подвыборке строк (бутстрап). 2. При каждом разбиении в дереве выбирается случайный поднабор признаков. 3. Финальное предсказание получается усреднением ответов (регрессия) или голосованием большинства (классификация). Это снижает дисперсию модели.

В чем разница между бэггингом (Bagging) и бустингом (Boosting)?

* **Бэггинг**: Деревья обучаются независимо и параллельно. Финальный результат усредняется. Снижает дисперсию (variance) модели. * **Бустинг**: Деревья обучаются последовательно. Каждое следующее дерево обучается на ошибках (остатках) предыдущих, минимизируя функцию потерь. Снижает смещение (bias) модели. Примеры: XGBoost, LightGBM, CatBoost.

Что такое функция активации в нейросетях и какие типы популярны?

Функция активации вводит нелинейность в работу нейросети, позволяя ей моделировать сложные зависимости. **Популярные типы**: * **Sigmoid / Tanh**: Сжимают выход в диапазоны [0, 1] и [-1, 1]. Страдают от затухания градиентов. * **ReLU (Rectified Linear Unit)**: `f(x) = max(0, x)`. Быстро вычисляется, решает проблему затухания градиентов. * **Softmax**: Преобразует вектор выходов в распределение вероятностей классов (сумма равна 1).

Что такое проблема затухания градиентов (Vanishing Gradient) и как ее решить?

Проблема возникает в глубоких нейросетях при обратном распространении ошибки (Backpropagation), когда градиенты становятся экспоненциально меньше при передаче к первым слоям, из-за чего веса почти не обновляются. **Решения**: * Использование функций активации семейства ReLU вместо Sigmoid. * Инициализация весов методом He или Xavier. * Добавление слоев пакетной нормализации (Batch Normalization). * Использование остаточных связей (Skip Connections / Residual Blocks в ResNet).

Разница между SQL оконными функциями (Window Functions) и группировкой GROUP BY?

* **GROUP BY**: Сворачивает исходные строки выборки, возвращая по одной агрегированной строке на каждую группу. * **Оконные функции (`OVER(...)`)**: Выполняют вычисления над группой строк (окном), но **сохраняют исходные строки** в выводе, добавляя результат вычисления новой колонкой к каждой строке. Пример: `ROW_NUMBER()`, `RANK()`, `SUM() OVER(PARTITION BY ...)`.

Что такое градиентный спуск (Gradient Descent) и его модификации (SGD, Adam)?

Градиентный спуск — итеративный алгоритм оптимизации для поиска минимума функции потерь путем движения весов в сторону, противоположную вектору градиента. * **SGD (Stochastic)**: Вычисляет градиент на одном случайном примере (шумно, но быстро). * **Mini-batch GD**: На небольшом батче данных (золотая середина). * **Adam (Adaptive Moment Estimation)**: Адаптивный метод, который сочетает идеи накопления инерции движения (Momentum) и масштабирования шага в зависимости от частоты обновлений весов (RMSProp).

Как устроена работа с Big Data в Apache Spark? Разница между RDD, DataFrame и Dataset?

* **RDD (Resilient Distributed Dataset)**: Базовый низкоуровневый отказоустойчивый распределенный массив объектов в оперативной памяти. Не имеет жесткой схемы. * **DataFrame**: Распределенная таблица со схемой колонок (аналог таблицы БД). Оптимизируется движком Catalyst. * **Dataset**: Строго типизированный DataFrame (доступен в Java/Scala). Проверяет типы на этапе компиляции.

Что такое MapReduce концепция?

Концепция обработки больших данных, состоящая из трех шагов: 1. **Map**: Распределенное чтение и фильтрация данных на множестве нод, генерация пар ключ-значение. 2. **Shuffle**: Сортировка и пересылка данных по сети так, чтобы одинаковые ключи попали на одну ноду. 3. **Reduce**: Агрегирование и свертка результатов по каждому ключу.

В чем разница между базой данных OLAP и OLTP?

* **OLTP (On-Line Transaction Processing)**: Оптимизированы для быстрой записи и чтения точечных строк. Поддерживают транзакции пользователей. Пример: PostgreSQL. * **OLAP (On-Line Analytical Processing)**: Оптимизированы для сложных аналитических запросов над миллионами строк (агрегаты, группировки). Пример: ClickHouse, Snowflake.

Что такое ROC-AUC метрика?

ROC-AUC оценивает качество бинарной классификации. Показывает площадь под кривой зависимости доли истинно положительных ответов (TPR) от доли ложно положительных ответов (FPR) при изменении порога вероятности. Значение `0.5` соответствует случайному гаданию, `1.0` — идеальной модели.

Как работает алгоритм кластеризации K-Means?

K-Means разбивает данные на K кластеров: 1. Случайно выбираются K начальных центров кластеров (центроидов). 2. Каждый объект относится к ближайшему центроиду по евклидову расстоянию. 3. Центроиды пересчитываются как среднее арифметическое объектов внутри каждого кластера. 4. Шаги 2-3 повторяются до сходимости (когда центры перестают сдвигаться).

Что такое дисбаланс классов в данных и как с ним бороться?

Ситуация, когда один класс сильно преобладает над другим (например, 99% чистых транзакций и 1% мошеннических). **Методы борьбы**: * Изменение метрик (использовать F1-score или PR-AUC вместо Accuracy). * Oversampling (дублирование примеров миноритарного класса, алгоритм SMOTE). * Undersampling (случайное удаление примеров мажоритарного класса). * Настройка весов классов в функции потерь (class_weight).

Разница между нормализацией (MinMax) и стандартизацией (StandardScaler) признаков?

* **Нормализация (MinMax)**: Масштабирует признаки в диапазон [0, 1]. Чувствительна к выбросам. * **Стандартизация (StandardScaler)**: Центрирует распределение признака относительно нуля со средним `0` и стандартным отклонением `1`. Более устойчива к выбросам в данных.

Что такое кросс-валидация (Cross-Validation)?

Метод оценки модели, при котором выборка разбивается на K непересекающихся частей (фолдов). Модель обучается K раз на K-1 фолдах, а тестируется на оставшемся фолде. Результаты усредняются. Это дает более надежную оценку качества без привязки к конкретному разбиению.

Что такое разведочный анализ данных (EDA)?

EDA (Exploratory Data Analysis) — этап первичного анализа данных для изучения их структуры, выявления аномалий, пропусков, анализа распределений признаков и корреляций между ними с помощью графиков и описательных статистик.

В чем суть проблемы проклятия размерности (Curse of Dimensionality)?

С увеличением количества признаков объем пространства растет экспоненциально, плотность данных падает, и точки становятся одинаково удаленными друг от друга, что снижает эффективность алгоритмов, основанных на метриках расстояния (например, KNN).

Как работает алгоритм PCA (Principal Component Analysis)?

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

В чем разница между базовыми типами индексов в БД (B-Tree и Hash)?

* **B-Tree**: Древовидный индекс. Поддерживает поиск по равенству, диапазонам (`>`, `<`) и сортировку. Работает за `O(log N)`. * **Hash**: Хэш-индекс. Поддерживает поиск исключительно по точному равенству (`=`) за `O(1)`. Не поддерживает сортировку и диапазоны.

Что такое нормализация баз данных? Разница между 1NF, 2NF и 3NF?

Нормализация устраняет избыточность данных и аномалии. * **1NF**: Все атрибуты атомарны, таблицы не содержат повторяющихся групп колонок. * **2NF**: Удовлетворяет 1NF, и все неключевые атрибуты зависят от полного первичного ключа (актуально для составных ключей). * **3NF**: Удовлетворяет 2NF, и нет транзитивных зависимостей неключевых колонок друг от друга.

Что такое распределенная СУБД с моделью архитектуры Shared-Nothing?

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

В чем отличие между типами соединений INNER JOIN, LEFT JOIN и FULL OUTER JOIN?

* **INNER JOIN**: Возвращает только те строки, для которых есть совпадения в обеих таблицах. * **LEFT JOIN**: Возвращает все строки из левой таблицы и совпадающие из правой (если совпадений нет, подставляется NULL). * **FULL OUTER JOIN**: Возвращает все строки из обеих таблиц, заполняя пропуски NULL-значениями.

Что такое ACID свойства транзакций?

ACID гарантирует надежность выполнения транзакций в СУБД: * **A (Atomicity)**: Атомарность. Транзакция выполняется полностью или не выполняется вообще. * **C (Consistency)**: Согласованность. Транзакция переводит БД из одного валидного состояния в другое. * **I (Isolation)**: Изолированность. Параллельные транзакции не должны мешать друг другу. * **D (Durability)**: Долговечность. Успешно закоммиченные данные не будут потеряны при сбое СУБД.

Что такое уровни изолированности транзакций (Read Uncommitted, Read Committed, Repeatable Read, Serializable)?

Определяют степень защиты от аномалий параллельного выполнения: * **Read Uncommitted**: Допускает чтение «грязных» (еще не закоммиченных) данных. * **Read Committed**: Защищает от грязного чтения. Читаются только закоммиченные данные. * **Repeatable Read**: Защищает от неповторяющегося чтения (повторный запрос в транзакции вернет те же строки). * **Serializable**: Полная изоляция. Транзакции выполняются как бы последовательно. Защищает от фантомного чтения.

Что такое векторные базы данных (Vector Databases)?

Специализированные базы данных (например, Pinecone, pgvector) для эффективного хранения и быстрого поиска ближайших векторов (векторных эмбеддингов, создаваемых нейросетями) с использованием алгоритмов приближенного поиска ближайших соседей (ANN).

Что такое Feature Store в инфраструктуре ML-систем?

Feature Store — это централизованный репозиторий для хранения, документирования и оркестрации вычисления признаков (features) для ML-моделей. Он гарантирует использование одинаковых признаков как во время обучения моделей (батч-запросы), так и во время инференса в продакшене (низколатентные запросы API).

Как работает алгоритм Random Forest и за счет чего он уменьшает переобучение?

Random Forest (случайный лес) — это ансамбль решающих деревьев, основанный на бэггинге (Bagging) и методе случайных подпространств: * **Бэггинг (Bootstrap aggregating)**: Каждое дерево обучается на случайной подвыборке строк из исходного датасета (с возвращением). * **Случайные признаки**: При разбиении в каждом узле дерева выбирается случайное подмножество признаков (колонок), а не все. * **Уменьшение переобучения**: Каждое отдельное дерево переобучено под свою выборку и имеет высокую дисперсию (variance). Однако усреднение предсказаний множества некоррелированных деревьев резко снижает общую дисперсию модели без увеличения смещения (bias).

В чем разница между L1 (Lasso) и L2 (Ridge) регуляризацией?

Регуляризация штрафует модель за слишком большие веса для борьбы с переобучением: * **L1-регуляризация (Lasso)**: Добавляет к функции потерь сумму абсолютных значений весов (`|w|`). Она зануляет веса наименее важных признаков, выполняя автоматический отбор признаков (feature selection), делая модель разреженной. * **L2-регуляризация (Ridge)**: Добавляет к функции потерь сумму квадратов весов (`w^2`). Она уменьшает веса признаков до близких к нулю значений, но никогда не зануляет их полностью. Подходит при наличии мультиколлинеарности.

Как оценивать качество модели классификации (Precision, Recall, F1, ROC-AUC)?

* **Precision (точность)**: Доля истинно положительных ответов среди всех ответов, которые модель пометила как положительные. Минимизирует ложноположительные срабатывания (False Positives). * **Recall (полнота)**: Доля истинно положительных ответов, которые модель нашла, среди всех реальных положительных объектов. Минимизирует пропуски (False Negatives). * **F1-score**: Гармоническое среднее между Precision и Recall. Полезно при несбалансированных классах. * **ROC-AUC**: Площадь под кривой ошибок. Показывает способность модели разделять классы независимо от выбора порога вероятности.

Что такое переобучение (Overfitting) и недообучение (Underfitting)?

* **Overfitting (переобучение)**: Модель слишком хорошо запомнила обучающую выборку (включая шум), но плохо работает на новых данных. Признак: низкая ошибка на обучении, высокая на валидации. Борьба: кросс-валидация, регуляризация, уменьшение числа признаков, ранняя остановка, добавление данных. * **Underfitting (недообучение)**: Модель слишком проста и не уловила структуру данных. Признак: высокая ошибка и на обучении, и на валидации. Борьба: усложнение архитектуры модели, добавление новых признаков (feature engineering), увеличение времени обучения.

Разница между градиентным спуском (GD), стохастическим (SGD) и Adam?

* **GD (Gradient Descent)**: Вычисляет градиент функции потерь по всей выборке данных на каждом шаге. Работает точно, но крайне медленно на больших датасетах. * **SGD (Stochastic GD)**: Вычисляет градиент на каждом шаге по одному случайному объекту (или мини-батчу). Работает быстро, но траектория спуска сильно колеблется (шумит). * **Adam (Adaptive Moment Estimation)**: Адаптивный метод. Он рассчитывает индивидуальную скорость обучения (learning rate) для каждого параметра, используя скользящие средние как самого градиента (инерция, momentum), так и его квадрата (масштабирование скорости).

Как работает алгоритм кластеризации K-Means?

K-Means делит данные на K заранее заданных кластеров: 1. Случайным образом выбираются K точек (центроидов). 2. Каждый объект датасета приписывается к ближайшему центроиду (по евклидову расстоянию). 3. Центроиды пересчитываются как среднее арифметическое координат всех объектов своего кластера. 4. Шаги 2-3 повторяются до тех пор, пока положение центроидов не стабилизируется. * **Выбор K**: Используют метод локтя (Elbow Method) — строят график зависимости внутрикластерной суммы расстояний от K и ищут точку излома.

Что такое теорема Байеса и Наивный Байесовский Классификатор?

Теорема Байеса позволяет пересчитать вероятность события при условии наступления другого события: `P(A|B) = (P(B|A) * P(A)) / P(B)`. * **Наивный Байес**: Алгоритм классификации (часто используется для спам-фильтров). Слово «наивный» означает допущение, что все признаки объекта независимы друг от друга при заданном классе (что редко бывает на практике, но упрощает вычисления и дает на удивление точные результаты).

Разница между Supervised, Unsupervised и Reinforcement Learning?

* **Supervised (с учителем)**: Модель обучается на размеченных данных, где для каждого объекта известен правильный ответ (задачи регрессии и классификации). * **Unsupervised (без учителя)**: Модель ищет скрытые закономерности в неразмеченных данных (задачи кластеризации, снижения размерности, поиска аномалий). * **Reinforcement Learning (с подкреплением)**: Агент обучается взаимодействию со средой, максимизируя получаемую награду за свои действия методом проб и ошибок.

Что такое кросс-валидация (Cross-validation)?

Кросс-валидация (обычно k-fold) используется для надежной оценки качества модели: 1. Датасет делится на k равных частей (фолдов). 2. Модель обучается k раз на (k-1) фолдах, а оставшийся 1 фолд используется для тестирования. 3. Каждый фолд успевает побывать в роли тестового ровно один раз. 4. Результаты тестов усредняются. Это исключает влияние удачного или неудачного разбиения данных на оценку качества.

Как устроен алгоритм градиентного бустинга?

Градиентный бустинг строит ансамбль деревьев последовательно (в отличие от случайного леса, где деревья строятся независимо): 1. Строится первое простое дерево. 2. Вычисляются ошибки (остатки) предсказания первой модели. 3. Следующее дерево обучается предсказывать эти ошибки, а не целевую переменную. 4. Новое дерево добавляется к ансамблю с некоторым весом (learning rate). 5. Шаги 2-4 повторяются. Каждое новое дерево исправляет ошибки предыдущих.

Как работает метод главных компонент (PCA)?

PCA (Principal Component Analysis) — алгоритм снижения размерности данных без учителя. Он находит новые ортогональные оси (главные компоненты), вдоль которых дисперсия (разброс) данных максимальна. Проецируя исходные многомерные данные на эти компоненты, мы можем отбросить последние оси с наименьшей дисперсией, сжав признаки с минимальной потерей информации.

В чем разница между базами данных OLAP и OLTP?

* **OLTP (Online Transaction Processing)**: Оптимизированы под огромное число частых, коротких транзакций на чтение и запись (INSERT, UPDATE). Хранят строки целиком. Пример: PostgreSQL, MySQL. Используются для операционной работы (баланс пользователей, заказы). * **OLAP (Online Analytical Processing)**: Оптимизированы под сложные аналитические запросы к миллионам строк (агрегации, отчеты). Хранят данные по колонкам. Добавление данных идет редкими батчами, перезапись почти не используется. Пример: ClickHouse, Snowflake.

Что такое архитектура MapReduce?

MapReduce — модель вычислений для обработки терабайтов данных на распределенном кластере: * **Map**: Главный узел делит задачу и отправляет чанки данных на рабочие узлы. Каждый узел обрабатывает свои данные локально и генерирует пары `(ключ, значение)`. * **Shuffle**: Данные перегруппировываются так, чтобы все значения с одинаковыми ключами попали на один рабочий узел. * **Reduce**: Рабочие узлы параллельно выполняют агрегацию сгруппированных данных по ключам и сохраняют итоговый результат.

Разница между Data Warehouse (DWH) и Data Lake?

* **Data Warehouse (DWH)**: Хранилище структурированных данных. Данные очищены, преобразованы и разложены по строгой схеме (Schema-on-Write). Источник правды для бизнес-отчетов и аналитики. * **Data Lake (Озеро данных)**: Хранилище сырых данных в исходном формате (структурированные, полуструктурированные JSON/XML, неструктурированные логи, медиа). Схема накладывается только при чтении (Schema-on-Read). Используется для Data Science исследований.

Чем Apache Spark отличается от Hadoop MapReduce?

Главное отличие — **скорость вычислений**. * **Hadoop MapReduce**: После каждого шага (Map, Shuffle, Reduce) записывает промежуточные результаты на жесткие диски (HDFS). Это надежно, но очень медленно из-за дискового ввода-вывода (I/O). * **Apache Spark**: Выполняет все промежуточные вычисления в оперативной памяти (In-Memory) с помощью абстракции RDD (Resilient Distributed Datasets) и ленивых вычислений (DAG), что делает его до 100 раз быстрее Hadoop.

Зачем нужны оконные функции в SQL? Приведите примеры.

Оконные функции выполняют вычисления над набором строк, связанных с текущей строкой (окном), без объединения строк в одну группу (в отличие от `GROUP BY`): * **`ROW_NUMBER()`**: Присваивает уникальный порядковый номер строке в окне. * **`LEAD() / LAG()`**: Позволяют получить значение из следующей или предыдущей строки без самообъединения таблицы (self-join). * Пример: Найти предыдущий заказ пользователя: `LAG(order_date) OVER(PARTITION BY user_id ORDER BY order_date)`.

Разница между INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL JOIN в SQL?

* **`INNER JOIN`**: Возвращает только те строки, для которых есть совпадения в обеих таблицах. * **`LEFT JOIN`**: Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадений нет, для правой таблицы возвращаются `NULL`. * **`RIGHT JOIN`**: Обратно LEFT JOIN: все строки из правой, совпадающие из левой. * **`FULL OUTER JOIN`**: Возвращает все строки из обеих таблиц, заполняя поля `NULL` там, где совпадений не нашлось.

Как оптимизировать медленные SQL запросы?

1. Изучить план выполнения запроса с помощью команды `EXPLAIN` (или `EXPLAIN ANALYZE`), чтобы найти узкие места (например, Seq Scan — полное сканирование таблицы). 2. Создать индексы на поля, участвующие в фильтрации (`WHERE`), джоинах (`JOIN`) и сортировке (`ORDER BY`). 3. Избегать использования `SELECT *` (читать только нужные колонки). 4. Избегать функций над индексируемыми полями в `WHERE` (это отключает использование индекса). 5. Оптимизировать подзапросы, заменив их на `JOIN` там, где это возможно.

A/B тестирование: разница между ошибками I и II рода?

* **Ошибка I рода (False Positive, α)**: Мы отклонили нулевую гипотезу (H0), решив, что изменения дали эффект, хотя на самом деле разницы нет. Обычно фиксируется на уровне 5%. * **Ошибка II рода (False Negative, β)**: Мы приняли нулевую гипотезу, не заметив реальных улучшений в экспериментальной версии. Связана с мощностью теста (`1 - β`, обычно 80%). Чтобы снизить β, нужно увеличивать размер выборки.

Как работать с несбалансированными классами в ML?

Дисбаланс классов (например, 99% нормальных транзакций и 1% фрода) мешает модели обучаться: * **Метрики**: Не использовать Accuracy (точность). Использовать F1-score, Precision-Recall AUC. * **Ресемплинг**: Oversampling (дублирование редкого класса, алгоритм SMOTE генерирует новые синтетические объекты) или Undersampling (удаление объектов мажоритарного класса). * **Взвешивание**: Передать веса классов (`class_weight` в sklearn) в функцию потерь, чтобы штрафовать модель сильнее за ошибки на редком классе.

Назад ко всем разделам · Посмотреть тарифы Hinterly