Logo
TGCATALOG
Каталог Подборки Блог
Data Science - собесы

Data Science - собесы

Собесы Data Science.

Нет оценок
608
29.10.2026
608
29.10.2026
Нет оценок
608
29.10.2026
Безопасный переход через бот
О канале

Собесы Data Science.

Подписчиков 4,871
Тематика Технологии
Язык Русский
Ссылка t.me/easy_ds

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Вопросы для собеседований по Data Science.

Последние посты

Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Когда нужно использовать метод главных компонентов в бизнесе? Метод главных компонентов (Principal Component Analysis, PCA) используется в бизнесе для уменьшения размерности данных, что позволяет легче анализировать и визуализировать большие наборы данных, а также выявлять скрытые структуры и взаимосвязи между переменными. 🚩Когда использовать PCA 🟠Большие наборы данных Когда у вас есть данные с большим количеством переменных (столбцов), и они могут содержать избыточную информацию. Пример: В маркетинговом исследовании у вас может быть множество переменных, таких как возраст, доход, покупательские привычки, предпочтения и т.д. 🟠Проблемы многоколлинеарности Когда переменные сильно коррелируют друг с другом, что может затруднить анализ. Пример: В финансовом анализе цены на различные активы могут быть сильно связаны друг с другом. 🟠Упрощение визуализации Когда нужно визуализировать данные с множеством измерений на двумерных или трехмерных графиках для более простого понимания. Пример: Анализ клиентов на основе различных демографических и поведенческих параметров. 🚩Зачем использовать PCA 🟠Уменьшение размерности PCA уменьшает количество переменных, сохраняя при этом как можно больше информации. Пример: Из набора данных с 100 переменных можно выделить 2-3 главных компонента, которые объясняют основную вариацию в данных. 🟠Улучшение производительности моделей Меньшее количество переменных может уменьшить время обучения моделей машинного обучения и улучшить их производительность. Пример: В прогнозировании спроса на продукцию можно использовать PCA для предварительной обработки данных, чтобы улучшить точность модели. 🟠Удаление шума PCA помогает устранить случайные шумы и незначимые переменные, фокусируясь на важнейших компонентах данных. Пример: В анализе рынка ценных бумаг это может помочь сосредоточиться на основных трендах, а не на случайных колебаниях. 🚩Как это используется 🟠Предобработка данных Перед применением PCA необходимо стандартизировать данные (например, с помощью Z-оценки), чтобы каждая переменная имела одинаковый вес. from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA import pandas as pd # Загрузка данных data = pd.read_csv('data.csv') # Стандартизация данных scaler = StandardScaler() scaled_data = scaler.fit_transform(data) # Применение PCA pca = PCA(n_components=2) # Уменьшение до 2 компонент principal_components = pca.fit_transform(scaled_data) # Преобразование обратно в DataFrame pca_df = pd.DataFrame(data=principal_components, columns=['PC1', 'PC2']) 🟠Интерпретация результатов После применения PCA, нужно интерпретировать главные компоненты и их вклад в общую вариацию. Пример: Визуализация двух главных компонент может показать кластеры клиентов с различными характеристиками. Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Что считается хорошей хэш функцией? Хэш-функция — это функция, которая принимает входные данные (например, строку) и возвращает фиксированную длину выходного значения (хэш). 🚩Характеристики 🟠Однозначность (Deterministic) Одна и та же входная строка всегда должна давать один и тот же хэш-значение. 🟠Равномерное распределение (Uniform Distribution): Хорошая хэш-функция должна распределять хэш-значения равномерно по всему диапазону, чтобы минимизировать количество коллизий. 🟠Быстрота вычисления (Efficiency) Хэш-функция должна быть быстрой и эффективной в вычислении, даже для больших объемов данных. 🟠Минимум коллизий (Low Collision Rate) Вероятность того, что два разных входных значения дадут один и тот же хэш-значение, должна быть минимальной. 🟠Необратимость (Non-reversibility) По хэш-значению должно быть практически невозможно восстановить исходное значение. 🟠Аваланч-эффект (Avalanche Effect) Незначительное изменение входных данных должно приводить к значительному изменению выходного хэш-значения. 🚩Примеры 🟠SHA-256 Используется в криптографии и безопасных системах. Обеспечивает высокую степень безопасности и низкую вероятность коллизий. 🟠MD5 Более старая хэш-функция, ранее широко используемая, но сейчас считается менее безопасной из-за уязвимости к коллизиям. Однако все еще может использоваться для задач, где высокая безопасность не является критичной. 🟠MurmurHash Очень эффективная и быстрая хэш-функция, популярная для использования в хэш-таблицах и других структурах данных. 🚩 Пример использования import hashlib def hash_string(input_string): # Использование SHA-256 хэш-функции sha_signature = hashlib.sha256(input_string.encode()).hexdigest() return sha_signature # Пример хэширования строки input_str = "Hello, world!" hashed_str = hash_string(input_str) print(f"Хэш-значение для '{input_str}' с использованием SHA-256: {hashed_str}") Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Что такое градиентный спуск? Это оптимизационный алгоритм, который используется для минимизации функции потерь в задачах машинного обучения. Основная идея заключается в поиске минимального значения функции потерь путём итеративного движения в направлении наискорейшего убывания этой функции, что определяется градиентом (или производной) функции. 🚩Как это работает 🟠Определение функции потерь В контексте машинного обучения функция потерь оценивает, насколько хорошо модель предсказывает данные. Чем меньше значение функции потерь, тем лучше подгонка модели к данным. 🟠Вычисление градиента Градиент функции потерь — это вектор частных производных, который показывает направление наискорейшего роста функции. Для минимизации функции потерь нужно двигаться в противоположном направлении, т.е. по направлению наискорейшего убывания. 🟠Обновление параметров На каждом шаге параметры модели (например, веса в линейной регрессии) корректируются в направлении, противоположном градиенту, что осуществляется по формуле: 🟠Итерации Шаги 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) Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Как решить задачу, где присутствует одновременно два target – один categorical, другой continuous? Используются модели multi-output, которые обучаются на несколько целевых переменных, например, через отдельные выходные слои в нейросети. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 В чем заключается проблема овер фитинг? Проблема переобучения (overfitting) заключается в том, что модель машинного обучения слишком хорошо подстраивается под обучающие данные, включая их шум и случайные колебания, что приводит к плохой обобщающей способности на новых, невидимых данных. Переобученная модель имеет высокую точность на обучающих данных, но плохо работает на тестовых или реальных данных. 🚩Причины переобучения 🟠Слишком сложная модель Модель имеет слишком много параметров относительно объема данных. Например, глубокая нейронная сеть с множеством слоев и узлов. 🟠Малый объем данных Недостаточно данных для обучения модели, что приводит к тому, что модель запоминает отдельные примеры вместо выявления общих закономерностей. 🟠Шумные данные Наличие шума или выбросов в данных, которые модель начинает интерпретировать как важные закономерности. 🚩Признаки переобучения 🟠Высокая точность на обучающих данных и низкая на тестовых данных Если модель показывает очень высокую точность на данных, на которых она обучалась, и низкую точность на новых данных, это явный признак переобучения. 🟠Сложные модели с высокими коэффициентами Модель может иметь высокие значения коэффициентов, что указывает на сильное подстраивание под обучающие данные. 🚩Методы предотвращения переобучения 🟠Разделение данных на тренировочный и тестовый наборы Использование тренировочного набора для обучения модели и тестового набора для оценки ее обобщающей способности. 🟠Кросс-валидация Разделение данных на несколько частей и использование разных частей для обучения и тестирования в нескольких итерациях. 🟠Регуляризация Введение штрафов за сложные модели. Например, L1 и L2 регуляризация уменьшают значения коэффициентов модели. 🟠Снижение сложности модели Использование менее сложных моделей с меньшим количеством параметров. 🟠Сбор большего объема данных Увеличение объема обучающих данных помогает модели лучше выявлять общие закономерности. 🟠Прерывание обучения (Early Stopping) Остановка обучения модели, когда ошибка на валидационном наборе данных начинает увеличиваться. 🟠Аугментация данных Создание дополнительных данных путем их модификации (например, поворот, масштабирование изображений), что помогает модели обобщать лучше. from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # Пример данных X = ... # Ваши данные признаков y = ... # Целевая переменная # Разделение данных на обучающий и тестовый наборы X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Модель с L2 регуляризацией (Ridge) model = Ridge(alpha=1.0) model.fit(X_train, y_train) # Предсказание и оценка y_pred_train = model.predict(X_train) y_pred_test = model.predict(X_test) train_error = mean_squared_error(y_train, y_pred_train) test_error = mean_squared_error(y_test, y_pred_test) print(f'Training Error: {train_error}') print(f'Test Error: {test_error}') Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Какие способы регурялизации сеточек знаешь? Регуляризация нейросетей помогает избежать переобучения, улучшая их способность к обобщению. Рассмотрим основные методы: 🟠L1 и L2-регуляризация (Weight Decay) Добавляют штраф за большие веса в функцию ошибки, предотвращая слишком сложные модели. L1-регуляризация (Lasso, L1-norm) Добавляет к функции ошибки сумму абсолютных значений весов: Loss = Loss_{original} + \lambda \sum |w| Заставляет веса стремиться к нулю, создавая разреженные модели (некоторые веса становятся 0). L2-регуляризация (Ridge, L2-norm) Добавляет сумму квадратов весов: Loss = Loss_{original} + \lambda \sum w^2 Уменьшает значения весов, но не зануляет их полностью. import torch.nn as nn import torch.optim as optim model = nn.Linear(10, 1) optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001) # L2-регуляризация 🟠Dropout Отключает случайные нейроны в процессе обучения, предотвращая их зависимость друг от друга. В каждом шаге обучения случайные нейроны "выключаются" с вероятностью p. В тестовом режиме нейроны работают в полную силу, но с весами, скорректированными на p. import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(10, 50) self.dropout = nn.Dropout(p=0.5) # Выключаем 50% нейронов self.fc2 = nn.Linear(50, 1) def forward(self, x): x = self.fc1(x) x = self.dropout(x) x = self.fc2(x) return x 🟠Batch Normalization Нормализует входные данные каждого слоя, уменьшая зависимость от масштаба входных данных. Ускоряет обучение Снижает зависимость от начальных весов Обладает небольшим регуляризационным эффектом import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(10, 50) self.bn1 = nn.BatchNorm1d(50) # Нормализация self.fc2 = nn.Linear(50, 1) def forward(self, x): x = self.fc1(x) x = self.bn1(x) x = self.fc2(x) return x 🟠Data Augmentation (для CV-задач) Искусственное увеличение данных путём аугментаций (повороты, отражения, изменения яркости). import torchvision.transforms as transforms transform = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomRotation(10), transforms.ColorJitter(brightness=0.2, contrast=0.2), transforms.ToTensor() ]) 🟠Early Stopping Останавливает обучение, если валидационная ошибка перестаёт уменьшаться. from torch.optim.lr_scheduler import ReduceLROnPlateau scheduler = ReduceLROnPlateau(optimizer, mode='min', patience=5) Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Почему считается, что случайный лес не переобучается? На самом деле случайный лес может переобучаться, особенно когда речь идет о наличии очень шумных данных или когда модель строится без ограничений на глубину деревьев. Однако, по сравнению с одиночными деревьями решений, случайный лес действительно обладает более высокой устойчивостью к переобучению по ряду причин: 🟠Ансамблевый метод Случайный лес является ансамблевым методом, объединяющим предсказания множества деревьев решений. Каждое дерево в лесу строится независимо от других, что помогает уменьшить влияние ошибок отдельного дерева на итоговую модель. Это голосование по множеству деревьев повышает общую устойчивость и способность к обобщению. 🟠Использование подвыборок и подмножеств признаков При построении каждого дерева случайный лес использует случайные подвыборки обучающих данных (bootstrap samples), а также случайные подмножества признаков. Это означает, что каждое дерево строится на основе различных аспектов данных, что уменьшает риск переобучения, связанный с чрезмерной оптимизацией под одни и те же шумы или выбросы в данных. 🟠Голосование по большинству Когда несколько деревьев "голосуют" за окончательное предсказание, ошибки отдельных деревьев, склонных к переобучению, могут быть нивелированы. Если одно дерево переобучилось и ошибочно классифицирует пример, другие деревья, которые не страдают от этой проблемы, могут "исправить" эту ошибку своими предсказаниями. 🟠Устойчивость к шуму и выбросам Поскольку каждое дерево строится независимо, влияние шума и выбросов снижается, так как они влияют только на те деревья, в подвыборки которых они попали. Это уменьшает их воздействие на общий результат ансамбля. Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Сравнение архитектуры RNN, CNN, трансформера? RNN обрабатывает данные последовательно и хорошо работает с временными рядами или текстами, но страдает от проблем с градиентами и плохо масштабируется. CNN извлекает локальные признаки через свёртки, изначально предназначен для изображений, но может применяться к тексту. Трансформер использует механизм внимания, обрабатывает всё параллельно и учитывает контекст целиком, что делает его эффективным в работе с языком и последовательностями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Data Science - собесы
Data Science - собесы
🔒Открыть пост
и посмотреть медиа
🤔 Как сгенирировать распределение исходя из выборок? Генерация распределения из выборок данных включает использование методов оценки плотности и генерации новых данных, которые соответствуют распределению исходных данных. Один из наиболее популярных методов — это использование оценки плотности ядра (KDE, Kernel Density Estimation). Также можно использовать другие методы, такие как метод исторгаммы или моделирование распределений с использованием параметрических подходов (например, нормальное распределение). 🚩Методы генерации распределения из выборок 🟠Оценка плотности ядра (KDE) KDE сглаживает данные, чтобы создать непрерывное аппроксимированное распределение, основанное на данных выборки. Для реализации KDE можно использовать библиотеку scipy или seaborn. 🟠Гистограмма Гистограмма разбивает данные на бины и оценивает плотность данных в каждом бине. Это простой способ оценки распределения данных. 🟠Параметрическое моделирование Можно подогнать данные к известным распределениям (например, нормальное, экспоненциальное) и использовать параметры этого распределения для генерации новых данных. 🚩Примеры генерации распределения в Python Использование KDE с библиотекой seaborn import numpy as np import seaborn as sns import matplotlib.pyplot as plt # Пример данных data = np.random.normal(loc=0, scale=1, size=1000) # Оценка плотности ядра (KDE) sns.kdeplot(data, shade=True) plt.title("Kernel Density Estimation (KDE)") plt.show() Использование KDE с библиотекой scipy import numpy as np from scipy.stats import gaussian_kde import matplotlib.pyplot as plt # Пример данных data = np.random.normal(loc=0, scale=1, size=1000) # Оценка плотности ядра (KDE) kde = gaussian_kde(data) # Создание новых данных на основе KDE x = np.linspace(min(data), max(data), 1000) kde_values = kde(x) plt.plot(x, kde_values) plt.title("Kernel Density Estimation (KDE)") plt.show() Генерация новых данных из KDE # Генерация новых данных на основе оцененного распределения new_samples = kde.resample(size=1000).T[0] plt.hist(new_samples, bins=30, density=True, alpha=0.5, label='Generated Data') sns.kdeplot(data, shade=True, label='Original Data') plt.title("Generated Data vs Original Data") plt.legend() plt.show() Параметрическое моделирование (нормальное распределение) import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm # Пример данных data = np.random.normal(loc=0, scale=1, size=1000) # Оценка параметров нормального распределения mu, std = norm.fit(data) # Генерация новых данных new_data = np.random.normal(loc=mu, scale=std, size=1000) plt.hist(new_data, bins=30, density=True, alpha=0.5, label='Generated Data') xmin, xmax = plt.xlim() x = np.linspace(xmin, xmax, 100) p = norm.pdf(x, mu, std) plt.plot(x, p, 'k', linewidth=2, label='Fitted Distribution') plt.title("Generated Data with Fitted Distribution") plt.legend() plt.show() Ставь 👍 и забирай 📚 Базу знаний
Data Science - собесы
Динамика подписчиков
+-0.7% за 30 дней
Текущие
4,871
Месяц назад
4,906
Средний рост
+-1 / день
Обновлено
10 часов назад

Отзывы о канале Data Science - собесы

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход