и посмотреть медиа
Data Science - собесы
и посмотреть медиа
Собесы Data Science.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Вопросы для собеседований по Data Science.
🤔 Какие принципы ООП тебе известны? Основные принципы: инкапсуляция (сокрытие данных), наследование (повторное использование кода), полиморфизм (разные реализации одного интерфейса), абстракция (выделение ключевых характеристик). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 В каких случаях логистическая регрессия на задачах классификации будет работать лучше, чем случайный лес? Логистическая регрессия и случайный лес – это два популярных алгоритма для классификации, но они работают по-разному. Давайте разберём, в каких случаях логистическая регрессия будет лучше, чем случайный лес. 🚩Когда данные линейно разделимы Логистическая регрессия – это линейный алгоритм. Если классы можно разделить гиперплоскостью, логистическая регрессия будет работать отлично. Если у вас есть два класса, и они расположены в виде двух облаков по разные стороны от прямой, логистическая регрессия легко найдёт разделяющую границу. Случайный лес в этом случае будет усложнять решение, строя множество деревьев, хотя можно обойтись простой линейной моделью. 🚩Когда данные высокоразмерные и разреженные Логистическая регрессия хорошо работает с разреженными данными (например, при обработке текстов в NLP). Если вы строите модель на основе Bag of Words (BoW) или TF-IDF для классификации текстов, логистическая регрессия обычно даёт хорошие результаты. Случайный лес требует больше данных и может работать хуже в разреженных пространствах. 🚩Когда важны вероятность предсказания Логистическая регрессия даёт интерпретируемые вероятности, так как использует сигмоидную функцию: P(y=1|X) = \frac{1}{1 + e^{-(wX + b)}} Случайный лес тоже может выдавать вероятности, но они менее стабильны и не так хорошо калиброваны. В медицинской диагностике важно знать не только класс (болен/здоров), но и вероятность заболевания. В таких случаях логистическая регрессия предпочтительнее. 🚩Когда важно объяснение модели Логистическая регрессия даёт понятные коэффициенты \( w \), которые можно интерпретировать как влияние каждого признака на вероятность принадлежности к классу. В задачах кредитного скоринга банки используют логистическую регрессию, потому что важно объяснять, почему клиенту одобряют или не одобряют кредит. Случайный лес – «чёрный ящик», где трудно интерпретировать, почему модель приняла то или иное решение. 🚩Когда данных мало Логистическая регрессия работает хорошо даже на небольших выборках, потому что имеет мало параметров и не склонна к переобучению. Если у вас есть всего 100 примеров и 10 признаков, логистическая регрессия обучится хорошо, а случайный лес может переобучиться из-за высокой гибкости. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Зачем нужен self super? self указывает на текущий экземпляр класса, а super позволяет обращаться к методам родительского класса, избегая дублирования кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое 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) Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как посчитать рок аук скор? Она измеряет способность модели различать положительные и отрицательные классы, независимо от выбранного порога классификации. Значение 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). Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как можно сравнивать два ненормальных распределения? 🚩Непараметрические тесты 🟠Тест Манна-Уитни (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}') Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как представить модель лтв для бизнеса? Представление модели пожизненной ценности клиента (LTV) для бизнеса требует чёткого понимания целей бизнеса, практической значимости модели и способности переводить технические детали в понятные и полезные бизнес-инсайты. 🟠Определите цель модели LTV Начните с объяснения, для чего была разработана модель LTV и какие бизнес-процессы она может улучшить. Это может быть повышение ROI маркетинговых кампаний, оптимизация взаимодействия с клиентами, повышение удержания клиентов или более эффективное распределение ресурсов. 🟠Подробно о методологии Опишите, какие данные были использованы для обучения модели, какие методы машинного обучения применялись, и как производилась валидация результатов. Объясните выбор определённых переменных и их влияние на прогнозы LTV. 🟠Демонстрация результатов Используйте визуализации для демонстрации работы модели. Графики, такие как ROC-кривые, диаграммы распределения LTV или сравнения реальных и предсказанных значений LTV, могут помочь наглядно представить эффективность модели. Также покажите, как модель справляется с различными сегментами клиентов. 🟠Бизнес-влияние Объясните, как использование модели LTV может привести к конкретным бизнес-преимуществам. Приведите примеры улучшений: например, на сколько увеличилась рентабельность за счёт оптимизации маркетинговых затрат или как повысилась общая прибыль за счет более точного прогнозирования поведения клиентов. 🟠Предложения по реализации Опишите, как модель можно интегрировать в текущие бизнес-процессы. Предложите конкретные шаги для внедрения модели, включая необходимые изменения в IT-инфраструктуре, процессы обработки данных и требования к персоналу. 🟠Рассмотрение ограничений и рисков Не упустите возможность обсудить потенциальные ограничения модели и возможные риски, связанные с её использованием. Это может включать данные, которые могут стать устаревшими, потенциальное переобучение модели или вопросы, связанные с конфиденциальностью данных. 🟠План постоянного обновления и обслуживания Модели машинного обучения требуют регулярного обновления для поддержания актуальности. Опишите процесс регулярного пересмотра и обновления модели, включая сбор новых данных, повторную оценку модели и адаптацию к изменяющимся рыночным условиям. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке? Если модель обучалась на неотрицательной целевой метке (например, метки, которые не могут быть отрицательными, такие как возраст, стоимость, количество и т.д.). 🟠Регрессионные модели Могут предсказывать как положительные, так и отрицательные значения, если не наложены дополнительные ограничения. Например, линейная регрессия или случайный лес могут предсказывать отрицательные значения, даже если обучались на неотрицательных данных. Это происходит потому, что модель пытается найти лучшую аппроксимацию, минимизируя ошибку предсказания, и может выйти за пределы диапазона обучающих данных. 🟠Вероятностные модели (например, модели, предсказывающие вероятность события) Обученные на неотрицательных целевых метках (например, 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) Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Чем отличается градиентный спуск от SGD? Градиентный спуск использует весь набор данных для вычисления градиента и обновления параметров, что требует значительных вычислительных ресурсов. Стохастический градиентный спуск (SGD) обновляет параметры после каждого примера или мини-батча, что ускоряет обучение, но может быть менее стабильным. SGD часто сходится быстрее, но может застревать в локальных минимумах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!