Data Science | Вопросы собесов
4.89K subscribers
30 photos
812 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+Kn2WW6VoGrZkNzky
Вакансии t.me/+Ir52wMvyEgo5YWIy
Download Telegram
Forwarded from easyoffer
Ура, друзья! Изиоффер переходит в публичное бета-тестирование!

🎉 Что нового:
🟢Анализ IT собеседований на основе 4500+ реальных интервью
🟢Вопросы из собеседований с вероятностью встречи
🟢Видео-примеры ответов на вопросы от Senior, Middle, Junior грейдов
🟢Пример лучшего ответа
🟢Задачи из собеседований
🟢Тестовые задания
🟢Примеры собеседований
🟢Фильтрация всего контента по грейдам, компаниям
🟢Тренажер подготовки к собеседованию на основе интервальных повторений и флеш карточек
🟡Тренажер "Реальное собеседование" с сценарием вопросов из реальных собеседований (скоро)
🟢Автоотклики на HeadHunter
🟢Закрытое сообщество easyoffer


💎 Акция в честь открытия для первых 500 покупателей:
🚀 Скидка 50% на PRO тариф на 1 год (15000₽ → 7500₽)

🔥 Акция уже стартовала! 👉 https://easyoffer.ru/pro
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
🤔 Что такое градиентный спуск?

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

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

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

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

🟠Обновление параметров
На каждом шаге параметры модели (например, веса в линейной регрессии) корректируются в направлении, противоположном градиенту, что осуществляется по формуле:

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

🚩Вариации

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

🟠Стохастический градиентный спуск (Stochastic Gradient Descent, SGD)
Градиент вычисляется на основе одного случайно выбранного примера данных на каждом шаге, что делает процесс более быстрым, но увеличивает стохастичность движения к минимуму.

🟠Мини-пакетный градиентный спуск (Mini-batch Gradient Descent)
Компромисс между двумя предыдущими подходами, градиент вычисляется для небольшого подмножества данных (мини-пакета).

import numpy as np

def gradient_descent(x, y, lr=0.01, epochs=100):
m, b = 0.1, 0.1 # начальная инициализация параметров
n = len(x) # количество данных
for _ in range(epochs):
f = y - (m*x + b)
# Обновление m и b
m -= lr * (-2 * x.dot(f).sum() / n)
b -= lr * (-2 * f.sum() / n)
return m, b

# Демонстрация на простых данных
x = np.array([1,

2, 3, 4, 5])
y = np.array([5, 7, 9, 11, 13])
m, b = gradient_descent(x, y)
print("Наклон m:", m, "Пересечение b:", b)


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чем разница между командами DELETE и TRUNCATE?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
🤔 Что такое интерквантили?

Это статистическая мера вариативности, которая описывает диапазон центральных 50% данных в наборе. IQR используется для оценки разброса данных и для выявления выбросов.

🚩Понятия

🟠Квартили
Первый квартиль (Q1): Значение, ниже которого находится 25% данных.
Второй квартиль (Q2): Это медиана, значение, ниже которого находится 50% данных.
Третий квартиль (Q3): Значение, ниже которого находится 75% данных.

🟠Интерквартильный размах (IQR)
Разница между третьим и первым квартилями. Интерпретация: IQR показывает диапазон, в котором находится центральная половина данных, и помогает понять разброс данных вокруг медианы.
IQR = Q3 - Q1


🚩Примеры

🟠Сортировка данных
[1, 3, 3, 6, 7, 8, 9, 15, 18, 19]

🟠Вычисление квартилей
Первый квартиль (Q1): Среднее значение между вторым и третьим элементом (3 и 6), то есть 4.5.
Медиана (Q2): Среднее значение между пятым и шестым элементом (7 и 8), то есть 7.5.
Третий квартиль (Q3): Среднее значение между восьмым и девятым элементом (15 и 18), то есть 16.5.
Вычисление IQR:
IQR = Q3 - Q1 = 16.5 - 4.5 = 12


🚩Использование интерквартильного размаха

🟠Выявление выбросов
Значения, которые находятся ниже \(Q1 - 1.5 \times IQR\) или выше \(Q3 + 1.5 \times IQR\), считаются выбросами.
🟠Сравнение распределений
IQR может использоваться для сравнения разброса данных в разных наборах или группах.

Пример
import numpy as np

# Данные
data = [1, 3, 3, 6, 7, 8, 9, 15, 18, 19]

# Вычисление квартилей
Q1 = np.percentile(data, 25)
Q2 = np.percentile(data, 50)
Q3 = np.percentile(data, 75)

# Вычисление IQR
IQR = Q3 - Q1

print(f"Первый квартиль (Q1): {Q1}")
print(f"Медиана (Q2): {Q2}")
print(f"Третий квартиль (Q3): {Q3}")
print(f"Интерквартильный размах (IQR): {IQR}")

# Выявление выбросов
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

print(f"Границы для выбросов: {lower_bound} и {upper_bound}")
outliers = [x for x in data if x < lower_bound or x > upper_bound]
print(f"Выбросы: {outliers}")


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что знаешь про early stopping?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
🤔 Сколько слоёв многослойного перцептрона с линейной функцией активации понадобится для приближения полинома третьей степени?

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

🚩Линейные функции активации

Имеет вид
 f(x) = x


Когда используется линейная функция активации в многослойном перцептроне, каждая следующая линейная комбинация входных данных остается линейной. Независимо от количества слоев, итоговая функция будет просто линейной комбинацией входных данных. Если рассматривать MLP с линейной активацией, то каждый слой \( l \) вычисляется как
\mathbf{z}^{(l)} = \mathbf{W}^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)}


🚩Полиномиальные функции

Полином третьей степени имеет вид
f(x) = a_3 x^3 + a_2 x^2 + a_1 x + a_0


🚩Необходимость нелинейной активации

Для аппроксимации полинома третьей степени необходимо использовать нелинейные функции активации, такие как:
Сигмоида (\(\sigma(x) = \frac{1}{1 + e^{-x}}\))
ReLU (Rectified Linear Unit, \( \text{ReLU}(x) = \max(0, x) \))
Тангенс гиперболический (\(\tanh(x)\))
Использование нелинейных функций активации позволяет многослойному перцептрону моделировать сложные функции, включая полиномы более высокой степени.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor

# Генерация данных
np.random.seed(42)
X = np.linspace(-2, 2, 100).reshape(-1, 1)
y = 3*X**3 - 2*X**2 + X + 1 + np.random.normal(0, 0.2, X.shape)

# Обучение MLP
mlp = MLPRegressor(hidden_layer_sizes=(100, 100), activation='relu', max_iter=10000, random_state=42)
mlp.fit(X, y.ravel())

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

# Визуализация
plt.scatter(X, y, color='blue', label='Original data')
plt.plot(X, y_pred, color='red', label='MLP prediction')
plt.legend()
plt.show()


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Какие есть усовершенствования бинарной кросс-энтропии?

Бинарную кросс-энтропию можно улучшать в зависимости от задачи:
- С взвешиванием классов — если классы несбалансированы.
- Focal Loss — фокусируется на трудных примерах, уменьшая вклад лёгких.
- Label smoothing — снижает переуверенность модели, заменяя метки вроде 1/0 на 0.9/0.1.
- Dice Loss / Jaccard Loss — используются в задачах сегментации, где важна форма, а не только точность пикселя.
- Combo Loss — сочетание BCE с другими функциями (например, с Dice), чтобы уравновесить разные аспекты задачи.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Как объяснить бизнесу, что значат ошибки I и II рода?

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

🚩Объяснение

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

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

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

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

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

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

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

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Виды метрик машинного обучения.

1. Для классификации:
- Accuracy: доля верных предсказаний.
- Precision: точность предсказаний класса.
- Recall: полнота предсказаний класса.
- F1-score: сбалансированная метрика точности и полноты.
- ROC-AUC: качество модели при разных порогах.
2. Для регрессии:
- MSE: среднеквадратичная ошибка.
- MAE: средняя абсолютная ошибка.
- R²: объясненная доля дисперсии.
3. Для кластеризации:
- Silhouette Score: качество разделения кластеров.
- Dunn Index: компактность и разделенность кластеров.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что значит AUC <0.5? Что с ним делать?

AUC (Area Under the Curve) — это площадь под ROC-кривой, которая измеряет, насколько хорошо модель классифицирует объекты.
AUC = 1.0 → идеальная модель (отлично различает классы).
AUC = 0.5 → модель не лучше случайного угадывания.
AUC < 0.5 → модель предсказывает хуже, чем случайное угадывание.

Если AUC < 0.5, это означает, что модель инвертирует классы: когда она уверена, что объект относится к положительному классу, на самом деле он отрицательный, и наоборот.

🚩Что делать?

🟠Проверить, не перепутаны ли метки классов
Иногда в данных метки классов (0 и 1) могут быть инверсированы. Попробуйте изменить 0 на 1 и наоборот, а затем пересчитать AUC.

🟠Инвертировать предсказания
Если модель действительно "перепутала" предсказания, можно просто изменить знак вероятностей:
y_pred_inverted = 1 - y_pred


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

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
🤔 Как валидировать временные ряды?

Валидация по времени включает разбиение данных на интервалы с учётом временной последовательности. Методы: time series split (скользящее окно), расширяемое окно или кросс-валидация по времени.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🤔 Что можешь сказать про оконные функции?

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

🚩Ключевые аспекты

🟠Определение окна
Окно определяется с помощью конструкции OVER, которая может включать в себя:
Порядок следования строк (ORDER BY).
Разбиение на группы или партиции (PARTITION BY).
Ограничения окна (ROWS или RANGE), определяющие начальную и конечную точки окна относительно текущей строки.

🟠Типы оконных функций
Агрегатные функции: SUM, AVG, MIN, MAX, COUNT и т.д., которые обычно используются для агрегации данных в рамках окна.
Функции ранжирования: ROW_NUMBER, RANK, DENSE_RANK, эти функции присваивают уникальные или повторяющиеся номера строкам в зависимости от их значений по определённым полям.
Функции смещения: LEAD, LAG, позволяют получить значение из строки, расположенной на определённое количество позиций до или после текущей строки в рамках окна.
Статистические и аналитические функции: например, PERCENT_RANK, CUME_DIST.

SELECT
date,
sales,
AVG(sales) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS moving_average
FROM
sales_data;


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Расскажи о Gradient-boosted trees

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой функционал оптимизируется в задаче линейной регрессии Как записать это в векторной записи ?

В задаче линейной регрессии цель состоит в том, чтобы найти такие параметры модели (веса и смещение), которые минимизируют ошибку предсказаний. Наиболее часто используемая функция ошибки для линейной регрессии — это среднеквадратичная ошибка (MSE, Mean Squared Error).

🟠Функция ошибки в задаче линейной регрессии
Для набора данных \((X, y)\), где \(X\) — это матрица признаков, а \(y\) — вектор целевых значений, модель линейной регрессии делает предсказания \(\hat{y}\), используя следующие параметры:
\(\mathbf{w}\) — вектор весов (коэффициентов).
\(b\) — смещение (bias).
Предсказания модели можно записать в векторной форме как:
\hat{y} = X \mathbf{w} + b

🟠Среднеквадратичная ошибка (MSE)
Измеряет средний квадрат разницы между истинными значениями и предсказанными значениями. Функционал, который оптимизируется в линейной регрессии, записывается следующим образом:
J(\mathbf{w}, b) = \frac{1}{m} \sum_{i=1}^m (\hat{y}^{(i)} - y^{(i)})^2

🟠Векторная запись функционала
В векторной форме, если мы обозначим:
\( \mathbf{y} \) — вектор истинных значений размерности \( m \times 1 \).
\( \hat{\mathbf{y}} = X \mathbf{w} + b \) — вектор предсказанных значений размерности \( m \times 1 \).
Тогда можно записать MSE в векторной форме следующим образом:
J(\mathbf{w}, b) = \frac{1}{m} (\hat{\mathbf{y}} - \mathbf{y})^T (\hat{\mathbf{y}} - \mathbf{y})
Если записать более компактно, с учетом того, что \( \mathbf{b} \) может быть представлен как \( b \mathbf{1} \) (вектор, заполненный значениями \( b \)):
\hat{\mathbf{y}} = X \mathbf{w} + b \mathbf{1}
Тогда функционал MSE можно записать как:
J(\mathbf{w}, b) = \frac{1}{m} (X \mathbf{w} + b \mathbf{1} - \mathbf{y})^T (X \mathbf{w} + b \mathbf{1} - \mathbf{y})

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1💊1
🤔 Что такое precision?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие современные архитектуры языковых моделей известны?

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

🟠BERT (Bidirectional Encoder Representations from Transformers)
Разработан компанией Google в 2018 году. Использует механизм внимания (attention), который позволяет модели одновременно учитывать контекст с обеих сторон входной последовательности (левой и правой). Эта модель предобучается на задачах предсказания слов по контексту и определения следующего предложения. Значительно улучшил результаты по сравнению с предыдущими моделями на широкий спектр задач NLP, включая вопросно-ответные системы, классификацию текстов и маркировку сущностей.

🟠GPT (Generative Pre-trained Transformer)
Разработана OpenAI, GPT и её последующие версии (GPT-2, GPT-3, GPT-4) стали известны благодаря своей способности генерировать текст, который трудно отличить от текста, написанного человеком. Представляет собой модель с однонаправленным вниманием, что позволяет ей эффективно предсказывать следующее слово в последовательности, делая её особенно мощной для задач генерации текста. Модели GPT обучаются на огромных объёмах текстовых данных и способны выполнять широкий спектр задач без специализированного обучения, используя технику под названием "zero-shot learning".

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

🟠RoBERTa (Robustly Optimized BERT Approach)
Разработана Facebook, представляет собой итерацию и улучшение BERT. Модифицирует ключевые аспекты BERT, такие как увеличение размера мини-пакетов, удлинение тренировочных данных и удаление этапа предобучения с предсказанием следующего предложения. Эти изменения позволили RoBERTa достичь новых рекордных результатов на стандартных тестовых наборах NLP.

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие принципы ООП тебе известны?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2
🤔 Когда мы берём t-критерий, а когда Манни-Уитни?

Т-критерий Стьюдента и критерий Манна-Уитни (U-тест) используются для сравнения двух групп, но применяются в разных случаях.

🚩Когда использовать t-критерий Стьюдента?

Данные имеют нормальное распределение.
Данные количественные (например, рост, вес, температура).
Дисперсии групп равны (для непарного t-теста).
Группы независимы (для независимого t-теста) или зависят (для парного t-теста).
Хочу проверить, отличается ли средний рост мужчин и женщин.
Если данные нормальны → t-критерий.

🚩Когда использовать критерий Манна-Уитни?

Данные не обязаны быть нормально распределёнными.
Данные могут быть порядковыми (например, оценки: «нравится – не нравится»).
Группы независимы (аналог непарного t-критерия).

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM