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

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Какие шаги вы бы предприняли для предобработки данных перед обучением модели, и почему эти шаги важны?

👣 Нормализация или стандартизация числовых признаков. Многие алгоритмы машинного обучения работают лучше, когда числовые признаки имеют одинаковый масштаб.
👣 Кодирование категориальных переменных. Большинство алгоритмов машинного обучения требуют числовые данные на вход.
👣 Удаление признаков с высокой корреляцией. Они могут привести к проблемам в некоторых моделях, например в линейной регрессии.
👣 Применение PCA для уменьшения размерности данных. Здесь следует оценивать каждый конкретный случай.
👣 Заполнение пропущенных значений. Они могут исказить данные.
👣 Создание новых признаков (feature engineering). Это может улучшить производительность модели, особенно если новые признаки содержат важную информацию для задачи.
10
На собесах любят спрашивать, что такое градиентный бустинг и причём здесь градиент.

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

Всё начинается с простого предсказания начальной моделью целевой переменной. Затем вычисляется значение функции потерь (loss). Допустим, что предсказание первой модели на 5 больше настоящего значения. Если бы следующая новая модель выдавала ответ -5, то сумма ответов этих двух моделей оказалась бы идеальной. В реальности моделей может быть сколько угодно — строим до тех пор, пока не получим приемлемый результат.

Каждый очередной алгоритм в градиентном бустинге будет обучаться предсказывать отрицательный градиент (или антиградиент) функции потерь на основе предсказания предыдущей модели. Это позволяет обобщить метод на любую дифференцируемую функцию потерь. Конечным результатом будет взвешенная сумма результатов всех моделей.
🔥9👍3🥰2
🎯 Отличный момент, чтобы поговорить про смещение (bias) и разброс (variance)

Разложение ошибки модели на смещение и разброс называется bias-variance decomposition. Bias показывает, насколько предсказания алгоритма систематически отклоняются относительно истинных значений. Variance характеризует разброс предсказаний в зависимости от обучающей выборки.

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

Есть такое понятие как trade-off (компромисс) между bias и variance. Идея состоит в том, чтобы найти баланс, при котором модель достаточно сложна, чтобы выдавать приближённые к реальным ответы (низкий bias), но также имеет способности к обобщению, чтобы работать хорошо на новых данных (низкий variance).

Если модель недообучена, она не сможет уловить сложные закономерности в данных (высокий bias), но будет более стабильно работать на новых данных (низкий variance). Если модель переобучена, она будет отлично работать на тренировочных данных (низкий bias), но плохо на новых (высокий variance).
👍5🤯5🔥1
Объясните разницу между «обучением с учителем» (supervised) и «обучением без учителя» (unsupervised) и приведите примеры.

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

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

Выбор между supervised и unsupervised зависит от конкретной задачи и наличия/отсутствия размеченных данных.
👍81
Какой должна быть глубина деревьев решений в ансамблях?

Конкретное число назвать нельзя, но есть некоторые наблюдения.

🌲 Random Forest (Случайный лес). Тут можно использовать относительно глубокие деревья, так как метод предполагает уменьшение разброса за счёт усреднения отдельных ответов деревьев. А вот смещение у каждого дерева должно быть маленьким.
🌲 Gradient Boosting (Градиентный бустинг). Здесь, как правило, применяются менее глубокие деревья (например, с глубиной 3). Это помогает снизить риск переобучения.

В целом, оптимальная глубина часто определяется экспериментально. Можно использовать инструменты для перебора параметров, например, GridSearchCV.
🔥3👍2
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Какие существуют алгоритмы классификации?

✏️ Логистическая регрессия. Предсказывает, впрочем, не классы, а вещественные числа — логиты. Для них задаётся порог, который позволит относить объекты к определённому классу.
✏️ KNN (k-ближайших соседей). Определяет класс целевого объекта, исходя из того, какие классы у объектов, наиболее на него похожих.
✏️ SVM (метод опорных векторов). Строится гиперплоскость, разделяющая объекты оптимальным способом.
✏️ Дерево решений. Строится древовидная иерархическая структура для принятия решений на основе атрибутов объектов.
✏️ Случайный лес. Бэггинг над решающими деревьями, то есть использует множество деревьев для улучшения точности.
✏️ Градиентный бустинг. Модель строится путём последовательного улучшения слабых классификаторов.
✏️ Наивный байесовский классификатор. Вероятностный классификатор, основанный на применении теоремы Байеса.
✏️ Нейросети. Существует множество различных вариантов таких классификаторов.
👍15
Чем отличаются друг от друга XGBoost, CatBoost и LightGBM?

XGBoost (eXtreme Gradient Boosting):
- Строит деревья одинаковой конкретной глубины. Построение идёт послойно, а затем отсекаются листья.
- Имеет механизмы регуляризации, чтобы предотвращать переобучение.
CatBoost:
- Специализируется на работе с категориальными данными и не требует их предварительной обработки.
- Использует симметричные деревья, что делает процесс обучения быстрее.
LightGBM (Light Gradient Boosting Machine):
- Строит деревья, ориентируясь не на уровень, а на каждый конкретный лист. Добавляет лист, если разделение по нему даёт прирост в информации.
- Использует технику называемую Gradient-based One-Side Sampling (GOSS), которая уменьшает количество данных в процессе обучения. За счёт этого возрастает скорость.
- Есть механизм Exclusive Feature Bundling (EFB), который объединяет взаимоисключающие переменные в одну. Это тоже увеличивает скорость расчёта.

Для лучшего понимания можно посмотреть лекцию
👍151🔥1
Как вы работали бы с несбалансированным набором данных?

В несбалансированном наборе данных объектов одного класса намного больше, чем объектов другого. Например, в датасете с транзакциями только 400 являются мошенническими, а 300 тысяч — нет. Из-за этого модель может хуже определять мошеннические транзакции.

Чтобы бороться с этим, используют несколько подходов:
🟡 Undersampling. Удаление некоторого количества примеров преобладающего класса.
🟡 Oversampling. Увеличение количества примеров класса, который находится в меньшинстве.
🟡 Комбинирование undersampling и oversampling.
🟡 Создание синтетических данных. Для этого можно использовать SMOTE (англ. Synthetic Minority Oversampling Technique). Алгоритм генерирует некоторое количество искусственных примеров, похожих на имеющиеся в меньшем классе.

Также можно применять взвешивание классов, при котором модель будет сильнее штрафовать за ошибки на меньшем классе. Кроме того, ансамблевые методы могут помочь уменьшить эффект несбалансированности.
🔥8👍1🤯1
Что такое p-value?

P-значение (p-value) указывает на вероятность получить в эксперименте такие или ещё более сильно выраженные различия абсолютно случайно. Например, у нас есть две выборки: одна со средним 20, другая — 18. Наша нулевая гипотеза состоит в том, что эти выборки взяты из одного и того же распределения. Мы вычисляем вероятность получить наблюдаемое отклонение от среднего, исходя из предположения, что нулевая гипотеза верна. Считается, что если полученная вероятность (p) < 0.05, то можно отклонять нулевую гипотезу и принимать альтернативную. Стоит отметить, что граница в 0.05 — это условность.

Важно понимать, что p-значение не говорит о величине эффекта или его практической значимости; оно только помогает определить статистическую значимость результатов.
👍9
Какие методы оптимизации в машинном обучении вы знаете?

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

🟣 Градиентный спуск. Самый простой и известный метод. Параметры модели обновляются с помощью градиента, чтобы прийти к точке минимума. Градиент — это вектор, направление которого совпадает с направлением наискорейшего локального возрастания функции. Соответственно, нас интересует антиградиент, то есть направление наискорейшего локального убывания.

🟣 Стохастический градиентный спуск. Вариация метода выше. В этом случае мы подменяем вычисление градиента по всей выборке вычислением по случайной подвыборке. Это ускоряет процесс обучения.

🟣 Градиентный спуск с моментом. Ещё одна вариация. С математической точки зрения, мы добавляем к градиентному шагу ещё одно слагаемое, которое содержит информацию о предыдущих шагах.

🟣 Adagrad. Адаптация стохастического градиентного спуска. Алгоритм адаптирует размер шага для каждого параметра индивидуально, что позволяет более эффективно находить оптимум.

🟣 RMSprop. Метод, разработанный для решения проблемы быстрого уменьшения скорости обучения в Adagrad.

🟣 Adam (ADAptive Momentum). Объединяет в себе идеи градиентного спуска с моментом и RMSprop.
👍81
Чем различаются нейронная сеть с одним выходом и сигмоидальной функцией активации и такая же нейронная сеть, но с двумя выходами и softmax?

Основное различие кроется в применении.
▪️ Сигмоидальная функция преобразует любое входное значение в значение от 0 до 1. Это часто используется для задач бинарной классификации, где выход можно интерпретировать как вероятность принадлежности к одному из двух классов.
▪️ Softmax преобразует входные сигналы в набор чисел, которые в сумме дают 1. Может применяться в задачах многоклассовой классификации, где каждый выход представляет некоторую степень уверенности в том, что объект принадлежит к одному из классов.

Так, сеть с сигмоидальной функцией и одним выходом может подойти для задач, где нужно определить, принадлежит ли объект к определённому классу или нет («красный»/«не красный»).

Сеть с softmax и двумя выходами лучше подходит для ситуаций, где необходимо сделать выбор между двумя взаимоисключающими классами («красный»/«чёрный») или для задач многоклассовой классификации, где каждый класс представлен отдельным выходом.
👍3
🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.

В ней:
● Новости о прорывных исследованиях в области машинного обучения и нейросетей
● Материалы о применении ИИ в разных сферах
● Статьи об этических аспектах развития технологий
● Подборки лучших онлайн-курсов и лекций по машинному обучению
● Обзоры инструментов и библиотек для разработки нейронных сетей
● Ссылки на репозитории с открытым исходным кодом ИИ-проектов
● Фильмы, сериалы и книги

👉Подписаться👈
🤖 Как бы вы объяснили обучение с подкреплением (reinforcement learning)?

Этот метод моделирует обучение методом проб и ошибок. Вместо обучающей выборки алгоритм взаимодействует с некоторой средой (environment), а в роли «разметки» выступают награда (reward) или штраф (penalty). Это некоторые скалярные величины, которая выдаются после каждого шага взаимодействия со средой. Они показывают, насколько хорошо алгоритм справляется с задачей. По традиции, субъект, который взаимодействует со средой, называется в reinforcement learning агентом (agent).

Цель обучения с подкреплением — найти оптимальную стратегию, которая максимизирует совокупное вознаграждение, получаемое агентом с течением времени.
3
Какие метрики регрессии вы знаете?

🔹 MSE (Mean squared error), среднеквадратическая ошибка. Одна из самых популярных метрик в задаче регрессии. Также применяется в качестве функции потерь. Это среднее квадратов разностей между предсказанными и фактическими значениями.
🔹 MAE (Mean absolute error), средняя абсолютная ошибка. Это среднее абсолютных разностей между предсказанными и фактическими значениями.
🔹 MAPE (Mean absolute percentage error), cредняя абсолютная ошибка в процентах. Тут в знаменатель формулы, как у MAE, добавляют само целевое значение. Получается относительная метрика.
🔹 SMAPE (symmetric mean absolute percentage error). Вариация MAPE, которая позволяет обрабатывать случаи, если в знаменателе оказывается 0.
🔹 WAPE (weighted average percentage error). Ещё одна вариация MAPE, рекомендуется к использованию при расчёте точности прогнозирования.
🔹 RMSLE (root mean squared logarithmic error). Здесь добавляем в формулу логарифмы и некую нормировочную константу. Это ещё один способ перейти от абсолютных ошибок к относительным.
👍4
Какие метрики классификации вы знаете?

🔸 Accuracy (иногда, «точность»). Это доля объектов, для которых модель правильно предсказала класс. Есть обратная ей метрика — доля ошибочных классификаций (error rate). Считается как 1 — accuracy.
🔸 Precision (тоже переводят как «точность»). Это доля правильно предсказанных положительных объектов среди всех объектов, которые модель сочла положительным классом.
🔸 Recall («полнота»). Доля правильно предсказанных положительных объектов среди всех настоящих объектов положительного класса.
🔸 F1-мера. Это среднее гармоническое пары Precision-Recall.
🔸 AUC (Area Under Curve). Чем лучше классификатор разделяет два класса, тем больше площадь под кривой (её ещё называют ROC-кривой). Эта метрика показывает соотношение между долей истинно положительных результатов и долей ложноположительных результатов при разных порогах классификации.
5👍3
Какие основные рекомендательные модели вы знаете?

👤 Коллаборативная фильтрация. Метод строит рекомендации для пользователя, используя известные предпочтения (чаще всего оценки) других пользователей. То есть отталкиваемся от идеи, что похожим пользователям нравятся похожие объекты.
- User-based и item-based алгоритмы:
В первом случае строим предположение, что объект понравится пользователю, если он понравился похожим пользователям. Во втором случае предполагаем, что объект понравится пользователю, если ему понравились похожие объекты.
👤 Алгоритм SVD (сингулярное разложение). Делаем разложение матрицы оценок. Помимо предсказания оценок, алгоритм позволяет выявить скрытые признаки объектов и интересы пользователей.
💯5
Как вы бы проверили вес каждого признака в дереве решений?

Если вы строили дерево решений с помощью библиотеки scikit-learn, то можно использовать атрибут feature_importances_. Он возвращает вектор «важностей» признаков. Индекс элемента в векторе соответствует индексу признака в данных. Эти «важности» вычисляются на базе того, как признак уменьшает меру неопределённости в каждом дереве.
🔥5👍3