Data Science | Вопросы собесов @easy_ds Channel on Telegram

Data Science | Вопросы собесов

@easy_ds


Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+Kn2WW6VoGrZkNzky
Вакансии t.me/+Ir52wMvyEgo5YWIy

Data Science | Вопросы собесов (Russian)

Вы хотите успешно пройти собеседование на позицию Data Scientist? Тогда канал "Data Science | Вопросы собесов" (@easy_ds) - именно то, что вам нужно! Здесь мы разбираем вопросы, которые часто встречаются на собеседованиях для специалистов в области Data Science

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

Не упустите шанс улучшить свои навыки, подготовиться к интервью и узнать больше о том, как успешно проходить собеседования в сфере Data Science! Присоединяйтесь к нам прямо сейчас и станьте увереннее в своих знаниях и навыках.

Data Science | Вопросы собесов

08 Feb, 16:10


🤔 Какие лоссы есть?

1. MSE (Mean Squared Error) — для регрессии, минимизирует среднеквадратичное отклонение.
2. Cross-Entropy Loss — для классификации, измеряет расхождение между вероятностями.
3. Hinge Loss — для задач с разделяющими гиперплоскостями (например, SVM).
4. KL Divergence — измеряет различия между распределениями.
5. Binary Cross-Entropy — для бинарной классификации.
6. MAE (Mean Absolute Error) — минимизирует абсолютную разницу, устойчив к выбросам.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

08 Feb, 09:10


🤔 Что такое mean?

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

🟠Арифметическое среднее (Arithmetic Mean)
Сумма всех значений в наборе данных, деленная на количество этих значений. Если у нас есть набор данных \([1, 2, 3, 4, 5]\), то среднее будет:
\text{Среднее} = \frac{1 + 2 + 3 + 4 + 5}{5} = 3


🟠Взвешенное среднее (Weighted Mean)
Среднее значение, где каждому значению присваивается определенный вес, отражающий его важность. Если значения \([1, 2, 3]\) имеют веса \([0.1, 0.3, 0.6]\), то взвешенное среднее будет:
\text{Взвешенное среднее} = \frac{(0.1 \times 1) + (0.3 \times 2) + (0.6 \times 3)}{0.1 + 0.3 + 0.6} = 2.5


🟠Гармоническое среднее (Harmonic Mean)
Среднее значение, используемое для наборов данных, состоящих из скоростей или частот. Для набора данных \([1, 2, 4]\), гармоническое среднее будет:
\text{Гармоническое среднее} = \frac{3}{\frac{1}{1} + \frac{1}{2} + \frac{1}{4}} = 1.714


🟠Среднее геометрическое (Geometric Mean)
Среднее значение, используемое для наборов данных, где важны пропорции. Для набора данных \([1, 2, 4]\), среднее геометрическое будет:
\text{Среднее геометрическое} = \left( 1 \times 2 \times 4 \right)^{\frac{1}{3}} = 2


🚩Применение

🟠Экономика
Средняя зарплата, средний доход.
🟠Образование
Средний балл студентов.
🟠Медицина
Среднее значение измерений, таких как кровяное давление или уровень сахара в крови.
🟠Бизнес
Средние показатели продаж, средняя стоимость товаров.

🚩Важность понимания среднего

🟠Анализ данных
Среднее позволяет обобщить и понять большие наборы данных.
🟠Принятие решений
Средние значения используются для принятия обоснованных решений в различных областях, таких как маркетинг, финансы и управление.
🟠Сравнение
Средние значения позволяют сравнивать различные группы или периоды времени.
import numpy as np
from scipy.stats import hmean, gmean

# Данные
data = [1, 2, 3, 4, 5]

# Арифметическое среднее
arithmetic_mean = np.mean(data)
print(f"Арифметическое среднее: {arithmetic_mean}")

# Взвешенное среднее
weights = [0.1, 0.3, 0.6, 0.4, 0.5]
weighted_mean = np.average(data, weights=weights)
print(f"Взвешенное среднее: {weighted_mean}")

# Гармоническое среднее
harmonic_mean = hmean(data)
print(f"Гармоническое среднее: {harmonic_mean}")

# Геометрическое среднее
geometric_mean = gmean(data)
print(f"Геометрическое среднее: {geometric_mean}")


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

07 Feb, 16:10


🤔 Для чего используют Batch Normalization?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

07 Feb, 09:10


🤔 В чем разница между лист и кортежем?

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

🚩Основные различия

🟠Изменяемость
Изменяемый тип данных. Это значит, что после его создания вы можете изменять его содержимое (добавлять, удалять или изменять элементы).
Неизменяемый тип данных. После создания его содержимое не может быть изменено. Это делает кортежи более безопасными для использования в качестве ключей словарей или элементов множеств.
# Список
my_list = [1, 2, 3]
my_list[0] = 100
print(my_list) # Вывод: [100, 2, 3]

# Кортеж
my_tuple = (1, 2, 3)
my_tuple[0] = 100 # Приведет к ошибке TypeError


🟠Память
Списки занимают больше памяти, так как предоставляют дополнительные возможности для управления данными (например, добавление или удаление элементов).
Кортежи занимают меньше памяти, что делает их более эффективными с точки зрения использования памяти при работе с большим объемом данных.

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

🟠Использование
Списки чаще используются для данных, которые нуждаются в частом изменении (например, списки покупок, результаты, которые могут обновляться в процессе работы программы).
Кортежи используются там, где данные не должны изменяться после создания (например, конфигурационные данные программы, параметры функций).
# Список: хранение и изменение данных о студентах
students = ["Alice", "Bob", "Charlie"]
students.append("David")
print(students) # Вывод: ['Alice', 'Bob', 'Charlie', 'David']

# Кортеж: хранение фиксированных данных
coordinates = (40.7128, 74.0060) # Координаты Нью-Йорка
print(coordinates)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

06 Feb, 16:10


🤔 Какие способы регуляризации сетей есть?

1. Dropout — отключение случайных нейронов для предотвращения переобучения.
2. L1 и L2-регуляризация — добавление штрафов к функции потерь для уменьшения весов.
3. Early Stopping — остановка обучения при ухудшении качества на валидации.
4. Data Augmentation — увеличение объема данных путем их преобразований.
5. Batch Normalization — нормализация данных в слоях сети.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

06 Feb, 09:10


🤔 Как представить модель лтв для бизнеса?

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

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

🟠Подробно о методологии
Опишите, какие данные были использованы для обучения модели, какие методы машинного обучения применялись, и как производилась валидация результатов. Объясните выбор определённых переменных и их влияние на прогнозы LTV.

🟠Демонстрация результатов
Используйте визуализации для демонстрации работы модели. Графики, такие как ROC-кривые, диаграммы распределения LTV или сравнения реальных и предсказанных значений LTV, могут помочь наглядно представить эффективность модели. Также покажите, как модель справляется с различными сегментами клиентов.

🟠Бизнес-влияние
Объясните, как использование модели LTV может привести к конкретным бизнес-преимуществам. Приведите примеры улучшений: например, на сколько увеличилась рентабельность за счёт оптимизации маркетинговых затрат или как повысилась общая прибыль за счет более точного прогнозирования поведения клиентов.

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

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

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

05 Feb, 16:10


🤔 Архитектура N кодера на примере BERT.

BERT (Bidirectional Encoder Representations from Transformers):
1. Многослойный энкодер из трансформеров.
2. Использует механизм внимания (self-attention) для изучения взаимосвязей между словами.
3. Двусторонний контекст: слова анализируются как с учетом предыдущих, так и последующих токенов.
4. Задачи предобучения: предсказание пропущенных слов (MLM) и следующего предложения (NSP).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

05 Feb, 14:05


Swipe right or swipe left

Что делать, если твои мэтчи в жизни не такие точные, как твой код?

Спокойно, 14 февраля в 19:00 по МСК мы разберём, как ML анализирует speed dating и предсказывает match.

📌 Мы возьмем реальные данные со speed dating.

📌 Обучим модель, которая скажет: match или swipe left.

📌 Разберём, какие признаки реально важны (спойлер: работа в IT — не прям гарантия успеха (наши маркетологи подтверждают 😥).

💡 Приходи, если хочешь прокачать свой Python, ML и, возможно, станешь идеальной парой, как самый стильные форсы.

👉 Записаться

Data Science | Вопросы собесов

05 Feb, 09:10


🤔 Что такое boosting?

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

🚩Основные идеи бустинга

🟠Последовательное обучение:
В отличие от bagging (например, Random Forest), где модели обучаются параллельно, в бустинге модели обучаются последовательно.
🟠Фокус на ошибках:
Каждая новая модель пытается исправить ошибки, сделанные предыдущими моделями, обучаясь на данных с учетом этих ошибок.
🟠Взвешивание:
Примеры, на которых предыдущие модели ошиблись, получают больший вес, чтобы новая модель уделяла им больше внимания.

🚩Виды бустинга

🟠AdaBoost (Adaptive Boosting):
Один из первых методов бустинга. В AdaBoost каждая новая модель обучается на тех же данных, но с разными весами, которые обновляются в зависимости от ошибок предыдущей модели.
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Загрузка данных
iris = load_iris()
X, y = iris.data, iris.target

# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Создание и обучение модели AdaBoost
model = AdaBoostClassifier(n_estimators=50, random_state=42)
model.fit(X_train, y_train)

# Предсказание на тестовой выборке
y_pred = model.predict(X_test)

# Оценка точности
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")


🟠Gradient Boosting:
Более современный и сложный метод, который строит новые модели для предсказания остаточных ошибок (градиентов) предыдущих моделей.
from sklearn.ensemble import GradientBoostingClassifier

# Создание и обучение модели Gradient Boosting
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)

# Предсказание на тестовой выборке
y_pred = model.predict(X_test)

# Оценка точности
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")


🟠XGBoost:
Экстремальный градиентный бустинг — это улучшенная и оптимизированная версия Gradient Boosting, которая обеспечивает более высокую производительность и эффективность.
from sklearn.ensemble import GradientBoostingClassifier

# Создание и обучение модели Gradient Boosting
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)

# Предсказание на тестовой выборке
y_pred = model.predict(X_test)

# Оценка точности
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")


🚩Плюсы

Высокая точность:
Бустинг часто превосходит по точности одиночные модели и другие методы ансамблевого обучения.
Гибкость:
Может быть использован с различными базовыми моделями и легко адаптируется к различным задачам.
Обработка сложных данных:
Эффективно работает с большими наборами данных и сложными зависимостями.

🚩Минусы

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

04 Feb, 16:10


🤔 Сравнение архитектуры RNN, CNN, трансформера.

1. RNN (Recurrent Neural Networks):
- Обрабатывают последовательности данных (текст, временные ряды).
- Имеют проблемы с долгосрочной зависимостью (решается с помощь LSTM/GRU).
2. CNN (Convolutional Neural Networks):
- Обрабатывают данные с локальными связями (изображения).
- Сильны в извлечении пространственных признаков.
3. Трансформеры:
- Используют механизм внимания, позволяя обрабатывать всю последовательность одновременно.
- Лучшая производительность для текста и смешанных данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

04 Feb, 09:10


🤔 Как в столбце найти медиану,не используя функцию median?

💬 Спрашивают в 14% собеседований

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

🚩Пошаговое объяснение:

🟠Сбор данных: Изначально у нас есть набор данных, который мы представим в виде списка.
🟠Сортировка данных: Мы сортируем этот список по возрастанию.
🟠Определение длины списка: Вычисляем количество элементов в списке.
🟠Поиск медианы:
Если количество элементов нечетное, медианой будет центральный элемент отсортированного списка.
Если количество элементов четное, медианой будет среднее значение двух центральных элементов отсортированного списка.

🤔 Пример кода на Python:
# Пример данных
data = [2.3, 5.1, 7.4, 2.9, 6.5, 4.8, 3.1, 5.7, 8.2, 3.4]


🟠Сортировка данных
sorted_data = sorted(data)


🟠Определение длины списка
n = len(sorted_data)


🟠Поиск медианы
if n % 2 == 1:
# Нечетное количество элементов
median = sorted_data[n // 2]
else:
# Четное количество элементов
mid1 = sorted_data[n // 2 - 1]
mid2 = sorted_data[n // 2]
median = (mid1 + mid2) / 2

print(f"Медиана: {median}")


Объяснение кода:
🟠Сортировка данных: Мы используем функцию sorted() для сортировки данных по возрастанию.
🟠Определение длины списка: Переменная n хранит количество элементов в отсортированном списке.
🟠Поиск медианы:
- Если n нечетное (определяется с помощью n % 2 == 1), медианой является центральный элемент, который находится на позиции n // 2.
- Если n четное, медианой является среднее значение двух центральных элементов. Эти элементы находятся на позициях n // 2 - 1 и n // 2.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

03 Feb, 16:10


🤔 Метрики, классификация?

Метрики классификации измеряют качество работы модели при решении задач классификации. Основные метрики:
1. Accuracy — доля правильно классифицированных объектов.
2. Precision и Recall — точность и полнота, используются для несбалансированных данных.
3. F1-score — гармоническое среднее точности и полноты.
4. ROC-AUC — площадь под кривой ROC, показывает качество модели для всех возможных порогов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

03 Feb, 09:10


🤔 В чем разница между классификацией и регрессией?

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

🚩Классификация

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

🟠Выходные данные
Категориальные (номинальные) или порядковые. Примеры включают определение, является ли электронное письмо спамом или нет, или определение типа животного на изображении.

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

🟠Оценка производительности
Точность, точность (precision), полнота (recall), F1-мера, матрица ошибок и другие метрики классификации.

🚩Регрессия

🟠Выходные данные
Континуальные или непрерывные значения. Примеры включают предсказание цен на дома, предсказание температуры или оценку кредитного скоринга.

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

🟠Оценка производительности
Среднеквадратичная ошибка (MSE), средняя абсолютная ошибка (MAE), коэффициент детерминации \( R^2 \) и другие.

🟠Классификация
Определение, содержит ли изображение кошку, собаку или птицу.

🟠Регрессия
Предсказание стоимости жилья на основе его характеристик, таких как площадь, количество комнат и расположение.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

02 Feb, 16:10


🤔 Когда берём t-критерий, а когда Манна-Уитни?

t-критерий используется, если данные нормально распределены, а их дисперсии равны.
Критерий Манна-Уитни применяется для несоответствия этих условий, так как он является непараметрическим и не зависит от формы распределения данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

02 Feb, 09:10


🤔 Почему в картинках используют StandardScaling вместо MinMaxScaling ?

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

🚩Standard Scaling (стандартизация)

Заключается в преобразовании данных таким образом, чтобы они имели нулевое среднее значение и единичное стандартное отклонение.

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

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

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

from sklearn.preprocessing import StandardScaler
import numpy as np

# Пример изображения (грейскейл)
image = np.array([[0, 50, 100], [150, 200, 255], [30, 70, 120]])

# Преобразование в одномерный массив
image_flattened = image.flatten().reshape(-1, 1)

# Стандартизация
scaler = StandardScaler()
image_scaled = scaler.fit_transform(image_flattened)

# Возвращение к оригинальной форме
image_standardized = image_scaled.reshape(image.shape)
print(image_standardized)


🚩Min-Max Scaling (масштабирование к диапазону)

Заключается в преобразовании данных таким образом, чтобы они находились в заданном диапазоне, обычно от 0 до 1.

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

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

🟠Чувствительность к выбросам
Масштабирование к диапазону очень чувствительно к выбросам, что может сильно исказить распределение данных.

🟠Сложность работы с градиентными методами
Для методов, использующих градиенты, Min-Max Scaling может привести к неравномерным шагам в оптимизации, особенно если данные имеют различную дисперсию.

from sklearn.preprocessing import MinMaxScaler
import numpy as np

# Пример изображения (грейскейл)
image = np.array([[0, 50, 100], [150, 200, 255], [30, 70, 120]])

# Преобразование в одномерный массив
image_flattened = image.flatten().reshape(-1, 1)

# Масштабирование к диапазону 0-1
scaler = MinMaxScaler()
image_scaled = scaler.fit_transform(image_flattened)

# Возвращение к оригинальной форме
image_minmax_scaled = image_scaled.reshape(image.shape)
print(image_minmax_scaled)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

01 Feb, 16:10


🤔 Как обучается модель случайного леса?

Случайный лес состоит из множества решающих деревьев. Каждый дерево обучается на случайной подвыборке данных (bagging) и использует случайный подмножество признаков для уменьшения корреляции между деревьями. Результат предсказания формируется через усреднение (для регрессии) или голосование (для классификации).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

01 Feb, 09:10


🤔 Чем еще можно тьюнить, кроме batch norm ?

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

🟠Оптимизаторы
Разные оптимизаторы могут существенно влиять на скорость и качество обучения моделей.
SGD (Stochastic Gradient Descent): Основной метод стохастического градиентного спуска.
Adam (Adaptive Moment Estimation): Популярный оптимизатор, который адаптивно изменяет скорости обучения для каждого параметра.
RMSprop: Оптимизатор, который использует скользящее среднее квадратов градиентов для адаптации скорости обучения.
Adagrad: Оптимизатор, который адаптирует скорость обучения на основе частоты параметров.
from tensorflow.keras.optimizers import Adam

model.compile(optimizer=Adam(learning_rate=0.001), loss='mse')


🟠Архитектура модели
Выбор архитектуры модели может значительно влиять на ее производительность.
Число слоев и нейронов: Увеличение количества слоев и нейронов может повысить способность модели к обучению сложных зависимостей, но также может привести к переобучению. Тип слоев: Использование различных типов слоев, таких как сверточные слои (Conv), рекуррентные слои (RNN, LSTM, GRU), слои нормализации (BatchNorm, LayerNorm) и слои Dropout, может улучшить производительность модели.

🟠Функции активации
Выбор функций активации может существенно повлиять на способность модели обучаться и аппроксимировать сложные функции. ReLU (Rectified Linear Unit): Широко используемая функция активации. Leaky ReLU: Вариант ReLU, который решает проблему "мертвых" нейронов Sigmoid: Используется в выходных слоях для бинарной классификации. Tanh: Используется в скрытых слоях.
from tensorflow.keras.layers import Dense, LeakyReLU

model.add(Dense(64))
model.add(LeakyReLU())


🟠Регуляризация
Помогает избежать переобучения и улучшает обобщающую способность модели. Dropout: Случайное отключение нейронов во время обучения для предотвращения переобучения. L1/L2 регуляризация: Добавление штрафа за большие веса к функции потерь. Data Augmentation: Увеличение объема данных за счет применения различных преобразований, таких как повороты, сдвиги и изменения яркости.
from tensorflow.keras.layers import Dropout
from tensorflow.keras.regularizers import l2

model.add(Dense(64, activation='relu', kernel_regularizer=l2(0.01)))
model.add(Dropout(0.5))


🟠Скорость обучения и стратегии обучения
Подбор правильной скорости обучения и применение различных стратегий изменения скорости обучения в процессе обучения модели. Learning Rate Scheduling: Планирование изменения скорости обучения в процессе обучения. Early Stopping: Остановка обучения, когда производительность на валидационном наборе перестает улучшаться. Gradient Clipping: Ограничение величины градиентов для предотвращения взрывающихся градиентов.
from tensorflow.keras.callbacks import LearningRateScheduler, EarlyStopping

def lr_schedule(epoch, lr):
if epoch > 10:
lr = lr * 0.1
return lr

lr_scheduler = LearningRateScheduler(lr_schedule)
early_stopping = EarlyStopping(patience=5, restore_best_weights=True)

model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2, callbacks=[lr_scheduler, early_stopping])


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

31 Jan, 16:10


🤔 Если говорить про бизнес, что лучше выбрать: линейную модель или дерево?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

31 Jan, 09:10


🤔 В чём отличия RoBERTa от BERT?

Это улучшенная версия модели BERT (Bidirectional Encoder Representations from Transformers), созданная с целью повышения её производительности за счёт модификации процесса обучения. Оба алгоритма основаны на архитектуре трансформеров и применяются для задач обработки естественного языка (NLP), таких как классификация текста, вопрос-ответные системы и другие. Основные отличия между RoBERTa и BERT заключаются в подходе к обучению.

🚩Основные отличия RoBERTa от BERT

🟠Масштаб и объём данных для обучения
BERT: Обучался на двух корпусах текстов: Wikipedia (2,5 млрд слов) и BookCorpus (800 млн слов).
RoBERTa: Использует значительно больший объём данных (~160 ГБ), включая:
Common Crawl News;
OpenWebText;
Stories от BooksCorpus и других источников.

🟠Оптимизация задачи маскированного моделирования языка (MLM)
BERT: Маскирует 15% токенов во входных данных и использует эту фиксированную маскировку на протяжении всей эпохи обучения.
RoBERTa: Применяет динамическую маскировку токенов, где токены маскируются случайно на каждой итерации.

🟠Исключение задачи NSP (Next Sentence Prediction)
BERT: Обучается на задаче NSP, где модель предсказывает, идут ли два предложения подряд.
RoBERTa: Убрала задачу NSP, так как эксперименты показали, что она незначительно влияет на производительность.

🟠Размер батча и количество шагов
BERT: Использует меньшие размеры батча (до 256) и обучался 1 млн шагов.
RoBERTa: Увеличивает размер батча до 8,000 и обучается 500,000 шагов.

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

🚩Результаты и преимущества RoBERTa

RoBERTa демонстрирует лучшую производительность на многих бенчмарках, таких как GLUE, SQuAD и RACE, в сравнении с BERT.
Она более эффективна при больших вычислительных ресурсах и данных.

🚩Пример применения RoBERTa

from transformers import RobertaTokenizer, RobertaForSequenceClassification
import torch

# Загрузка токенайзера и модели RoBERTa
tokenizer = RobertaTokenizer.from_pretrained("roberta-base")
model = RobertaForSequenceClassification.from_pretrained("roberta-base")

# Входной текст
text = "RoBERTa is an optimized version of BERT."

# Токенизация
inputs = tokenizer(text, return_tensors="pt")

# Предсказание
outputs = model(**inputs)
logits = outputs.logits

print("Logits:", logits)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

30 Jan, 16:10


🤔 Какие методы регуляризации есть?

1. L1 и L2-регуляризация — добавляют штрафы за веса модели в функцию ошибки.
2. Dropout — случайно отключает нейроны во время обучения.
3. Early stopping — прекращает обучение при ухудшении метрики на валидации.
4. Data augmentation — искусственно увеличивает обучающую выборку.
5. Batch normalization — нормализует активации внутри слоёв.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

30 Jan, 09:10


🤔 Как использовать P-value, когда мы проверяем какую-то гипотезу?

P-value (уровень значимости) является ключевым элементом в статистической гипотезе. Он используется для оценки вероятности того, что наблюдаемые данные (или более экстремальные данные) могли бы быть получены при условии, что нулевая гипотеза верна. Вот как использовать P-value при проверке гипотезы:

🚩Шаги использования P-value для проверки гипотезы

1⃣Формулировка гипотез
Нулевая гипотеза (H0): утверждение, которое мы хотим проверить. Обычно это гипотеза об отсутствии эффекта или различий.
Альтернативная гипотеза (H1): утверждение, которое принимается, если нулевая гипотеза отклоняется. Это гипотеза о наличии эффекта или различий.

2⃣Выбор уровня значимости (α)
Уровень значимости (α) — это пороговое значение, которое определяет критическую область. Обычно используется значение 0.05 (5%), но может быть и другим в зависимости от контекста исследования.

3⃣Сбор данных и расчет статистического теста
Сбор данных и проведение соответствующего статистического теста (например, t-тест, χ²-тест, ANOVA и т.д.). Расчет P-value на основе полученных данных.

🚩Интерпретация P-value

Сравнение P-value с уровнем значимости α.
Если P-value ≤ α, отвергаем нулевую гипотезу (H0). Это означает, что результаты статистически значимы, и существует достаточно доказательств в пользу альтернативной гипотезы (H1).
Если P-value > α, не отвергаем нулевую гипотезу. Это означает, что результаты не являются статистически значимыми, и нет достаточных доказательств для принятия альтернативной гипотезы.

🟠Формулировка гипотез
Нулевая гипотеза (H0): Средний рост мужчин равен 175 см. Альтернативная гипотеза (H1): Средний рост мужчин не равен 175 см.

🟠Выбор уровня значимости
Уровень значимости α = 0.05.

🟠Сбор данных и расчет статистического теста
Предположим, у нас есть выборка из 50 мужчин с средним ростом 178 см и стандартным отклонением 10 см.
Используем t-тест для одной выборки.
Вычисляем t-статистику и P-value.

import scipy.stats as stats

# Данные выборки
sample_mean = 178
population_mean = 175
sample_std = 10
sample_size = 50

# Вычисление t-статистики
t_statistic = (sample_mean - population_mean) / (sample_std / (sample_size ** 0.5))

# Вычисление P-value для двустороннего теста
p_value = 2 * (1 - stats.t.cdf(abs(t_statistic), df=sample_size-1))

print("t-статистика:", t_statistic)
print("P-value:", p_value)


🚩Интерпретация P-value

Предположим, P-value = 0.03.
Сравниваем P-value с уровнем значимости α:
P-value = 0.03 ≤ 0.05.
Отвергаем нулевую гипотезу (H0). Это означает, что средний рост мужчин в выборке статистически значимо отличается от 175 см.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

29 Jan, 16:10


🤔 Что такое о квантизация?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

29 Jan, 09:10


🤔 В чем разница между классификацией и регрессией?

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

🚩Классификация

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

🟠Выходные данные
Категориальные (номинальные) или порядковые. Примеры включают определение, является ли электронное письмо спамом или нет, или определение типа животного на изображении.

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

🟠Оценка производительности
Точность, точность (precision), полнота (recall), F1-мера, матрица ошибок и другие метрики классификации.

🚩Регрессия

🟠Выходные данные
Континуальные или непрерывные значения. Примеры включают предсказание цен на дома, предсказание температуры или оценку кредитного скоринга.

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

🟠Оценка производительности
Среднеквадратичная ошибка (MSE), средняя абсолютная ошибка (MAE), коэффициент детерминации \( R^2 \) и другие.

🟠Классификация
Определение, содержит ли изображение кошку, собаку или птицу.

🟠Регрессия
Предсказание стоимости жилья на основе его характеристик, таких как площадь, количество комнат и расположение.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

28 Jan, 16:10


🤔 Что такое дистиляция?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

28 Jan, 09:10


🤔 Чем отличается градиентный спуск от сгт?

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

🚩Градиентный спуск (GD)

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

🚩Плюсы и минусы

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

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

Вычислительная затратность
Необходимость использования всего набора данных для одного обновления делает метод медленным и вычислительно дорогим, особенно для больших наборов данных.

Масштабируемость
Метод плохо масштабируется при увеличении размера данных.

🚩Стохастический градиентный спуск (SGD)

В нем параметры модели обновляются для каждого обучающего примера или для небольшой группы примеров (мини-пакета). Градиент функции потерь рассчитывается отдельно для каждого примера или мини-пакета.

🚩Плюсы и минусы

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

Хорошая масштабируемость
SGD хорошо работает с большими наборами данных и подходит для онлайн-обучения.

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

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

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

27 Jan, 16:10


🤔 Какие современные архитектуры языковых моделей известны?

1. Transformer (например, GPT, BERT) — базируется на механизме внимания.
2. RNN/LSTM/GRU — более старые архитектуры для обработки последовательностей.
3. T5 и BART — модели для задач генерации текста и обработки последовательностей.
4. LaMDA и PaLM — современные языковые модели от Google для диалогов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

27 Jan, 09:10


🤔 Какие коэффиценты с помощью машинного обучения подбираются?

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

🟠Линейная и логистическая регрессия
Веса (коэффициенты) признаков: Эти модели предсказывают выходное значение как взвешенную сумму входных признаков, где каждый признак умножается на соответствующий вес. В математической формулировке для линейной регрессии это выражается как \( y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n \), где \( \beta_i \) — коэффициенты, которые модель стремится оптимизировать.
Свободный член (интерсепт, \(\beta_0\)): Это константа, добавляемая к взвешенной сумме, которая позволяет линейной функции не проходить обязательно через начало координат.

🟠Нейронные сети
Веса нейронов: В нейронных сетях каждый нейрон в каждом слое имеет веса, которые определяют вклад входных данных (или результатов предыдущего слоя) в активацию нейрона.
Смещения (biases): Каждый нейрон также может иметь смещение, которое добавляется к взвешенной сумме его входов перед применением функции активации.

🟠Машины опорных векторов (SVM)
Веса: В линейной SVM модели эти веса определяют гиперплоскость, которая максимально отделяет классы данных.
Параметр регуляризации (C): Не является коэффициентом модели в прямом смысле, но это параметр, который нужно настроить в процессе обучения и который контролирует компромисс между достижением малой ширины разделяющей полосы и ограничением количества ошибочных классификаций.

🟠Решающие деревья
Правила разделения: В решающих деревьях коэффициенты — это критерии разделения в каждом узле дерева, которые определяют, как данные будут разделяться на этапах решения.

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

26 Jan, 16:10


🤔 Что известно про юнит (UNet)?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

26 Jan, 09:10


🤔 Примеры моделей с большим смещением и большой дисперсией?

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

🚩Модели с Большим Смещением (High Bias)

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

🟠Линейная регрессия
Хотя линейная регрессия может быть мощным инструментом для предсказания, она предполагает линейную зависимость между входными и выходными переменными. Если истинная зависимость в данных носит нелинейный характер, линейная модель не сможет адекватно моделировать данные и будет иметь высокое смещение.

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

🚩Модели с Большой Дисперсией (High Variance)

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

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

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

Ставь
👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

25 Jan, 16:10


🤔 Что известно об этих двух понятиях: стэкинг и блэндинг?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

25 Jan, 09:10


🤔 Как избегают коллизии в хеш мапе ?

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

🚩Открытая адресация (Open Addressing)

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

🟠Линейное пробирование
При коллизии проверяется следующая ячейка таблицы. Если она занята, проверяется следующая и т.д., пока не будет найдена свободная ячейка.

🟠Квадратичное пробирование
Используется квадратичная функция для вычисления смещения от исходной позиции при каждом шаге пробирования (например, 1, 4, 9, 16 и т.д.).

🟠Двойное хеширование
Используются две хеш-функции для вычисления начального индекса и шага пробирования, чтобы найти свободную ячейку.

🚩Сцепление (Chaining)

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

🚩Рехеширование (Rehashing)

Рехеширование предполагает использование дополнительных хеш-функций при коллизиях. Если первичная хеш-функция приводит к коллизии, применяется вторая хеш-функция, и так далее, пока не будет найдена свободная ячейка или не будут использованы все доступные хеш-функции.
class HashTable:
def __init__(self, size=10):
self.size = size
self.table = [[] for _ in range(size)]

def hash_function(self, key):
return hash(key) % self.size

def insert(self, key, value):
index = self.hash_function(key)
for item in self.table[index]:
if item[0] == key:
item[1] = value
return
self.table[index].append([key, value])

def get(self, key):
index = self.hash_function(key)
for item in self.table[index]:
if item[0] == key:
return item[1]
raise KeyError('Key not found')

def remove(self, key):
index = self.hash_function(key)
for i, item in enumerate(self.table[index]):
if item[0] == key:
del self.table[index][i]
return
raise KeyError('Key not found')

# Пример использования
ht = HashTable()
ht.insert("key1", "value1")
ht.insert("key2", "value2")
print(ht.get("key1")) #

выводит "value1"
ht.remove("key1")


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

24 Jan, 16:10


🤔 Как бороться с переобучением?

1. Использовать регуляризацию, например, L1L1 или L2L2-регуляризацию, чтобы снизить сложность модели.
2. Применять методы кросс-валидации для оптимального выбора параметров модели.
3. Уменьшать размер модели (количество признаков) или увеличивать объём данных.
4. Добавлять техники, такие как Dropout для нейронных сетей, чтобы избежать чрезмерного запоминания тренировочных данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

24 Jan, 09:10


🤔 Опиши дизайн эксперимента проверки работы рекомендательной модели при условии деления пользователей по геопозиции?

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

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

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

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

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

🟠Экспериментальное тестирование
Разработанная модель тестируется на разных группах пользователей. Можно провести A/B-тестирование, где одной группе показываются рекомендации без учета геопозиции, а другой — с учетом. Также можно сравнить работу модели на разных географических группах.

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

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

# Пример кода для разделения пользователей по геопозиции и подготовки данных
import pandas as pd

# Загрузка данных
data = pd.read_csv('user_data.csv')

# Предполагаем, что у нас есть колонки 'user_id', 'region' и 'interaction'
# Разделение данных по регионам
groups = data.groupby('region')

# Пример создания модели и оценки для каждой группы
for region, group_data in groups:
train, test = train_test_split(group_data, test_size=0.2)
model = train_model(train)
results = evaluate_model(model, test)
print(f"Результаты для региона {region}: {results}")


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

23 Jan, 16:10


🤔 Чем функция __init__ в классе отличается от функции __new__?

• __new__ отвечает за создание нового экземпляра класса и вызывается перед __init__. Она возвращает созданный объект.
• __init__ инициализирует созданный объект, задавая ему начальные значения атрибутов.
Важно: __new__ чаще используется для работы с неизменяемыми объектами (например, int, str), тогда как __init__ предназначен для настройки объекта после его создания.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

23 Jan, 09:10


🤔 В чем отличия между loc и iloc?

Методы loc и iloc предназначены для доступа к данным в DataFrame или Series, но они используют разные способы индексации.

🚩loc

Использует метки для доступа к данным. Это означает, что вы используете имена строк и столбцов, которые вы видите на выводе вашего DataFrame или Series для выборки данных. Метод loc может использоваться для доступа к отдельным значениям, срезам, а также условной индексации.
import pandas as pd

data = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
}, index=['a', 'b', 'c'])

# Доступ к элементу с индексом 'b' и столбцом 'A'
print(data.loc['b', 'A']) # Вывод: 2

# Срез данных, включающий строки 'a' и 'b'
print(data.loc['a':'b'])


🚩iloc

Использует целочисленную индексацию для доступа к данным, независимо от меток, которые установлены на индексах или столбцах DataFrame. Это означает, что вы используете числа, чтобы указать, какие строки или столбцы вы хотите выбрать, начиная от 0.
import pandas as pd

data = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
}, index=['a', 'b', 'c'])

# Доступ к элементу во второй строке и первом столбце (индексация начинается с 0)
print(data.iloc[1, 0]) # Вывод: 2

# Срез данных, включающий первые две строки
print(data.iloc[0:2])


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

22 Jan, 16:10


🤔 В чем разница между классификацией и регрессией?

1. Классификация: предсказывает категориальные значения (например, класс A или B).
2. Регрессия: предсказывает непрерывные значения (например, цену, вес).
3. Метрики оценки различны: для классификации используются ROC-AUC, F1, а для регрессии — MSE, MAE.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

22 Jan, 09:10


🤔 Что знаешь про early stopping?

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

🚩Что происходит при элюстопинге?

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

🚩Где встречается?

🟠Жидкостная хроматография (ЖХ)
В ЖХ элюстопинг важен для оптимизации элюента и определения момента, когда разделение завершено.
🟠Газовая хроматография (ГХ)
Элюстопинг применяется при работе с летучими соединениями для оценки времени удерживания и выхода веществ.

🚩Как использовать элюстопинг?

Для достижения элюстопинга важно правильно выбрать:
Тип элюента (подвижной фазы);
Скорость потока подвижной фазы;
Температурные параметры (если это газовая хроматография);
Характеристики неподвижной фазы.

Это позволяет завершить процесс анализа без потери данных о компонентах.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

21 Jan, 16:10


🤔 Как при проверке гипотезы разбить все существующие магазины компании на две группы?

1. Использовать рандомизацию, чтобы группы были максимально схожими по характеристикам.
2. Учитывать важные метрики (выручка, средний чек), чтобы группы были сбалансированными.
3. Можно применить стратификацию, разделив магазины на сегменты перед рандомизацией.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

21 Jan, 09:10


🤔 Как работает mse?

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

🚩Рассчитывается по формуле

\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2

где
\( n \) — количество наблюдений в данных,
\( y_i \) — фактические значения целевой переменной,
\( \hat{y}_i \) — предсказанные моделью значения.

🚩Как он работает

🟠Разница между предсказанными и фактическими значениями
Для каждого наблюдения в данных вычисляется разность между предсказанным значением (\( \hat{y}_i \)) и фактическим значением (\( y_i \)).

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

🟠Усреднение
Квадраты отклонений суммируются, а затем результат делится на количество наблюдений \( n \). Это дает среднее значение квадратов ошибок.

🚩Зачем он используется

🟠Сравнение моделей
Предоставляет четкий количественный показатель, который можно использовать для сравнения качества разных предиктивных моделей на одном и том же наборе данных.

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

from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np

# Сгенерируем некоторые данные
np.random.seed(0)
X = np.random.rand(100, 1)
y = 2 * X[:, 0] + 1 + np.random.randn(100) * 0.1

# Разбиваем данные на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создаем и обучаем модель
model = LinearRegression()
model.fit(X_train, y_train)

# Делаем предсказания на тестовых данных
y_pred = model.predict(X_test)

# Рассчитываем MSE
mse = mean_squared_error(y_test, y_pred)
print("MSE:", mse)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

20 Jan, 16:10


🤔 Какие проблемы могут возникнуть при проверке сразу 10 гипотез?

1. Ошибка множественного сравнения: увеличивается вероятность ложных положительных результатов.
2. Ухудшается интерпретируемость результатов из-за возможного совпадения случайных данных.
3. Для устранения проблемы применяются поправки, такие как метод Бонферрони или FDR.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

20 Jan, 09:10


🤔 Какие знаешь рекомендательные модели ?

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

🟠Коллаборативная фильтрация
Эта модель работает на основе предпочтений или оценок, которые пользователи выставляют товарам или услугам. Она может быть реализована двумя способами: Пользователь-пользователь: Рекомендации формируются на основе схожести между пользователями. Если два пользователя похоже оценивают одни и те же товары, то товары, понравившиеся одному из них, могут быть рекомендованы другому. Товар-товар: Рекомендации формируются на основе схожести между товарами. Если товары часто оцениваются схожим образом разными пользователями, то они могут быть рекомендованы как похожие.

🟠Контентная фильтрация
Этот подход использует характеристики самих объектов (например, описание фильмов или характеристики товаров) для рекомендаций. Если пользователю понравился товар с определенными характеристиками, система рекомендует другие товары с похожими характеристиками.

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

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

🟠Модели глубокого обучения
Современные методы, такие как сверточные нейронные сети (CNN) для анализа изображений товаров или рекуррентные нейронные сети (RNN) для работы с последовательностями и временными рядами. Например, системы рекомендации Netflix для фильмов используют машинное обучение для анализа предпочтений пользователя и предсказания оценок.

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# Допустим, у нас есть следующий набор данных оценок пользователей
data = {'User': ['User1', 'User2', 'User3'],
'Item1': [5, 3, 2],
'Item2': [4, 1, 6],
'Item3': [1, 5, 2]}
df = pd.DataFrame(data).set_index('User')

# Вычисляем косинусное сходство между товарами
similarity_matrix = cosine_similarity(df.T)

# Преобразуем в DataFrame для удобства
similarity_df = pd.DataFrame(similarity_matrix, index=df.columns, columns=df.columns)
print(similarity_df)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

19 Jan, 16:10


🤔 Почему в статистических тестах часто нулевой гипотезой берут отсутствие различий?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

19 Jan, 09:10


🤔 Как решить задачу, где присутствует одновременно два target - один categorical другой continuous?

Решение задачи, в которой одновременно присутствуют два целевых признака (один категориальный и один непрерывный), можно реализовать через подход многозадачного обучения (multi-task learning). Это подход, при котором одна модель или несколько связанных моделей обучаются одновременно решать несколько задач. Вот пошаговое объяснение, как можно это сделать.

🚩 Определение задач

🟠 Категориальный признак (classification target)
Например, предсказание категории продукта (класс A, класс B, класс C).
🟠Непрерывный признак (regression target)
Например, предсказание стоимости продукта.

🚩 Подходы к решению

🟠Многозадачное обучение с нейронными сетями
Создание единой нейронной сети, которая имеет общие слои для извлечения признаков и отдельные выходные слои для каждой задачи.
🟠Параллельное обучение отдельных моделей
Обучение отдельных моделей для каждой задачи, но с использованием общих признаков и возможной передачи информации между моделями.

В данном примере мы используем библиотеку Keras для построения нейронной сети, которая решает обе задачи одновременно.
import pandas as pd
import numpy as np
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense

# Пример данных
data = pd.DataFrame({
'feature1': np.random.rand(100),
'feature2': np.random.rand(100),
'categorical_target': np.random.randint(0, 3, 100), # 3 класса
'continuous_target': np.random.rand(100) * 1000
})

# Разделение признаков и целевых переменных
X = data[['feature1', 'feature2']].values
y_class = data['categorical_target'].values
y_reg = data['continuous_target'].values

# Определение входного слоя
input_layer = Input(shape=(X.shape[1],))

# Общие слои для извлечения признаков
common_layer = Dense(64, activation='relu')(input_layer)
common_layer = Dense(32, activation='relu')(common_layer)

# Отдельный выходной слой для классификации
classification_output = Dense(3, activation='softmax', name='classification_output')(common_layer)

# Отдельный выходной слой для регрессии
regression_output = Dense(1, activation='linear', name='regression_output')(common_layer)

# Создание модели
model = Model(inputs=input_layer, outputs=[classification_output, regression_output])

# Компиляция модели с различными функциями потерь для каждой задачи
model.compile(optimizer='adam',
loss={'classification_output': 'sparse_categorical_crossentropy', 'regression_output': 'mse'},
metrics={'classification_output': 'accuracy', 'regression_output': 'mse'})

# Обучение модели
model.fit(X, {'classification_output': y_class, 'regression_output': y_reg}, epochs=50, batch_size=16)


🚩Объяснение кода

🟠Определение входного слоя
Определяем входной слой, принимающий признаки.
🟠Общие слои
Создаем несколько слоев для извлечения признаков, которые будут общими для обеих задач.
🟠Отдельные выходные слои
Создаем два выходных слоя, один для классификации (с функцией активации softmax) и один для регрессии (с линейной функцией активации).
🟠Создание и компиляция модели
Компилируем модель, указав разные функции потерь для каждой задачи (cross-entropy для классификации и MSE для регрессии).
🟠Обучение модели
Обучаем модель, передавая одновременно два целевых признака.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

10 Jan, 16:10


🤔 В чём заключается проблема оверфитинга?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

10 Jan, 09:10


🤔 Знаешь ли такие два понятия: стэкинг и блэндинг?

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

🚩Стэкинг (Stacking)

Это метод ансамблевого обучения, при котором модели различных типов обучаются на одном и том же наборе данных, а затем их предсказания используются как входные данные для мета-модели (финальной модели), которая делает окончательное предсказание.
🟠Первый уровень (Base Level Models)
На первом уровне несколько различных моделей обучаются независимо на полном обучающем наборе данных. Каждая модель делает предсказания, которые затем используются на втором уровне.
🟠Второй уровень (Meta-model)
На втором уровне мета-модель обучается на предсказаниях, сделанных моделями первого уровня. Цель мета-модели — корректно интерпретировать предсказания базовых моделей и сделать окончательное предсказание.

🚩Блэндинг (Blending)

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

10 Jan, 07:14


🧠 Machine Learning — авторский канал, где собрана вся база по ИИ и машинному обучению.

Senior разработчик AI-алгоритмов и автономных агентов, разбирает гайды, редкую литературу и код топовых моделей машинного обучения и искусственного интеллекта.

В 2025 году ИИ выйдет на совершенно новый уровень тот, кто не успеет за прогрессом - отстанет, а кто разберется - сорвет куш.

Стоит
подписаться: t.me/ai_machinelearning_big_data

Data Science | Вопросы собесов

09 Jan, 16:10


🤔 В чём преимущество медианы над средним?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

09 Jan, 12:56


📊 Реклама в сети телеграм каналов easyoffer
✈️ Для заказа пишите @easyoffer_adv

easyoffer
Backend

Python | Вопросы
Python | Удалёнка
Python | LeetCode
Python | Тесты

Frontend | Вопросы
Frontend | Удалёнка
JavaScript | LeetCode
Frontend | Тесты

Java | Вопросы
Java | Удалёнка
Java | LeetCode
Java | Тесты

Тестировщик | Вопросы
Тестировщик | Удалёнка
Тестировщик | Тесты

Data Science | Вопросы
Data Science | Удалёнка
Data Science | Тесты

C# | Вопросы
C# | Удалёнка
C# | LeetCode
C# | Тесты

C/C++ | Вопросы
C/C++ | Удалёнка
C/C++ | LeetCode
C/C++ | Тесты

Golang | Вопросы
Golang | Удалёнка
Golang | LeetCode
Golang | Тесты

DevOps | Вопросы
DevOps | Удалёнка
DevOps | Тесты

PHP | Вопросы
PHP | Удалёнка
PHP | LeetCode
PHP | Тесты

Kotlin | Вопросы
Kotlin | Удалёнка
Kotlin | LeetCode
Kotlin | Тесты

Swift | Вопросы
Swift | Удалёнка
Swift | LeetCode
Swift | Тесты

📊 Реклама в сети телеграм каналов easyoffer
✈️ Для заказа пишите @easyoffer_adv

Data Science | Вопросы собесов

09 Jan, 09:10


🤔 Что известно про градиентный взрыв?

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

🚩Градиентный взрыв обычно происходит по нескольким причинам

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

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

🟠Нелинейные активации
Некоторые активационные функции, такие как tanh или ReLU, могут усиливать величину градиентов в зависимости от входных данных.

🚩Способы борьбы с градиентным взрывом

🟠Клиппинг градиентов (Gradient Clipping)
Это наиболее распространённый метод борьбы с градиентным взрывом. Он заключается в ограничении (обрезке) градиентов, когда они превышают определённый порог, что предотвращает слишком большие шаги обновления весов.

🟠Использование оптимизаторов с адаптивными скоростями обучения
Оптимизаторы, такие как Adam, Adagrad или RMSprop, адаптируют скорость обучения для каждого параметра, что может помочь уменьшить вероятность взрыва градиентов.

🟠Правильная инициализация весов
Использование методов инициализации, таких как инициализация Хе или Глорота (Xavier), может помочь предотвратить слишком высокие начальные величины градиентов.

🟠Использование управляемых архитектур
Проектирование сети таким образом, чтобы она содержала меньше слоёв или использовала пропускающие соединения (как в ResNet), может помочь уменьшить риск градиентного взрыва, облегчая прохождение градиентов через архитектуру без значительного увеличения их величины.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

08 Jan, 16:10


🤔 Чему равно P-value для выброса?

1. Для выбросов P-value зависит от статистического теста, используемого для их обнаружения (например, Z-тест, тест Граббса).
2. Выбросы обычно имеют P-value близкое к 0, если они значительно отличаются от остальных данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

08 Jan, 09:10


🤔 Можно ли в линейную модель поместит категориальные признаки?

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

🚩Преобразование категориальных признаков

🟠One-Hot Encoding (OHE)
Каждый категориальный признак преобразуется в несколько бинарных (0 или 1) признаков. Например, если у вас есть признак "Цвет" с возможными значениями "Красный", "Зеленый" и "Синий", он будет преобразован в три бинарных признака: "Цвет_Красный", "Цвет_Зеленый" и "Цвет_Синий".
import pandas as pd
from sklearn.preprocessing import OneHotEncoder

# Пример данных
data = pd.DataFrame({'Цвет': ['Красный', 'Зеленый', 'Синий', 'Красный']})

# Применение One-Hot Encoding
ohe = OneHotEncoder()
transformed_data = ohe.fit_transform(data[['Цвет']]).toarray()

# Преобразование обратно в DataFrame
ohe_df = pd.DataFrame(transformed_data, columns=ohe.get_feature_names_out(['Цвет']))


🟠Label Encoding
Категориальные значения преобразуются в числовые метки. Этот метод менее предпочтителен для линейных моделей, так как может ввести порядок между категориями, который на самом деле отсутствует.
from sklearn.preprocessing import LabelEncoder

# Пример данных
data = pd.DataFrame({'Цвет': ['Красный', 'Зеленый', 'Синий', 'Красный']})

# Применение Label Encoding
le = LabelEncoder()
data['Цвет_метка'] = le.fit_transform(data['Цвет'])


🚩Почему это нужно

🟠Совместимость с математическими операциями
Линейные модели, такие как линейная регрессия, могут работать только с числовыми данными. Категориальные признаки необходимо преобразовать, чтобы модель могла использовать их для обучения.

🟠Улучшение предсказательной мощности
Правильное кодирование категориальных признаков позволяет модели лучше понять структуру данных и улучшить точность предсказаний.

🚩Пример использования в линейной регрессии

Предположим, у вас есть данные о ценах на квартиры, включая категориальный признак "Район" (центр, окраина, пригород). Мы можем использовать One-Hot Encoding для преобразования этого признака и включения его в линейную модель:
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import OneHotEncoder

# Пример данных
data = pd.DataFrame({
'Район': ['Центр', 'Окраина', 'Пригород', 'Центр'],
'Площадь': [50, 60, 70, 80],
'Цена': [200000, 150000, 120000, 250000]
})

# Применение One-Hot Encoding к категориальному признаку "Район"
ohe = OneHotEncoder(drop='first') # drop='first' чтобы избежать дамми-ловушки
encoded_districts = ohe.fit_transform(data[['Район']]).toarray()

# Объединение с исходными данными
encoded_df = pd.DataFrame(encoded_districts, columns=ohe.get_feature_names_out(['Район']))
final_data = pd.concat([data[['Площадь']], encoded_df], axis=1)

# Обучение линейной модели
model = LinearRegression()
model.fit(final_data, data['Цена'])

# Предсказание
predictions = model.predict(final_data)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

07 Jan, 16:10


🤔 Как использовать P-value, когда мы проверяем какую-то гипотезу?

1. P-value показывает вероятность того, что наблюдаемый эффект случайный.
2. Если P-value меньше уровня значимости (обычно 0.05), мы отвергаем нулевую гипотезу и принимаем альтернативную.
3. Если P-value больше 0.05, недостаточно доказательств для отклонения нулевой гипотезы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

07 Jan, 09:10


🤔 В чем разница между командами делит и транткейп?

Команды DELETE и TRUNCATE в SQL используются для удаления данных из таблиц, но они работают по-разному и подходят для разных задач.

🚩Команда DELETE

Используется для удаления определённых записей из таблицы. Можно указать условие с помощью WHERE, чтобы удалить только нужные строки. Например
DELETE FROM employees WHERE department = 'HR';


🟠Характеристики
Удаление происходит построчно. Логируется каждая удалённая запись (затратно по производительности при больших объёмах данных). Можно откатить изменения с помощью транзакций, если используются BEGIN TRANSACTION и ROLLBACK.

🟠Где применять
Когда нужно удалить часть данных, а не все записи. Например, удаление сотрудников только из определённого отдела.

🚩Команда TRUNCATE
🟠Описание
Используется для полного очищения таблицы. Удаляет все строки в таблице без возможности указания условия. Например:
TRUNCATE TABLE employees;


🟠Характеристики
Работает быстрее, чем DELETE, так как не записывает подробный лог изменений. Удаляет данные "в обход" построчного удаления, очищая всю структуру. Нельзя откатить изменения, так как эта операция не поддерживает транзакции в большинстве СУБД.

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

🚩Пример для сравнения

DELETE
-- Удалить только сотрудников из отдела HR
DELETE FROM employees WHERE department = 'HR';


TRUNCATE
-- Очистить таблицу сотрудников полностью
TRUNCATE TABLE employees;


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

06 Jan, 16:10


🤔 Какое минимальное количество данных необходимо для корректного проведения A/B теста?

1. Минимальный объём данных рассчитывается исходя из формулы выборки, учитывающей желаемый уровень значимости, статистическую мощность и ожидаемый эффект.
2. Обычно требуется минимум 1,000-5,000 пользователей на каждую группу, чтобы получить статистически значимые результаты.
3. Недостаточный объём данных может привести к ошибкам первого и второго рода.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

06 Jan, 09:10


🤔 Какие проблемы могут возникнуть при проверке сразу 10 гипотез?

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

🟠Увеличение вероятности ошибок первого рода (ложноположительные результаты)
Когда проводится множество тестов, вероятность хотя бы одной ложноположительной ошибки возрастает. Это явление известно как проблема множественных сравнений. Если для каждой гипотезы используется уровень значимости \( \alpha = 0.05 \), то вероятность ложноположительного вывода по крайней мере для одной из десяти гипотез не будет 5%, а значительно выше. При 10 независимых тестах эта вероятность будет приблизительно \( 1 - (1 - 0.05)^{10} = 0.40 \), то есть 40%.

🟠Корректировки для множественных сравнений
Для управления увеличенным риском ошибок первого рода часто применяют корректировки. Одна из самых известных — корректировка Бонферрони, которая предполагает деление уровня значимости \( \alpha \) на количество тестов (в данном случае на 10). Это делает критерии для отклонения нулевой гипотезы более строгими, но в то же время увеличивает риск ошибок второго рода (ложноотрицательные результаты), когда истинные эффекты не обнаруживаются.

🟠Увеличение вероятности ошибок второго рода
При использовании корректировок, таких как Бонферрони, уровень значимости каждого индивидуального теста становится строже, что может привести к уменьшению мощности статистического теста. Это означает, что некоторые истинные эффекты могут не быть обнаружены.

🟠Зависимость тестов
Проблемы множественных сравнений усугубляются, если тесты не являются полностью независимыми. В таких случаях простые корректировки типа Бонферрони могут быть либо слишком строгими, либо неадекватными, что требует использования более сложных методов корректировки, таких как метод Холма-Бонферрони или процедура Бенджамини-Хохберга, которые учитывают структуру зависимости между тестами.

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

05 Jan, 16:10


🤔 Как оцениваешь, сколько тебе нужно ждать, пока идёт A/B тест?

1. Время ожидания зависит от объёма трафика и минимального значимого эффекта (MDE).
2. Для оценки можно использовать формулы расчёта выборки с учётом размера эффекта, уровня значимости (обычно 5%) и статистической мощности (обычно 80%).
3. Чем больше трафик и эффект, тем быстрее можно завершить тест.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

05 Jan, 09:10


🤔 Как batch norm помогает в обучении моделей?

Batch Normalization (нормализация батчей) — это техника, которая улучшает обучение нейронных сетей путем нормализации промежуточных слоев. Это помогает ускорить обучение и делает модель более устойчивой. Впервые она была представлена в статье "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift" (2015) Сергеем Иоффе и Кристианом Шиллером.

🚩Как работает Batch Normalization?

🟠Нормализация данных:
В каждой мини-партии (batch) данных нормализация применяется к активациям нейронов. Это означает, что среднее значение активаций по партии становится равным нулю, а стандартное отклонение — единице.

🟠Обратное масштабирование и смещение:
После нормализации вводятся два параметра: \( \gamma \) и \( \beta \), которые масштабируют и смещают нормализованные значения: Эти параметры позволяют модели сохранить способность к обучению любых функций, независимо от нормализации.

🚩Плюсы

Ускорение обучения:
Нормализация уменьшает внутренний коварный сдвиг (internal covariate shift), что позволяет использовать более высокие скорости обучения.
Стабилизация градиентов:
Нормализация помогает избежать проблем с затухающими и взрывающимися градиентами, делая обучение более стабильным.
Регуляризация:
Batch Normalization оказывает легкий регуляризационный эффект, снижая необходимость использования других регуляризационных методов, таких как Dropout.
Меньшая зависимость от начальной инициализации:
Нормализация делает модель менее чувствительной к начальной инициализации параметров, упрощая настройку гиперпараметров.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, BatchNormalization, Activation
from tensorflow.keras.optimizers import Adam

# Создание модели
model = Sequential()

# Добавление слоев с Batch Normalization
model.add(Dense(64, input_shape=(784,)))
model.add(BatchNormalization())
model.add(Activation('relu'))

model.add(Dense(64))
model.add(BatchNormalization())
model.add(Activation('relu'))

model.add(Dense(10, activation='softmax'))

# Компиляция модели
model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy'])

# Обучение модели
# model.fit(x_train, y_train, batch_size=32, epochs=10, validation_data=(x_val, y_val))


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

04 Jan, 16:10


🤔 Что представляет из себя Target Encoding?

Target Encoding заменяет категориальные переменные на среднее значение целевой переменной для каждой категории.
• Например, если целевая переменная — вероятность покупки, категория "A" будет заменена на среднее значение покупок для "A".
• Это полезно для моделей с сильным учётом категориальных зависимостей, но может привести к переобучению, если данные не обработаны правильно (например, без кросс-валидации).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

04 Jan, 09:10


🤔 Какие методы обнаружения аномалии?

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

🚩Методы

🟠Статистические методы
Z-оценка (Z-score): Измеряет количество стандартных отклонений от среднего. Применимо для данных с нормальным распределением.Метод межквартильного размаха (IQR): Использует квартильные размахи для определения выбросов.

🟠Машинное обучение
Методы без учителя
K-Means: Кластеризует данные, выделяя аномалии на основе удаленности от центроидов. DBSCAN: Определяет аномалии на основе плотности данных. One-Class SVM: Обучается на одном классе данных, выделяя аномалии. Isolation Forest: Быстро изолирует аномальные точки с помощью случайных деревьев.
from sklearn.ensemble import IsolationForest

X_train = ...
clf = IsolationForest(contamination=0.1)
clf.fit(X_train)
y_pred = clf.predict(X_train)


🟠Методы с учителем
Используются при наличии размеченных данных (логистическая регрессия, решающие деревья и т.д.).

🟠Методы на основе временных рядов
Методы скользящего окна (Moving Average)
Выявляют аномалии путем анализа средних значений за периоды.
Методы автокорреляции
Анализируют повторяющиеся шаблоны во временных рядах.

🟠Глубокое обучение
Нейронные сети, кодирующие данные в низкоразмерное пространство и декодирующие их обратно. Высокие ошибки восстановления указывают на аномалии.
from keras.models import Model, Sequential
from keras.layers import Dense, Input

input_dim = X_train.shape[1]
encoding_dim = 14

input_layer = Input(shape=(input_dim, ))
encoder = Dense(encoding_dim, activation="tanh")(input_layer)
encoder = Dense(int(encoding_dim / 2), activation="relu")(encoder)
decoder = Dense(int(encoding_dim / 2), activation="tanh")(encoder)
decoder = Dense(input_dim, activation="relu")(decoder)
autoencoder = Model(inputs=input_layer, outputs=decoder)
autoencoder.compile(optimizer="adam", loss="mean_squared_error")

autoencoder.fit(X_train, X_train, epochs=100, batch_size=32, shuffle=True, validation_split=0.1)


Ставь
👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

03 Jan, 16:10


🤔 Можно ли в линейную модель поместить категориальные признаки?

Да, категориальные признаки можно использовать в линейной модели, но их необходимо предварительно закодировать.
• One-Hot Encoding: преобразует каждую категорию в отдельный бинарный столбец.
• Label Encoding: назначает каждой категории числовое значение.
• Выбор кодировки зависит от модели и размера данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

03 Jan, 09:10


🤔 Чем хороша линейная регрессия?

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

🚩Плюсы

Простота и интерпретируемость
Линейная регрессия проста в понимании и интерпретации. Коэффициенты регрессии показывают, насколько изменится зависимая переменная при изменении независимой переменной на одну единицу.
Малое количество параметров
Для простой линейной регрессии требуется всего два параметра (угол наклона и пересечение с осью Y), а для множественной линейной регрессии – один параметр для каждого предиктора плюс один для пересечения с осью Y.
Быстрая и эффективная
Линейная регрессия вычислительно несложна и может быть быстро выполнена даже на больших наборах данных.
Применимость к различным задачам
Линейная регрессия может использоваться для прогнозирования, анализа взаимосвязей и тестирования гипотез.
Легкость в реализации
Она легко реализуется с использованием большинства стандартных библиотек машинного обучения, таких как scikit-learn в Python.

🚩Когда линейная регрессия особенно хороша

🟠Линейная зависимость
Когда между независимыми переменными и зависимой переменной существует линейная зависимость.
🟠Малое количество шумов
Когда данные относительно чистые и не содержат много выбросов или шумов.
🟠Простые модели
Когда сложные нелинейные модели не нужны, и простая модель дает достаточное качество предсказания.

Пример
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Пример данных
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1.5, 3.0, 4.5, 6.0, 7.5])

# Создание и обучение модели линейной регрессии
model = LinearRegression()
model.fit(X, y)

# Предсказание
y_pred = model.predict(X)

# Построение графика
plt.scatter(X, y, color='blue', label='Исходные данные')
plt.plot(X, y_pred, color='red', label='Линейная регрессия')
plt.xlabel('Независимая переменная')
plt.ylabel('Зависимая переменная')
plt.legend()
plt.title('Пример Линейной Регрессии')
plt.show()


Ставь
👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

02 Jan, 16:10


🤔 Когда нужно использовать метод главных компонентов в бизнесе?

Метод главных компонентов (PCA) используют, когда:
1. Необходимо уменьшить размерность данных, сохраняя максимальную вариативность.
2. Характеристики сильно коррелируют между собой.
3. Требуется ускорить работу алгоритмов и визуализировать высокоразмерные данные.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

02 Jan, 09:10


🤔 Что такое precision ?

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

🚩Определение и формула

Precision определяется как отношение числа истинно положительных результатов (true positives, TP) к сумме истинно положительных и ложно положительных результатов (false positives, FP).

🚩Зачем это нужно

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

🚩Пример

Допустим, у нас есть система, которая предсказывает, является ли email спамом. Если система предсказала 100 писем как спам, и из них 90 действительно спам, тогда точность системы будет:
\[ \text{Precision} = \frac{90}{100} = 0.9 \]


Для расчета точности можно использовать библиотеку sklearn.metrics:
from sklearn.metrics import precision_score

# Истинные метки
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]

# Предсказанные метки
y_pred = [0, 1, 0, 0, 1, 0, 0, 1, 1, 0]

# Расчет точности
precision = precision_score(y_true, y_pred)
print("Precision:", precision)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

01 Jan, 16:10


🤔 В чём отличия RoBERTa от BERT?

1. Обучение: RoBERTa использует больше данных и дольше обучается.
2. Маскирование: RoBERTa убирает предсказание следующего предложения (NSP), улучшая качество контекстного предсказания.
3. Производительность: RoBERTa показывает лучшие результаты на задачах обработки естественного языка благодаря улучшенной оптимизации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

01 Jan, 09:10


🤔 В чем разница между пивот и пивоттэйбл?

Функции pivot и pivot_table обе предназначены для реорганизации и сводки данных, но они используются в разных сценариях и имеют некоторые ключевые отличия.

🚩Метод pivot

Используется для преобразования данных из длинного формата в широкий. Он создаёт новый DataFrame, где один или несколько столбцов используются в качестве индексов, один столбец используется для столбцов новой таблицы, и один столбец для значений новой таблицы. Основное ограничение pivot заключается в том, что комбинация индекса и столбцов должна быть уникальной, иначе метод вызовет ошибку.
import pandas as pd

data = pd.DataFrame({
'date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
'variable': ['A', 'B', 'A', 'B'],
'value': [1, 2, 3, 4]
})

# Преобразование в широкий формат
pivot_df = data.pivot(index='date', columns='variable', values='value')
print(pivot_df)


🚩Метод pivot_table

Более сложный и гибкий, он используется для создания сводных таблиц. pivot_table может агрегировать данные по одному или нескольким ключам на основе суммы, среднего, максимума, минимума или других агрегатных функций. pivot_table также способен обрабатывать повторяющиеся значения за счёт агрегации.
import pandas as pd

data = pd.DataFrame({
'date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
'variable': ['A', 'A', 'B', 'B'],
'value': [1, 2, 3, 4]
})

# Создание сводной таблицы
pivot_table_df = data.pivot_table(index='date', columns='variable', values='value', aggfunc='sum')
print(pivot_table_df)


🚩Основные различия

🟠Уникальность данных
pivot требует уникальных пар индекс/столбец и выдаст ошибку в случае дубликатов. pivot_table может агрегировать дублирующиеся данные, используя функцию агрегации.
🟠Гибкость
pivot_table предлагает дополнительные параметры, такие как aggfunc, которые позволяют более гибко обрабатывать данные.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

31 Dec, 16:10


🤔 Что такое градиентное затухание?

Градиентное затухание возникает, когда градиенты становятся слишком малыми, что замедляет или останавливает обновление весов в начальных слоях.
• Основная причина — использование функций активации с узким диапазоном, например, сигмоидной.
• Решения включают ReLU, He и Xavier инициализацию, а также архитектуры с пропускными соединениями (ResNet).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

31 Dec, 09:10


🤔 Как объяснить бизнесу, что значат ошибки I и II рода?

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

🚩Объяснение

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

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

🚩Объяснение на метафорах

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

🟠Ошибка II рода (Ложно-отрицательный результат)
Теперь представьте, что сигнализация в вашем доме не срабатывает, когда происходит кража. Это и есть ошибка II рода.
Последствия: Вор может свободно украсть ваше имущество, и вы останетесь без защиты.

🚩Как ошибки влияют на бизнес

🟠Ошибка I рода
Маркетинговая кампания, направленная на привлечение новых клиентов, ошибочно определяет некоторых текущих клиентов как новых и отправляет им специальные предложения, что увеличивает расходы без получения новых клиентов.
Риски: Дополнительные расходы, снижение эффективности кампаний, ухудшение клиентского опыта.

🟠Ошибка II рода
Кампания по удержанию клиентов не распознает реальных клиентов, склонных к уходу, и не предпринимает мер для их удержания.
Риски: Потеря клиентов, снижение доходов, ухудшение клиентской базы.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

30 Dec, 16:10


🤔 Что известно про градиентный взрыв?

Градиентный взрыв происходит, когда градиенты становятся слишком большими, что приводит к нестабильности обучения и невозможности сходимости модели.
• Это часто встречается в глубоких нейронных сетях или RNN при работе с длинными последовательностями.
• Для борьбы с проблемой применяют градиентное отсечение (Gradient Clipping), чтобы ограничить значения градиентов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

30 Dec, 09:10


🤔 Как сделать чтобы модель предсказывала не число, а распределение?

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

🟠Использование вероятностных моделей
Байесовские нейронные сети (Bayesian Neural Networks) расширяют обычные нейронные сети, вводя вероятностные параметры, что позволяет выводить распределение выходных значений. Библиотека Pyro для PyTorch
import torch
import pyro
import pyro.distributions as dist
from pyro.infer import SVI, Trace_ELBO
from pyro.optim import Adam
import pyro.nn as pnn

class BayesianNN(pnn.PyroModule):
def __init__(self, in_features, out_features):
super().__init__()
self.linear = pnn.PyroModule[nn.Linear](in_features, out_features)
self.linear.weight = pnn.PyroSample(dist.Normal(0., 1.).expand([out_features, in_features]).to_event(2))
self.linear.bias = pnn.PyroSample(dist.Normal(0., 10.).expand([out_features]).to_event(1))

def forward(self, x, y=None):
mean = self.linear(x)
sigma = pyro.sample("sigma", dist.Uniform(0., 10.))
with pyro.plate("data", x.shape[0]):
obs = pyro.sample("obs", dist.Normal(mean, sigma), obs=y)
return mean

def model(x, y=None):
return BayesianNN(x.shape[1], 1)(x, y)

def guide(x, y=None):
bayesian_nn = BayesianNN(x.shape[1], 1)
bayesian_nn.linear.weight = pnn.PyroSample(dist.Normal(torch.randn(bayesian_nn.linear.weight.shape), 0.1)
.expand(bayesian_nn.linear.weight.shape).to_event(2))
bayesian_nn.linear.bias = pnn.PyroSample(dist.Normal(torch.randn(bayesian_nn.linear.bias.shape), 0.1)
.expand(bayesian_nn.linear.bias.shape).to_event(1))
return bayesian_nn(x, y)

x = torch.randn(100, 1)
y = 3 * x + torch.randn(100, 1)

pyro.clear_param_store()
svi = SVI(model, guide, Adam({"lr": 0.01}), loss=Trace_ELBO())
num_iterations = 5000
for j in range(num_iterations):
loss = svi.step(x, y)
if j % 1000 == 0:
print(f"[iteration {j+1}] loss: {loss}")

predictive = pyro.infer.Predictive(model, guide=guide, num_samples=1000)
samples = predictive(x)


🟠Модели с гетероскедастичностью
Гетероскедастическая регрессия на Keras
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

# Создание модели
inputs = keras.Input(shape=(num_features,))
x = layers.Dense(64, activation="relu")(inputs)
x = layers.Dense(64, activation="relu")(x)
mean = layers.Dense(1)(x)
log_var = layers.Dense(1)(x)
model = keras.Model(inputs=inputs, outputs=[mean, log_var])

# Функция потерь
def nll(y_true, y_pred):
mean, log_var = y_pred
precision = tf.exp(-log_var)
return tf.reduce_mean(0.5 * tf.math.log(2 * np.pi) + 0.5 * log_var + 0.5 * tf.square(y_true - mean) * precision)

model.compile(optimizer="adam", loss=nll)

# Обучение модели
model.fit(x_train, [y_train, y_train], epochs=100, batch_size=32)


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

29 Dec, 16:10


🤔 Какие существуют способы кодирования категориальных переменных?

1. One-Hot Encoding: создаёт бинарные признаки для каждого значения.
2. Label Encoding: присваивает числовые значения каждому классу.
3. Target Encoding: заменяет категориальное значение на среднее целевой переменной.
4. Frequency Encoding: заменяет категории на их частоты.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

29 Dec, 09:10


🤔 Почему нейроные сети усложняют добавлением слоев, а не количеством нейронов в слое?

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

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

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

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

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

28 Dec, 16:10


🤔 Что такое бэкпропагейшен?

Это алгоритм обучения нейронных сетей через обратное распространение ошибки.
1. Ошибка вычисляется на выходе сети с помощью функции потерь.
2. Ошибка передаётся назад по сети, обновляя веса каждого нейрона с использованием градиентного спуска.
3. Процесс повторяется, пока сеть не обучится на данных.
Бэкпропагейшен позволяет корректировать веса для минимизации ошибки и обучения сложных зависимостей.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

28 Dec, 09:10


🤔 Как объяснить бизнесу метрику машинного обучения ?

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

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

🟠Использование аналогий и простых примеров
Аналогии и простые примеры могут помочь в объяснении сложных концепций.

🟠Пояснение на основе бизнес-контекста
Используйте примеры из реального бизнеса для иллюстрации метрик.

🚩Accuracy (Точность)

Доля правильных предсказаний среди всех предсказаний.
Представьте, что у нас есть модель для классификации писем как "спам" или "не спам". Если точность модели составляет 90%, это означает, что модель правильно классифицирует 90% писем. Однако, если у вас есть сильный дисбаланс классов (например, 99% писем не являются спамом), высокая точность может быть обманчивой.

🚩Precision (Точность)

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

🚩Recall (Полнота)

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

🚩F1 Score (F1-мера)

Гармоническое среднее точности и полноты. F1-мера дает баланс между точностью и полнотой.
В задаче классификации сообщений как "спам" или "не спам", если у модели хороший баланс между точностью (не классифицировать "не спам" как "спам") и полнотой (обнаружить как можно больше "спам" сообщений), то у модели будет высокий F1 Score.

🚩ROC-AUC (Receiver Operating Characteristic - Area Under Curve)

Площадь под кривой ROC, которая показывает способность модели различать между положительными и отрицательными классами.
Если у вас есть модель для предсказания оттока клиентов, высокий ROC-AUC означает, что модель хорошо различает между клиентами, которые останутся, и клиентами, которые уйдут.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

27 Dec, 16:10


🤔 Чем нейросеть отличается от бустинга над линейными моделями?

1. Нейросети:
o Используют сложные архитектуры и слои для моделирования нелинейных зависимостей.
o Требуют больших данных и мощных вычислительных ресурсов.
o Эффективны в задачах с неструктурированными данными (например, изображения, текст).
2. Бустинг над линейными моделями:
o Комбинирует простые модели (например, деревья решений) для повышения точности.
o Хорошо работает на табличных данных и менее требователен к ресурсам.
o Легче интерпретируется, чем нейросети.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

27 Dec, 09:10


🤔 Расскажи о дистиляции?

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

🚩Как это работает?

🟠Большая модель ("учитель")
обучается на исходных данных и достигает высокой точности.
🟠Ученик-модель
обучается не только на исходных метках (labels), но и на выходах учителя (логитах или вероятностях), которые несут более богатую информацию, чем просто метки классов.

🚩Почему это полезно?

🟠Скорость и эффективность
Компактная модель работает быстрее, что важно для применения в устройствах с ограниченными ресурсами (мобильные устройства, IoT).
🟠Обобщающая способность
Ученик обучается на "знаниях" учителя, что помогает лучше обобщать данные.
🟠Уменьшение размера модели
Позволяет использовать сложные модели (например, трансформеры) в реальных приложениях, где важны ограничения по памяти.

🚩Основные этапы

🟠Подготовка учителя
Обучение сложной, точной модели.
🟠Генерация "мягких меток" (soft labels)
Учитель предсказывает вероятности (например, через softmax) для каждого класса. Эти вероятности используются вместо жёстких меток.
🟠Обучение ученика
Потери модели-ученика включают: Ошибку на мягких метках от учителя. Ошибку на исходных метках данных (если требуется).

🚩Температура

Температура используется для управления "мягкостью" вероятностей учителя. Формула Softmax с температурой:
P_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}


🚩Пример реализации дистилляции в PyTorch

import torch
import torch.nn as nn
import torch.optim as optim

# Пример потерь для дистилляции
class DistillationLoss(nn.Module):
def __init__(self, temperature=2.0, alpha=0.5):
super().__init__()
self.temperature = temperature
self.alpha = alpha
self.kl_div = nn.KLDivLoss(reduction="batchmean")
self.ce_loss = nn.CrossEntropyLoss()

def forward(self, student_logits, teacher_logits, labels):
soft_loss = self.kl_div(
nn.functional.log_softmax(student_logits / self.temperature, dim=1),
nn.functional.softmax(teacher_logits / self.temperature, dim=1)
) * (self.temperature ** 2)
hard_loss = self.ce_loss(student_logits, labels)
return self.alpha * hard_loss + (1 - self.alpha) * soft_loss

# Обучение модели ученика
def train_student(student_model, teacher_model, dataloader, epochs=10):
optimizer = optim.Adam(student_model.parameters(), lr=0.001)
criterion = DistillationLoss(temperature=3.0, alpha=0.7)

teacher_model.eval()
student_model.train()

for epoch in range(epochs):
for inputs, labels in dataloader:
with torch.no_grad():
teacher_logits = teacher_model(inputs)

student_logits = student_model(inputs)
loss = criterion(student_logits, teacher_logits, labels)

optimizer.zero_grad()
loss.backward()
optimizer.step()

print(f"Epoch {epoch+1}/{epochs}, Loss: {loss.item()}")


🚩Примеры использования

🟠Сжатие моделей NLP
GPT-3 → DistilGPT. BERT → DistilBERT. Эти модели сохраняют до 90% точности оригинала при меньшем размере и быстродействии.

🟠Компьютерное зрение
Большие сверточные сети (ResNet, EfficientNet) → компактные модели для мобильных приложений.

🟠Рекомендательные системы и голосовые помощники
Уменьшение размера модели для внедрения в реальном времени.

🚩Плюсы и минусы
Сокращает размер модели.
Ускоряет выполнение.
Улучшает обобщающую способность ученика.
Требуется заранее обученная модель-учитель.
Потенциальная потеря некоторой точности.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

26 Dec, 16:10


🤔 В чём разница между бэггингом и бустингом?

1. Бэггинг (Bagging):
o Параллельное обучение множества моделей на случайных подмножествах данных.
o Устойчив к переобучению за счёт усреднения результатов.
o Пример: Random Forest.
2. Бустинг (Boosting):
o Последовательное обучение моделей, где каждая новая модель исправляет ошибки предыдущих.
o Склонен к переобучению, если не настроен правильно, но достигает высокой точности.
o Пример: Gradient Boosting, XGBoost, LightGBM.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

26 Dec, 09:10


🤔 Какие методы регуляризации знаешь?

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

🟠L1 и L2-регуляризация (регуляризация норм L1 и L2)

L1-регуляризация (Lasso) В регуляризацию добавляется сумма абсолютных значений коэффициентов весов модели.
Формула: \( L1 = \lambda \sum_{i} |w_i| \), где \( \lambda \) — гиперпараметр регуляризации. Преимущество: Стимулирует разреженность, заставляя некоторые веса становиться равными нулю, что помогает в выборе признаков. Недостаток: Могут игнорироваться малые, но значимые признаки.

L2-регуляризация (Ridge):
Добавляется сумма квадратов весов модели.
Формула: \( L2 = \lambda \sum_{i} w_i^2 \).Преимущество: Регуляризует модель, не делая веса нулевыми, помогает в борьбе с мультиколлинеарностью.
Недостаток: Не отбирает признаки, оставляя их все
from sklearn.linear_model import Ridge, Lasso

# Ridge
ridge_model = Ridge(alpha=1.0)
ridge_model.fit(X_train, y_train)

# Lasso
lasso_model = Lasso(alpha=0.1)
lasso_model.fit(X_train, y_train)


🟠Dropout
Используется в нейронных сетях.
В процессе обучения случайно "выключает" часть нейронов, заставляя сеть учиться более устойчивым признакам.
Пример: при Dropout с вероятностью 0.5 половина нейронов в слое будет игнорироваться на каждой итерации.
Преимущество: Снижает зависимость от определённых нейронов, улучшая обобщающую способность сети.
import tensorflow as tf
from tensorflow.keras.layers import Dropout, Dense

model = tf.keras.Sequential([
Dense(128, activation='relu'),
Dropout(0.5), # Удаляем 50% нейронов
Dense(10, activation='softmax')
])


🟠Раннее прекращение обучения (Early Stopping)
Останавливает обучение, когда ошибка на валидационной выборке перестаёт уменьшаться. Преимущество: предотвращает переобучение без необходимости добавления дополнительной регуляризации. Недостаток: Может остановить обучение до достижения оптимального результата.
from keras.callbacks import EarlyStopping

early_stopping = EarlyStopping(monitor='val_loss', patience=5)

model.fit(X_train, y_train, validation_data=(X_val, y_val), callbacks=[early_stopping])


🟠Нормализация и стандартизация данных
Хотя это больше подготовка данных, правильное масштабирование (например, через Min-Max Scaling или Z-Score) может улучшить регуляризацию модели, сделав её более устойчивой к шуму.
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)


🟠Регуляризация через ограничение весов (Weight Constraint)
Вводятся ограничения на значения весов, например, они должны оставаться в пределах заданного диапазона.
from tensorflow.keras.constraints import MaxNorm
from tensorflow.keras.layers import Dense

layer = Dense(128, activation='relu', kernel_constraint=MaxNorm(3))


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

🟠Batch Normalization
Стабилизирует обучение, нормализуя выходы скрытых слоёв. Это также действует как лёгкая форма регуляризации.
from tensorflow.keras.layers import BatchNormalization

model.add(BatchNormalization())


🟠Сложные методы (Elastic Net и DropConnect)
Elastic Net: Комбинация L1 и L2-регуляризации. DropConnect: Аналог Dropout, но выключаются не нейроны, а их веса.

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

25 Dec, 09:10


🤔Чем функция инит в классе отличается от функции нью?

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

🚩__new__

Это статический метод (не зависит от объекта класса), который вызывается для создания нового объекта. Он возвращает новый экземпляр класса, но не инициализирует его. Вызывается первым, и он отвечает за возвращение нового объекта класса. Вы должны явно вернуть значение из new, которое затем передается втличается. Метод принимает класс в качестве первого аргумента (обычно обозначается как cls), следующим идут те же аргументы, что передаются в init. Обычно используется в продвинутых сценариях, например, при создании неизменяемых объектов или при наследовании от неизменяемых типов, как tuple или str.

🚩__init__

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

class MyClass:
def __new__(cls, *args, **kwargs):
print("Creating instance")
instance = super(MyClass, cls).__new__(cls)
return instance

def __init__(self, value):
print("Initializing instance")
self.value = value

# Создание объекта MyClass
obj = MyClass(10)
print(obj.value) # Выводит 10


🚩Когда использовать new

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

24 Dec, 16:10


🤔 Чем отличается градиентный спуск от SGD?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

24 Dec, 09:10


🤔 Что знаешь о ML дизайне?

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

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

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

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

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

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

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

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

Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

23 Dec, 16:10


🤔 В чем отличия между чар и варчар?

CHAR — это фиксированная длина строки, которая всегда занимает определённое количество памяти. VARCHAR — это строка переменной длины, которая занимает ровно столько памяти, сколько нужно для хранения данных. VARCHAR более эффективен для данных с изменяемой длиной.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

23 Dec, 09:10


🤔 Как считается метрика IoU?

Метрика IoU (Intersection over Union) используется для оценки качества совпадения предсказанной области с истинной областью в задачах сегментации или обнаружения объектов. Она вычисляется как отношение площади пересечения двух областей (предсказанной и истинной) к площади их объединения.

🚩Пример расчета IoU

🟠Предсказанная область:
допустим, у нас есть предсказанный прямоугольник с координатами \((x_1, y_1, x_2, y_2)\).
🟠Истинная область:
истинный прямоугольник с координатами \((x_1', y_1', x_2', y_2')\).

🚩Выполнение расчета пересечения и объединения:

1⃣Найти координаты пересекающегося прямоугольника:
\(\text{left} = \max(x_1, x_1')\)
\(\text{right} = \min(x_2, x_2')\)
\(\text{top} = \max(y_1, y_1')\)
\(\text{bottom} = \min(y_2, y_2')\)

2⃣Рассчитать площадь пересечения:
\(\text{Площадь пересечения} = \max(0, \text{right} - \text{left}) \times \max(0, \text{bottom} - \text{top})\)

3⃣Рассчитать площадь объединения:
\(\text{Площадь объединения} = \text{Площадь предсказанной области} + \text{Площадь истинной области} - \text{Площадь пересечения}\)
def calculate_iou(box1, box2):
"""
Вычисляет IoU для двух прямоугольников.
box1 и box2 — это списки или кортежи, содержащие координаты прямоугольника в формате (x1, y1, x2, y2)
"""
x1, y1, x2, y2 = box1
x1_prime, y1_prime, x2_prime, y2_prime = box2

# Вычисляем координаты пересекающейся области
xi1 = max(x1, x1_prime)
yi1 = max(y1, y1_prime)
xi2 = min(x2, x2_prime)
yi2 = min(y2, y2_prime)

# Вычисляем площадь пересечения
inter_width = max(0, xi2 - xi1)
inter_height = max(0, yi2 - yi1)
inter_area = inter_width * inter_height

# Вычисляем площади обоих прямоугольников
box1_area = (x2 - x1) * (y2 - y1)
box2_area = (x2_prime - x1_prime) * (y2_prime - y1_prime)

# Вычисляем площадь объединения
union_area = box1_area + box2_area - inter_area

# Вычисляем IoU
iou = inter_area / union_area

return iou

# Пример использования
box1 = (1, 1, 3, 3)
box2 = (2, 2, 4, 4)
print(f"IoU: {calculate_iou(box1, box2)}")


Ставь 👍 и забирай 📚 Базу знаний

Data Science | Вопросы собесов

22 Dec, 16:10


🤔 Какая скорость поиска в хэш-таблице

Скорость поиска в хэш-таблице (например, HashMap) в среднем составляет O(1), так как ключи напрямую отображаются в индекс с помощью хэш-функции. В худшем случае, при коллизиях, время поиска может увеличиваться до O(n), если хэш-таблица не оптимизирована или используется неэффективная стратегия разрешения коллизий. Однако в большинстве случаев эффективные хэш-функции и методы обработки коллизий поддерживают близкую к O(1) скорость.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний

Data Science | Вопросы собесов

22 Dec, 09:10


🤔 Какие проблемы могут возникнуть при прогнозе лтв на пол года вперед ?

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

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

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

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

🟠Проблемы с сегментацией клиентов
Разные группы клиентов могут иметь существенно различный LTV. Недостаточно точная сегментация, не отражающая эти различия, может привести к ошибочным обобщениям и неточным прогнозам.

🟠Экономические и рыночные факторы
Экономические кризисы, новые регуляции, изменения в законодательстве и другие неконтролируемые факторы могут непредсказуемо повлиять на расходы и поведение клиентов.

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

🟠Технические ограничения
Ограниченные вычислительные ресурсы, неоптимальные инструменты анализа данных и недостаток квалификации аналитиков также могут ограничивать качество прогнозов LTV.

🟠Приватность и этические вопросы
Соблюдение приватности и защиты данных клиентов имеет важное значение. Использование данных, не соответствующих нормативным требованиям (например, GDPR в Европе), может привести к юридическим проблемам и потере доверия клиентов.

Ставь 👍 и забирай 📚 Базу знаний