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

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

رفتن به کانال در Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

نمایش بیشتر
4 901
مشترکین
-324 ساعت
-47 روز
-2230 روز
آرشیو پست ها
🤔 В каких моделях используются несимметрические метрики? Несимметрические метрики часто используются в моделях, где присутствует дисбаланс классов или когда ошибки в одних классах имеют более высокую стоимость, чем ошибки в других. Например, в медицинской диагностике, финансовом мошенничестве или кредитном скоринге, где пропуск положительного случая (например, болезни) может быть критичным. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

ИИ-пилоты не дают эффекта? Разбираем ошибки CIO ИИ-пилоты множатся, а результата нет? Бюджет уходит, бизнес ждёт эффекта, а в
ИИ-пилоты не дают эффекта? Разбираем ошибки CIO ИИ-пилоты множатся, а результата нет? Бюджет уходит, бизнес ждёт эффекта, а вы не понимаете, где ИИ действительно работает, а где — дорогой эксперимент? Присоединяйтесь к открытому уроку и узнайте, как CIO выстраивает ИИ-стратегию компании. 📅 19 октября в 19:00. Сергей Фегон разберёт: - Как ИИ меняет роль CIO и требования бизнеса к IT-руководителю. - Где ИИ даёт бизнес-эффект, а где остаётся экспериментом. - Как связать ИИ-инициативы с IT-стратегией и измеримыми результатами. - Что учитывать при внедрении: данные, архитектура, безопасность, стоимость, интеграция. Вы научитесь выбирать приоритетные сценарии ИИ, оценивать их по эффекту, стоимости и рискам и переходить от пилотов к промышленному использованию. ✅ Запишитесь сейчас и наведите порядок в ИИ-инициативах! Узнать больше #реклама 16+ otus.ru О рекламодателе

🤔 Почему в статистических тестах частно нулевой гипотезой берут отсутствие различий? В статистических тестах нулевая гипотеза (H0) часто формулируется как отсутствие различий или эффектов, потому что основная цель таких тестов — проверить, можно ли достаточно уверенно отвергнуть предположение об отсутствии изменений или различий и принять альтернативную гипотезу (H1), которая предполагает наличие этих различий или эффектов. Этот подход основан на нескольких важных принципах и целях статистического анализа: 🟠Принцип консерватизма Нулевая гипотеза, предполагающая отсутствие различий, является консервативной стартовой точкой. Это значит, что исследователь выдвигает предположение, которое "наименее благоприятно" для обнаружения эффекта. Такой подход помогает избежать ошибок первого рода — ошибочного отклонения верной нулевой гипотезы (ложноположительный результат). 🟠Статистическая мощность Задавая нулевую гипотезу как отсутствие различий, мы можем конкретно сфокусироваться на обнаружении любого отличия от этого "нулевого" состояния. Если такое отличие находится (и оно статистически значимо), мы можем быть более уверенными в том, что наблюдаемый эффект реален, а не является случайным. 🟠Принцип научного скептицизма Научный метод требует доказательств, чтобы опровергнуть существующее предположение или теорию. Нулевая гипотеза, предполагающая отсутствие различий, подразумевает, что любое утверждение о наличии различий должно быть подтверждено через строгую проверку и достаточные доказательства. 🟠Чёткость интерпретации При принятии нулевой гипотезы о отсутствии различий, любое статистически значимое отклонение от этой гипотезы может быть интерпретировано как доказательство наличия эффекта. Это упрощает интерпретацию результатов: если нулевая гипотеза отвергается, исследователи могут исследовать и объяснять характер и возможные причины обнаруженных различий. 🟠Управление рисками Закладывая в основу отсутствие различий, исследователи минимизируют риск принятия неверных решений о наличии эффекта, когда его на самом деле нет. Это особенно важно в медицинских и фармацевтических исследованиях, где ошибочные выводы могут иметь серьезные последствия. Ставь 👍 и забирай 📚 Базу знаний

Встречай смартфон Honor — с выгодой для себя! ✅ Стильный дизайн ✅ Заряд надолго ✅ Качественные фото ✅ Быстрая и плавная работ
Встречай смартфон Honor — с выгодой для себя! ✅ Стильный дизайн ✅ Заряд надолго ✅ Качественные фото ✅ Быстрая и плавная работа Выбирай свой Honor по привлекательной цене! Купить #реклама market.yandex.ru О рекламодателе

🤔 Как можно сравнивать два ненормальных распределения? 1. Применить непараметрические тесты, такие как тест Манна-Уитни или Краскела-Уоллиса. 2. Использовать бутстрепинг для создания доверительных интервалов. 3. Рассмотреть преобразование данных для приближения к нормальному виду. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть attention не в трансформерах? Механизмы внимания (attention mechanisms) используются не только в трансформерах, но и в других архитектурах нейронных сетей, таких как рекуррентные нейронные сети (RNN) и сверточные нейронные сети (CNN). 🚩Типы Attention 🟠Soft Attention (Мягкое внимание): Мягкое внимание часто используется в сочетании с RNN, особенно в задачах последовательного моделирования, таких как машинный перевод или генерация текста. В мягком внимании для каждого выходного элемента вычисляется взвешенная сумма всех входных элементов, где веса определяются функцией внимания (например, dot-product или scaled dot-product).
import torch
import torch.nn.functional as F

def soft_attention(query, keys, values):
    scores = torch.matmul(query, keys.transpose(-2, -1))
    attention_weights = F.softmax(scores, dim=-1)
    context_vector = torch.matmul(attention_weights, values)
    return context_vector, attention_weights    
🟠Hard Attention (Жесткое внимание): Жесткое внимание выбирает один входной элемент для каждого выходного элемента, что делает процесс детерминированным. В жестком внимании применяется метод выборки, такой как алгоритмы на основе Монте-Карло, чтобы выбрать один входной элемент. Используется в задачах с последовательными данными, где важно выбрать конкретный элемент последовательности. 🟠Self-Attention в RNN и CNN: RNN: Self-attention используется для учета связи каждого элемента последовательности с другими элементами, даже если они удалены друг от друга. В CNN self-attention помогает моделировать долгосрочные зависимости в изображениях.
def self_attention(x):
    query = x
    keys = x
    values = x
    context_vector, attention_weights = soft_attention(query, keys, values)
    return context_vector, attention_weights
🟠 Attention в сверточных нейронных сетях (CNN): Spatial Attention (Пространственное внимание): Используется для выделения важных областей на изображении. Channel Attention (Канальное внимание): Помогает выделить важные каналы (особенности) в изображении. 🚩Применение Attention вне трансформеров 🟠Машинный перевод: В seq2seq моделях с RNN soft attention позволяет модели фокусироваться на разных частях входного предложения при генерации каждого слова выходного предложения. 🟠Обработка изображений: Spatial и channel attention применяются для выделения значимых областей и признаков на изображениях, что улучшает точность классификации и обнаружения объектов. 🟠Анализ временных рядов: Self-attention в RNN позволяет учитывать зависимость между элементами временного ряда, что улучшает качество предсказаний. Ставь 👍 и забирай 📚 Базу знаний

Олимпиада Высшая проба: промышленное программирование Участвуй в олимпиаде школьников 9-11 класса по промышленному программир
Олимпиада Высшая проба: промышленное программирование Участвуй в олимпиаде школьников 9-11 класса по промышленному программированию от Яндекса и ВШЭ. Победителям — БВИ или 100 баллов по профильному предмету в топовых вузах России. Регистрируйся до 20 октября! Узнать больше #реклама olymp.hse.ru О рекламодателе

🤔 В чем разница между L1 и L2 регуляризацией? L1-регуляризация (Lasso) добавляет сумму модулей весов к функции потери, склоняя веса к нулю, что способствует разреженности. L2-регуляризация (Ridge) добавляет сумму квадратов весов, уменьшая их величину, но не зануляя. L1 эффективна для отбора признаков, а L2 — для стабилизации модели и борьбы с переобучением. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое 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}")
🚩Плюсы ➕Высокая точность: Бустинг часто превосходит по точности одиночные модели и другие методы ансамблевого обучения. ➕Гибкость: Может быть использован с различными базовыми моделями и легко адаптируется к различным задачам. ➕Обработка сложных данных: Эффективно работает с большими наборами данных и сложными зависимостями. 🚩Минусы ➖Время обучения: Обучение бустинговых моделей может быть медленным, особенно для больших наборов данных. ➖Чувствительность к шуму: Бустинг может переобучаться на шумных данных, так как модели пытаются исправить каждую ошибку. Ставь 👍 и забирай 📚 Базу знаний

Учетные системы, которые проектирует и тестирует AI Что если AI не просто пишет UI, а проходит весь цикл создания бизнес-сист
Учетные системы, которые проектирует и тестирует AI Что если AI не просто пишет UI, а проходит весь цикл создания бизнес-системы: собирает требования, формирует ТЗ и схему, собирает решение, проверяет его на соответствие требованиям, генерирует runtime-тесты и исправляет найденные ошибки? N-Reactor делает именно это на платформе NodaLogic. На выходе — не закрытый AI-сервис, а обычная конфигурация с понятной структурой и читаемым кодом, которую можно развернуть у себя, изучать и дорабатывать. В Telegram показываю архитектуру, эксперименты, реальные решения и развитие платформы. Узнать больше #реклама 16+ nmaker.pw О рекламодателе

🤔 Как избегают коллизии в хеш-таблице Для предотвращения коллизий в хэш-таблице используются методы, такие как цепочки (связывание элементов в списки) и открытая адресация (перенос коллизий в другие доступные ячейки). Метод цепочек добавляет все значения с одинаковым хэшом в связанный список, что позволяет хранить несколько элементов в одной ячейке. В открытой адресации при коллизии выполняется последовательный поиск следующей свободной ячейки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужен инстенс норм? Instance Normalization нормализует значения активаций по каждому примеру в мини-батче, что помогает стабилизировать и ускорить обучение. 🚩Цели 🟠Устранение статистических различий между примерами Instance Normalization нормализует каждый пример (или изображение) в мини-батче отдельно, устраняя различия в статистике между разными примерами. 🟠Улучшение визуального качества Instance Normalization особенно эффективна для задач генерации изображений, таких как стиль-перенос, где важно сохранить стиль и текстуру каждого отдельного изображения. 🟠Стабилизация и ускорение обучения Подобно другим методам нормализации, Instance Normalization помогает стабилизировать градиенты и ускорить процесс обучения, делая его более устойчивым. 🚩Как работает 🟠Вычисление среднего значения и стандартного отклонения для каждого канала Для каждого канала вычисляется среднее значение и стандартное отклонение. 🟠Нормализация активаций Значения активаций нормализуются, вычитая среднее значение и деля на стандартное отклонение. 🟠Скалирование и смещение Применяются обучаемые параметры скалирования и смещения для каждого канала. 🚩Пример использования в PyTorch
import torch
import torch.nn as nn

# Пример входного тензора (batch_size, num_channels, height, width)
x = torch.randn(8, 3, 64, 64)

# Инстанс-нормализация
inst_norm = nn.InstanceNorm2d(num_features=3, affine=True)

# Применение нормализации
x_normalized = inst_norm(x)

print(x_normalized.shape)
В TensorFlow
import tensorflow as tf

# Пример входного тензора (batch_size, height, width, num_channels)
x = tf.random.normal((8, 64, 64, 3))

# Инстанс-нормализация
inst_norm = tf.keras.layers.LayerNormalization(axis=[1, 2], center=True, scale=True)

# Применение нормализации
x_normalized = inst_norm(x)

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

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

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

🤔 Какую метрику следует выбрать, когда у бинарного классификатора разделение данных такое что 95% в одном классе, 5% в другом ? Когда у вас сильно несбалансированный набор данных с 95% примеров в одном классе и 5% в другом, стандартные метрики, такие как accuracy (точность), становятся неэффективными. Они могут давать высокие значения, даже если модель просто предсказывает всегда более частый класс. В таких случаях лучше использовать метрики, которые учитывают дисбаланс классов. 🟠Матрица ошибок Дает представление о количестве истинно положительных (TP), истинно отрицательных (TN), ложно положительных (FP) и ложно отрицательных (FN) предсказаний. Это основа для вычисления многих других метрик.
from sklearn.metrics import confusion_matrix

y_true = [0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
y_pred = [0, 0, 1, 0, 0, 0, 1, 1, 1, 1]

conf_matrix = confusion_matrix(y_true, y_pred)
print(conf_matrix)
🟠Precision, Recall и F1-Score Доля правильных предсказаний положительного класса среди всех предсказаний положительного класса.
\text{Precision} = \frac{TP}{TP + FP}
Доля правильных предсказаний положительного класса среди всех реальных положительных примеров.
\text{Recall} = \frac{TP}{TP + FN}
Гармоническое среднее Precision и Recall.
\text{F1-Score} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
from sklearn.metrics import precision_score, recall_score, f1_score

precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)

print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1-Score: {f1}")
🟠ROC-AUC Измеряет качество классификатора по совокупности всех возможных порогов классификации. Это хорошо работает с несбалансированными данными, так как учитывает соотношение истинно положительных и ложноположительных сработок.
from sklearn.metrics import roc_auc_score

y_true = [0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
y_scores = [0.1, 0.4, 0.35, 0.8, 0.65, 0.7, 0.85, 0.9, 0.95, 0.98]  # вероятности

roc_auc = roc_auc_score(y_true, y_scores)
print(f"ROC-AUC: {roc_auc}")
🟠Precision-Recall Curve и PR-AUC Более информативна для несбалансированных данных, так как она лучше показывает разницу в предсказаниях для меньшего класса. PR-AUC — это площадь под кривой Precision-Recall.
from sklearn.metrics import precision_recall_curve, auc

precision, recall, _ = precision_recall_curve(y_true, y_scores)
pr_auc = auc(recall, precision)
print(f"PR-AUC: {pr_auc}")
🟠Balanced Accuracy Это среднее значение чувствительности (Recall) для каждого класса, что делает ее более подходящей для несбалансированных данных.
from sklearn.metrics import balanced_accuracy_score

balanced_acc = balanced_accuracy_score(y_true, y_pred)
print(f"Balanced Accuracy: {balanced_acc}")
🟠Cohen's Kappa Учитывает вероятность случайных совпадений и дает более точную оценку производительности модели на несбалансированных данных.
from sklearn.metrics import cohen_kappa_score

kappa = cohen_kappa_score(y_true, y_pred)
print(f"Cohen's Kappa: {kappa}")
Ставь 👍 и забирай 📚 Базу знаний

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

REKONFA: что интересного вас ждёт 15 октября 15 октября встречаемся на REKONFA — большой конференции Яндекс Рекламы. На сцене: — Глеб Доброрадных — о рекламном рынке и эффективности в сложных условиях — Алексей Штоколов — о новых продуктах и технологиях — Лиза Смирнова — о 360°-форматах и новых точках контакта — Александр Пушной — о человеке и ИИ — Александр Умаров — о персональном подходе, который помогает влюблять клиентов в бренд — Яна Чурикова — об актуальных задачах предпринимателей — Татьяна Мужицкая — о целях и энергии — Антон Беляев — об индивидуальности и проектах, которые любят зрители Вне сцены — зона продуктов Яндекс Рекламы, три игры, викторина, зоны Яндекс Ярда и eLama и нетворкинг. 15 октября, Москва, ВТБ Арена и онлайн. Участие бесплатное. Зарегистрироваться #реклама 16+ ya.rekonfa.ru О рекламодателе

🤔 Как объяснить бизнесу метрику машинного обучения ? Объяснение метрик машинного обучения бизнесу требует ясного, простого и понятного языка, а также приведения примеров, которые соответствуют их повседневной деятельности. 🟠Понимание контекста Прежде чем объяснять метрику, важно понять контекст бизнеса и конкретные цели, которых они хотят достичь. Например, метрики для предсказания продаж будут отличаться от метрик для определения эффективности маркетинговой кампании. 🟠Использование аналогий и простых примеров Аналогии и простые примеры могут помочь в объяснении сложных концепций. 🟠Пояснение на основе бизнес-контекста Используйте примеры из реального бизнеса для иллюстрации метрик. 🚩Accuracy (Точность) Доля правильных предсказаний среди всех предсказаний. Представьте, что у нас есть модель для классификации писем как "спам" или "не спам". Если точность модели составляет 90%, это означает, что модель правильно классифицирует 90% писем. Однако, если у вас есть сильный дисбаланс классов (например, 99% писем не являются спамом), высокая точность может быть обманчивой. 🚩Precision (Точность) Доля правильно классифицированных положительных предсказаний из всех предсказанных положительных. В контексте идентификации клиентов, которые с большой вероятностью купят продукт, если у модели высокая точность, это означает, что большинство идентифицированных моделью клиентов действительно совершат покупку. 🚩Recall (Полнота) Доля правильно классифицированных положительных предсказаний из всех истинно положительных примеров. Для задачи обнаружения мошенничества, высокая полнота означает, что модель находит почти все случаи мошенничества, но возможно с большим количеством ложных тревог. 🚩F1 Score (F1-мера) Гармоническое среднее точности и полноты. F1-мера дает баланс между точностью и полнотой. В задаче классификации сообщений как "спам" или "не спам", если у модели хороший баланс между точностью (не классифицировать "не спам" как "спам") и полнотой (обнаружить как можно больше "спам" сообщений), то у модели будет высокий F1 Score. 🚩ROC-AUC (Receiver Operating Characteristic - Area Under Curve) Площадь под кривой ROC, которая показывает способность модели различать между положительными и отрицательными классами. Если у вас есть модель для предсказания оттока клиентов, высокий ROC-AUC означает, что модель хорошо различает между клиентами, которые останутся, и клиентами, которые уйдут. Ставь 👍 и забирай 📚 Базу знаний

🤔 Чему равно p-value для выброса? Это вероятность получить значение настолько же экстремальное, как наблюдаемое, при условии, что оно принадлежит общему распределению. Чем меньше p-value, тем выше вероятность, что точка — выброс. Значение зависит от метода (Grubbs, Dixon, Z-score и др.). Обычно, если p < 0.05, точка может считаться выбросом. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как при проверки гипотезы разбить все существующие магазины компании на две группы ? Для разделения магазинов компании на две группы в контексте проверки гипотезы, важно учитывать цели исследования и характеристики данных. 🟠Определение цели разделения Прежде всего, нужно чётко определить, зачем вам нужно разделить магазины на группы. Это может быть необходимо для тестирования новой бизнес-стратегии, оценки эффекта рекламной кампании, изменения ассортимента товаров и т.д. 🟠Выбор метода разделения В зависимости от цели, вы можете выбрать один из следующих методов разделения: 🚩Случайное разделение Для обеспечения статистической надежности можно использовать случайное разделение магазинов на две группы. Это поможет убедиться, что любые различия между группами после проведения теста можно будет приписать изменениям в бизнес-стратегии, а не предварительным различиям между магазинами.
import random

# Предположим, у нас есть список всех магазинов
stores = ["Store_1", "Store_2", "Store_3", ..., "Store_N"]

# Перемешиваем список
random.shuffle(stores)

# Делим список пополам
mid_index = len(stores) // 2
group_A = stores[:mid_index]
group_B = stores[mid_index:]
🚩Стратифицированное разделение Если магазины различаются по важным характеристикам (например, размер магазина, местоположение, объём продаж), можно использовать стратифицированное разделение. Это позволит убедиться, что каждая группа будет представлять весь спектр магазинов.
import pandas as pd
from sklearn.model_selection import train_test_split

# Допустим, у нас есть DataFrame с данными о магазинах
data = pd.DataFrame({
    'store_id': stores,
    'sales_volume': [100, 200, 150, ..., 120],
    'location': ['urban', 'rural', 'suburban', ..., 'urban']
})

# Разделяем данные на две группы с учетом местоположения
group_A, group_B = train_test_split(data, test_size=0.5, stratify=data['location'])
🚩Разделение по критериям Можно также разделить магазины на основе специфических бизнес-критериев, например, по объему продаж или демографическим особенностям районов, где они расположены. 🟠Проверка равенства групп После разделения важно проверить, что группы сопоставимы по ключевым характеристикам, чтобы можно было корректно интерпретировать результаты эксперимента. Это можно сделать, сравнив средние значения или медианы важных переменных. 🟠Проведение эксперимента После разделения на группы проводится эксперимент или внедрение изменений в одной из групп (обычно контрольной группе оставляют стандартные условия работы), а затем анализируются результаты для выявления статистически значимых различий. Ставь 👍 и забирай 📚 Базу знаний