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

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

Открыть в Telegram
4 924
Подписчики
+224 часа
+57 дней
+1030 день
Архив постов
Разработка и запуск интернет-магазина за 299 000 руб. Адаптивные, быстрые и высоконагружаемые интернет магазины на CMS 1C-Бит
Разработка и запуск интернет-магазина за 299 000 руб. Адаптивные, быстрые и высоконагружаемые интернет магазины на CMS 1C-Битрикс под ключ. Сопровождение и развитие магазина. 299 000 руб. Получить предложение #реклама webformat.ru О рекламодателе

🤔 Какие принципы ООП тебе известны? Основные принципы: инкапсуляция (сокрытие данных), наследование (повторное использование кода), полиморфизм (разные реализации одного интерфейса), абстракция (выделение ключевых характеристик). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В каких случаях логистическая регрессия на задачах классификации будет работать лучше, чем случайный лес? Логистическая регрессия и случайный лес – это два популярных алгоритма для классификации, но они работают по-разному. Давайте разберём, в каких случаях логистическая регрессия будет лучше, чем случайный лес. 🚩Когда данные линейно разделимы Логистическая регрессия – это линейный алгоритм. Если классы можно разделить гиперплоскостью, логистическая регрессия будет работать отлично. Если у вас есть два класса, и они расположены в виде двух облаков по разные стороны от прямой, логистическая регрессия легко найдёт разделяющую границу. Случайный лес в этом случае будет усложнять решение, строя множество деревьев, хотя можно обойтись простой линейной моделью. 🚩Когда данные высокоразмерные и разреженные Логистическая регрессия хорошо работает с разреженными данными (например, при обработке текстов в NLP). Если вы строите модель на основе Bag of Words (BoW) или TF-IDF для классификации текстов, логистическая регрессия обычно даёт хорошие результаты. Случайный лес требует больше данных и может работать хуже в разреженных пространствах. 🚩Когда важны вероятность предсказания Логистическая регрессия даёт интерпретируемые вероятности, так как использует сигмоидную функцию: P(y=1|X) = \frac{1}{1 + e^{-(wX + b)}} Случайный лес тоже может выдавать вероятности, но они менее стабильны и не так хорошо калиброваны. В медицинской диагностике важно знать не только класс (болен/здоров), но и вероятность заболевания. В таких случаях логистическая регрессия предпочтительнее. 🚩Когда важно объяснение модели Логистическая регрессия даёт понятные коэффициенты \( w \), которые можно интерпретировать как влияние каждого признака на вероятность принадлежности к классу. В задачах кредитного скоринга банки используют логистическую регрессию, потому что важно объяснять, почему клиенту одобряют или не одобряют кредит. Случайный лес – «чёрный ящик», где трудно интерпретировать, почему модель приняла то или иное решение. 🚩Когда данных мало Логистическая регрессия работает хорошо даже на небольших выборках, потому что имеет мало параметров и не склонна к переобучению. Если у вас есть всего 100 примеров и 10 признаков, логистическая регрессия обучится хорошо, а случайный лес может переобучиться из-за высокой гибкости. Ставь 👍 и забирай 📚 Базу знаний

Доброград: жизнь без мегаполиса, но со всем, что важно А что, если после работы не нужно стоять в пробке, до школы — нескольк
+2
Доброград: жизнь без мегаполиса, но со всем, что важно А что, если после работы не нужно стоять в пробке, до школы — несколько минут, а природа - не только по выходным? Доброград — новый город во Владимирской области, в 2,5 часах от Москвы. Здесь всё важное на расстоянии 15 минут: 🎓 школы и детские сады 🏃‍♂️ бассейн, спорт, теннис, падел, вейк-парк и гольф-поле 😊 лес, озёра, парки и 25 км велодорожек ✨ рестораны и SPA ✅ медицина Дети могут сами добираться до школы. Спорт и любимые занятия становятся частью обычного дня. А вместо часов в дороге появляется время на семью, друзей и себя. И это не место, куда приезжают только на выходные. Здесь уже живут 3000 человек из 60+ регионов России. Выбирайте свой формат: готовые квартиры, таунхаусы или земельные участки. Узнать больше #реклама dobrograd.ru О рекламодателе

Пожизненный PRO доступ на easyoffer — по цене одного года! До 2 сентября вы можете купить PRO навсегда. Покупаешь один раз — пользуешься всю жизнь. – База вопросов и задач из собеседований – Примеры видео-ответов на вопросы – Записи реальных собеседований – Тренажеры "Проработка вопросов" и "Реальное собеседование" – Аналитика требований из вакансий – Автоотклики на вакансии – Агрегатор вакансий (скоро) 👉 Купить PRO со скидкой 70%: https://easyoffer.ru/pro

🤔 Зачем нужен self super? self указывает на текущий экземпляр класса, а super позволяет обращаться к методам родительского класса, избегая дублирования кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Подготовка к вступительным экзаменам в ШАД 120+ поступивших в ШАД. Преподаватели МГУ. Гарантия результата. Вы поступите в ШАД
+3
Подготовка к вступительным экзаменам в ШАД 120+ поступивших в ШАД. Преподаватели МГУ. Гарантия результата. Вы поступите в ШАД, магистратуру или мы зачислим Вас на следующий поток бесплатно Узнать больше #реклама 16+ shadhelper.com О рекламодателе

🤔 Что такое recall? Это метрика в машинном обучении и статистике, которая измеряет способность модели классификации находить все релевантные случаи в данных. Другими словами, он показывает, какую долю объектов из всех истинно положительных объектов модель смогла правильно классифицировать как положительные. 🚩Определение и формула Определяется как отношение числа истинно положительных результатов (true positives, TP) к сумме истинно положительных и ложно отрицательных результатов (false negatives, FN): \[ \text{Recall} = \frac{TP}{TP + FN} \] 🚩Зачем это нужно Особенно важен в ситуациях, где пропуск истинно положительных результатов может иметь серьёзные последствия. Например, в медицинской диагностике важно обнаружить как можно больше реальных случаев заболевания, чтобы назначить соответствующее лечение. Представим, что у нас есть тест на обнаружение болезни, и в группе из 100 человек 30 действительно болеют. Если тест правильно идентифицировал 25 из них как больных, полнота теста будет: \[ \text{Recall} = \frac{25}{30} \approx 0.83 \]
from sklearn.metrics import recall_score

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

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

# Расчет полноты
recall = recall_score(y_true, y_pred)
print("Recall:", recall)
Ставь 👍 и забирай 📚 Базу знаний

Скидка 25% на гели Ariel и Tide! Скидка 25% в Любимой категории на товары брендов Ariel и Tide Купить #реклама market.yandex.
Скидка 25% на гели Ariel и Tide! Скидка 25% в Любимой категории на товары брендов Ariel и Tide Купить #реклама market.yandex.ru О рекламодателе

🤔 Как посчитать рок аук скор? Она измеряет способность модели различать положительные и отрицательные классы, независимо от выбранного порога классификации. Значение ROC AUC варьируется от 0 до 1, где 1 соответствует идеальной модели, а 0.5 — случайному угадыванию. 🚩Шаги для расчета в Python 1⃣Подготовка данных и модели. 2⃣Предсказание вероятностей классов. 3⃣Вычисление ROC AUC с использованием библиотеки scikit-learn.
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score

# Генерация данных
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

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

# Обучение модели логистической регрессии
model = LogisticRegression()
model.fit(X_train, y_train)

# Предсказание вероятностей для тестовой выборки
y_pred_prob = model.predict_proba(X_test)[:, 1]

# Вычисление ROC AUC
roc_auc = roc_auc_score(y_test, y_pred_prob)
print(f"ROC AUC Score: {roc_auc:.2f}")
1⃣Генерация данных make_classification создает набор данных для задачи классификации. 2⃣Разделение данных train_test_split делит данные на обучающую и тестовую выборки. 3⃣Обучение модели LogisticRegression используется для обучения модели логистической регрессии. 4⃣Предсказание вероятностей predict_proba возвращает вероятности для каждого класса. Нас интересует вероятность положительного класса (1), поэтому берем второй столбец результата ([:, 1]). 5⃣Вычисление ROC AUC roc_auc_score вычисляет AUC на основе истинных меток (y_test) и предсказанных вероятностей (y_pred_prob). Ставь 👍 и забирай 📚 Базу знаний

Зарабатывайте на установках Яндекс Браузера Партнёрская программа для сервисных центров, магазинов компьютерной техники, сайт
Зарабатывайте на установках Яндекс Браузера Партнёрская программа для сервисных центров, магазинов компьютерной техники, сайтов для скачивания файлов и авторов статей. Вы можете предлагать его своим клиентам и аудитории — и зарабатывать на новых установках. Выплаты до 500₽ за каждую установку Яндекс Браузера. Подать заявку #реклама 0+ partner.browser.yandex.ru О рекламодателе

🤔 Как можно сравнивать два ненормальных распределения? 🚩Непараметрические тесты 🟠Тест Манна-Уитни (U-тест Манна-Уитни) Используется для сравнения двух независимых выборок. Тест проверяет, различаются ли распределения значений между двумя группами.
from scipy.stats import mannwhitneyu

data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
stat, p = mannwhitneyu(data1, data2)
print(f'U-статистика: {stat}, p-значение: {p}')     
🟠Тест Уилкоксона (Wilcoxon signed-rank test) Используется для сравнения двух связанных выборок или парных наблюдений.
from scipy.stats import wilcoxon

before = [20, 30, 40, 50, 60]
after = [21, 29, 39, 51, 59]
stat, p = wilcoxon(before, after)
print(f'W-статистика: {stat}, p-значение: {p}')     
🟠Критерий Колмогорова-Смирнова (Kolmogorov-Smirnov test) Используется для сравнения формы двух распределений.
from scipy.stats import ks_2samp

data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
stat, p = ks_2samp(data1, data2)
print(f'KS-статистика: {stat}, p-значение: {p}')     
🚩Визуализация 🟠Гистограммы и плотности Построение гистограмм и графиков плотности для визуального сравнения распределений.
import matplotlib.pyplot as plt
import seaborn as sns

data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]

sns.histplot(data1, kde=True, color='blue', label='Data1', alpha=0.5)
sns.histplot(data2, kde=True, color='red', label='Data2', alpha=0.5)
plt.legend()
plt.show()     
🟠Boxplots (ящики с усами) Помогают сравнить распределения и выявить отличия в медиане, квартилях и выбросах.
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]

plt.boxplot([data1, data2], labels=['Data1', 'Data2'])
plt.show()     
🚩Другие методы 🟠Коэффициент Спирмена (Spearman's rank correlation) Проверяет монотонную связь между двумя выборками.
from scipy.stats import spearmanr

data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
corr, p = spearmanr(data1, data2)
print(f'Корреляция Спирмена: {corr}, p-значение: {p}')
Ставь 👍 и забирай 📚 Базу знаний

Регистрируйтесь на Yandex Scale 2026 Главная конференция Yandex Cloud. Узнайте о сервисах, которые меняют ваш бизнес. 4 офлай
+5
Регистрируйтесь на Yandex Scale 2026 Главная конференция Yandex Cloud. Узнайте о сервисах, которые меняют ваш бизнес. 4 офлайн-трека (AI, Infra + DevTools, Data, Security), онлайн-трек Deep Tech, воркшопы по ИИ и интерактивы. Подробнее о программе читайте в карточках🗒 📅24 сентября 🚗Москва + 💻онлайн Участие бесплатное! Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе

🤔 Как представить модель лтв для бизнеса? Представление модели пожизненной ценности клиента (LTV) для бизнеса требует чёткого понимания целей бизнеса, практической значимости модели и способности переводить технические детали в понятные и полезные бизнес-инсайты. 🟠Определите цель модели LTV Начните с объяснения, для чего была разработана модель LTV и какие бизнес-процессы она может улучшить. Это может быть повышение ROI маркетинговых кампаний, оптимизация взаимодействия с клиентами, повышение удержания клиентов или более эффективное распределение ресурсов. 🟠Подробно о методологии Опишите, какие данные были использованы для обучения модели, какие методы машинного обучения применялись, и как производилась валидация результатов. Объясните выбор определённых переменных и их влияние на прогнозы LTV. 🟠Демонстрация результатов Используйте визуализации для демонстрации работы модели. Графики, такие как ROC-кривые, диаграммы распределения LTV или сравнения реальных и предсказанных значений LTV, могут помочь наглядно представить эффективность модели. Также покажите, как модель справляется с различными сегментами клиентов. 🟠Бизнес-влияние Объясните, как использование модели LTV может привести к конкретным бизнес-преимуществам. Приведите примеры улучшений: например, на сколько увеличилась рентабельность за счёт оптимизации маркетинговых затрат или как повысилась общая прибыль за счет более точного прогнозирования поведения клиентов. 🟠Предложения по реализации Опишите, как модель можно интегрировать в текущие бизнес-процессы. Предложите конкретные шаги для внедрения модели, включая необходимые изменения в IT-инфраструктуре, процессы обработки данных и требования к персоналу. 🟠Рассмотрение ограничений и рисков Не упустите возможность обсудить потенциальные ограничения модели и возможные риски, связанные с её использованием. Это может включать данные, которые могут стать устаревшими, потенциальное переобучение модели или вопросы, связанные с конфиденциальностью данных. 🟠План постоянного обновления и обслуживания Модели машинного обучения требуют регулярного обновления для поддержания актуальности. Опишите процесс регулярного пересмотра и обновления модели, включая сбор новых данных, повторную оценку модели и адаптацию к изменяющимся рыночным условиям. Ставь 👍 и забирай 📚 Базу знаний

Освобождаем тимлида: делегируем и ускоряем команду Когда все решения сходятся к тимлиду, команда начинает ждать, а руководите
Освобождаем тимлида: делегируем и ускоряем команду Когда все решения сходятся к тимлиду, команда начинает ждать, а руководитель — работать за всех. Согласования, приоритеты и спорные вопросы постепенно превращают его в узкое место, которое ограничивает скорость всей команды. 📅 9 сентября в 20:00 МСК на открытом уроке разберём, как распределять ответственность и сохранять управляемость процессов без постоянного личного участия в каждом решении. Вы узнаете, что действительно стоит оставлять в зоне ответственности руководителя, а что можно передавать сотрудникам. Обсудим границы самостоятельности, распределение ролей и управленческие практики, которые помогают команде принимать больше решений самостоятельно. Примите участие, если хотите меньше контролировать каждую задачу и больше управлять системой работы команды! 👍 Узнать больше #реклама 16+ otus.ru О рекламодателе

🤔 Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке? Если модель обучалась на неотрицательной целевой метке (например, метки, которые не могут быть отрицательными, такие как возраст, стоимость, количество и т.д.). 🟠Регрессионные модели Могут предсказывать как положительные, так и отрицательные значения, если не наложены дополнительные ограничения. Например, линейная регрессия или случайный лес могут предсказывать отрицательные значения, даже если обучались на неотрицательных данных. Это происходит потому, что модель пытается найти лучшую аппроксимацию, минимизируя ошибку предсказания, и может выйти за пределы диапазона обучающих данных. 🟠Вероятностные модели (например, модели, предсказывающие вероятность события) Обученные на неотрицательных целевых метках (например, 0 или 1), будут предсказывать значения в диапазоне [0, 1]. Однако, эти модели также могут иногда предсказывать значения немного ниже 0 или выше 1 из-за особенности алгоритмов (например, логистическая регрессия без дополнительных ограничений). 🚩Способы предотвращения предсказания отрицательных значений 🟠Использование функции потерь с ограничениями Например, в регрессионных задачах можно использовать функции потерь, которые накладывают штраф за отрицательные предсказания. 🟠Постобработка предсказаний Можно применить после предсказания функцию, которая заменяет все отрицательные значения на ноль.
predictions = model.predict(X_test)
predictions = np.maximum(predictions, 0)  # Заменяем все отрицательные значения на 0   
🟠Использование моделей, которые по своей природе не могут предсказывать отрицательные значения Например, модели на основе дерева решений с соответствующими параметрами, нейронные сети с нелинейными активационными функциями, которые ограничивают выходное значение. 🟠Трансформация целевой переменной Можно применить логарифмическую трансформацию или другую трансформацию, которая делает целевую переменную всегда неотрицательной, и потом обратную трансформацию для предсказаний.
from sklearn.linear_model import LinearRegression
import numpy as np

# Пример данных
X_train = np.array([[1], [2], [3], [4]])
y_train = np.array([10, 15, 20, 25])  # Неотрицательные целевые метки

# Обучение модели
model = LinearRegression()
model.fit(X_train, y_train)

# Предсказания
X_test = np.array([[5], [6], [7]])
predictions = model.predict(X_test)

# Применение постобработки для удаления отрицательных значений
predictions = np.maximum(predictions, 0)

print(predictions)
Ставь 👍 и забирай 📚 Базу знаний

Битрикс24 представил Коворк/Код Ключевое: • Помнит рабочий контекст месяцами благодаря технологии Радиант: связывает задачи,
Битрикс24 представил Коворк/Код Ключевое: • Помнит рабочий контекст месяцами благодаря технологии Радиант: связывает задачи, сделки, переписку и файлы в единую картину, замечает риски и подсказывает следующий шаг — не нужно каждый раз объяснять, о каком клиенте или проекте речь; • Выполняет несколько задач параллельно — помогает ускорить рабочий процесс в разы; • В режиме Коворк выполняет рабочие поручения, в режиме Код создает приложения под ваши задачи; • Работает только с тем, к чему вы сами дали доступ; • Стабильно доступен в России, без зарубежных карт и посредников при оплате; • В основе — модель BitrixGPT 5.6 Agent 1M (контекст на 1M токенов); • Доступно для macOS, Windows и Linux. Ранний доступ к Битрикс24 Коворк/Код уже открыт. Получить предложение #реклама 16+ cowork.bitrix24.ru О рекламодателе

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

Свои Плюсы в S7 Airlines — это тема! Появился лайфхак, как заработать мили, летать в первом ряду или повысить класс обслуживания до бизнеса Узнали тут, что Яндекс начисляет мили S7 вместе с баллами Плюса. Переходите по ссылке и подключайте Свои Плюсы в S7 Airlines, пока есть бесплатный период Попробовать #реклама sp.yandex.ru О рекламодателе

🤔 Чем отличаются str и repr? Функции str() и repr() используются для получения строкового представления объектов, но они служат разным целям и работают по-разному. 🚩Функция str() Предназначена для получения "приятного" строкового представления объекта, которое может быть представлено пользователю. Она старается сделать строку более читабельной и понятной. Если метод __str__() не определен в классе объекта, использует метод __repr__() как запасной вариант.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name}, возраст {self.age} лет"

person = Person("Иван", 30)
print(str(person))  # Вывод: Иван, возраст 30 лет
🚩Функция repr() Предназначена для получения официального строкового представления объекта, которое может быть использовано для воссоздания того же объекта при помощи интерпретатора. repr() должна быть максимально точной и содержать информацию о всех атрибутах объекта. Результат repr() часто используется для отладки и разработки, так как он дает больше деталей о объекте.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person('{self.name}', {self.age})"

person = Person("Иван", 30)
print(repr(person))  # Вывод: Person('Иван', 30)
Ставь 👍 и забирай 📚 Базу знаний