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

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

Открыть в Telegram
4 909
Подписчики
-124 часа
-77 дней
-730 дней
Архив постов
🤔 Если говорить про бизнес, что лучше выбрать линейную модель или дерево? Выбор между линейной моделью и деревом решений зависит от нескольких факторов: 🟠Линейная модель - Данные имеют линейные зависимости между признаками и целевой переменной. - Модель должна быть интерпретируемой (например, в финансовой сфере, где важна прозрачность решений). - Требуется быстрая работа, особенно на больших данных. - Данные не слишком сложные, без сильных взаимодействий между признаками. 🟠Дерево решений - Данные имеют сложные, нелинейные зависимости. - Важна автоматическая обработка пропущенных значений и отсутствие необходимости масштабировать данные. - Нужно учитывать взаимодействия между признаками (например, если один признак влияет на результат только при определённом значении другого признака). - Интерпретация менее важна, но важна высокая точность. 🚩Примеры 🟠Линейная модель: прогноз продаж по цене Допустим, у нас есть зависимость: чем выше цена, тем ниже продажи. Можно использовать линейную регрессию:
from sklearn.linear_model import LinearRegression

X = [[10], [20], [30], [40]]  # Цена товара
y = [1000, 800, 600, 400]     # Продажи

model = LinearRegression()
model.fit(X, y)

print(model.predict([[25]]))  # Прогнозируем продажи при цене 25
🟠Дерево решений: кредитный скоринг Допустим, банк решает, выдавать ли кредит. У клиента есть признаки: доход, возраст, наличие задолженности. Взаимодействия сложные, например: - Если у человека низкий доход и есть задолженность, то отказ. - Если высокий доход, но был просроченный кредит, нужно учитывать другие факторы.
from sklearn.tree import DecisionTreeClassifier

X = [[25, 30000, 0], [40, 60000, 1], [35, 80000, 0], [50, 50000, 1]]  # Возраст, доход, задолженность
y = [0, 0, 1, 1]  # 0 - отказ, 1 - одобрение

model = DecisionTreeClassifier()
model.fit(X, y)

print(model.predict([[30, 70000, 0]]))  # Прогноз для нового клиента
Ставь 👍 и забирай 📚 Базу знаний

Срочно требуются дизайнеры в FIGMA. Обучим с нуля. Онлайн-программа с наставником и чатом. Внимание! 80% практики. ✅По результату обучения у вас будет портфолио из нескольких работ. ✅Сертификат о прохождении курса. ✅Возможность пройти полное обучение и получить карьерное сопровождение! Учитесь дизайну у профессионалов в Yudaev Shool. Переходи по кнопки: "Подробнее" и начинай свое обучение. Доступ 0 руб. Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе

🤔 В чем отличия между loc и iloc? В pandas `loc` используется для доступа по метке (label) индекса, а `iloc` — для доступа по числовому индексу, независимо от того, как промаркированы индексы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Москвич М3 в кредит от 0,01%. Не упусти последний шанс! Мощность 136 л.с. Хромированные вставки. Подходит для АИ-92. Предложе
Москвич М3 в кредит от 0,01%. Не упусти последний шанс! Мощность 136 л.с. Хромированные вставки. Подходит для АИ-92. Предложение ограничено Узнать больше Изучите все условия кредита (займа) на сайте в соответствующем разделе. Оценивайте свои финансовые возможности и риски. Финансовые услуги оказывает: АО "Авто Финанс Банк", ПАО "Совкомбанк". #реклама moskvich.ru О рекламодателе

🤔 Как работает градиентный спуск? Это фундаментальный алгоритм оптимизации, используемый для минимизации функции потерь в машинном обучении и статистической оптимизации. Этот метод основан на идее, что если вы хотите найти минимум функции, вы должны двигаться в направлении, противоположном градиенту функции в данной точке. 🚩Основные шаги алгоритма 1⃣Инициализация Начните с случайного значения параметра(ов) \( \theta \) (например, веса в линейной регрессии). 2⃣Вычисление градиента Определите градиент функции потерь в текущей точке \( \theta \). Градиент показывает направление наискорейшего увеличения функции, поэтому для минимизации мы движемся в противоположном направлении. 3⃣Обновление параметра Обновите параметр, двигаясь в направлении, противоположном градиенту: \theta := \theta - \eta \nabla_{\theta} J(\theta) где \( \eta \) — это скорость обучения, которая определяет размер шага. 4⃣Повторение Повторяйте шаги 2 и 3, пока не будет достигнут критерий остановки (например, когда изменение \( \theta \) становится незначительным или количество итераций превышает предел). 🚩Важные аспекты 🟠Скорость обучения \( \eta \) Если скорость обучения слишком велика, может произойти "перепрыгивание" минимума, если слишком мала — процесс обучения будет очень медленным. 🟠Выбор начальной точки Начальная точка может существенно повлиять на то, достигнет ли процесс локального минимума, глобального минимума или застрянет в плато. 🟠Нормализация данных При работе с многомерными данными рекомендуется нормализовать данные, чтобы обеспечить равномерное масштабирование признаков. Это ускоряет сходимость градиентного спуска.
import numpy as np

def gradient_descent(x, y, lr=0.01, epochs=1000):
    m, b = 0, 0  # начальные параметры
    n = len(y)   # количество данных
    for _ in range(epochs):
        f = y - (m*x + b)  # функция потерь
        # Градиенты по m и b
        dm = -2 * np.sum(x * f) / n
        db = -2 * np.sum(f) / n
        # Обновление параметров
        m -= lr

 * dm
        b -= lr * db
    return m, b

# Пример данных
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

m, b = gradient_descent(x, y, lr=0.01, epochs=1000)
print(f"Наклон m: {m}, Пересечение b: {b}")
Ставь 👍 и забирай 📚 Базу знаний

Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес. Преимущества аренды: - Выделенные ресурсы без переплаты; - KVM-виртуализация; - Быстрые NVMe SSD; - Бесплатная защита от DDoS; - Управление через панель, API и Terraform; - Техподдержка 24/7. Запустите сервер за несколько минут! Попробовать #реклама 16+ selectel.ru О рекламодателе

🤔 За что мэп штрафует больше: за перепрогноз или недопрогноз? MAP (Mean Average Precision) больше штрафует за недопрогноз (упущенные релевантные элементы), так как метрика ориентирована на точность в верхней части ранжированного списка. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как можно классифицировать бинарные картинки фигур? Может быть выполнена с использованием различных методов машинного обучения и глубокого обучения. Бинарные изображения фигур – это изображения, на которых каждый пиксель имеет либо черное, либо белое значение, что упрощает задачи предобработки и классификации. 🟠Предобработка данных Первый шаг включает подготовку данных для обучения модели. 🟠Нормализация и масштабирование Нормализация: Преобразование значений пикселей в диапазон [0, 1]. Масштабирование: Преобразование изображений к единому размеру для обеспечения согласованности данных. 🟠Аугментация данных Ротация, масштабирование, сдвиг: Создание дополнительных данных для улучшения обобщающей способности модели. Пример кода на Python (используя OpenCV и NumPy):
import cv2
import numpy as np

def preprocess_image(image):
   # Масштабирование изображения до размера 28x28
   image_resized = cv2.resize(image, (28, 28))
   # Нормализация значений пикселей
   image_normalized = image_resized / 255.0
   return image_normalized

def augment_image(image):
   # Ротация изображения на случайный угол
   angle = np.random.randint(-30, 30)
   M = cv2.getRotationMatrix2D((14, 14), angle, 1.0)
   augmented_image = cv2.warpAffine(image, M, (28, 28))
   return augmented_image  
🟠Оценка и улучшение модели Метрики оценки: Точность (accuracy), точность (precision), полнота (recall), F1-score. Кросс-валидация: Для оценки обобщающей способности модели. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как делается прунинг деревьев? 1. Pre-pruning: остановка роста дерева по заранее заданным критериям (глубина, минимальный размер листа). 2. Post-pruning: удаление "слабых" ветвей после построения дерева для улучшения обобщения. 3. Метрики, такие как ошибка на валидационной выборке, помогают оценить, какие ветви обрезать. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает dropout? Dropout — это техника регуляризации, используемая в нейронных сетях для предотвращения переобучения. Она заключается в случайном "отключении" (или обнулении) определенного процента нейронов во время обучения, что помогает модели обобщать данные и не подстраиваться под шум или специфические особенности обучающего набора данных. 🚩Механизм работы 🟠Во время обучения: На каждом шаге обучения случайным образом выбирается подмножество нейронов, которые будут отключены. Отключенные нейроны не участвуют в прямом и обратном проходе на текущем этапе. Этот процесс повторяется на каждом этапе обучения, причем каждое отключение производится независимо. 🟠Во время тестирования: На этапе предсказания (тестирования) dropout не применяется. Для компенсации эффекта, вызванного отключением нейронов на этапе обучения, все веса сети масштабируются в соответствии с вероятностью dropout
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# Загрузка данных
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape((X_train.shape[0], 28 * 28)).astype('float32') / 255
X_test = X_test.reshape((X_test.shape[0], 28 * 28)).astype('float32') / 255

y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# Создание модели
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(Dropout(0.5))  # Dropout с вероятностью 0.5
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

# Компиляция модели
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# Обучение модели
model.fit(X_train, y_train, epochs=20, batch_size=128, validation_data=(X_test, y_test))

# Оценка модели
score = model.evaluate(X_test, y_test)
print(f'Точность на тестовых данных: {score[1] * 100:.2f}%')
🚩Зачем нужен 🟠Предотвращение переобучения: Dropout помогает нейронной сети не запоминать обучающие данные, а обучаться выявлять общие закономерности. 🟠Снижение взаимозависимости нейронов: Отключение случайных нейронов заставляет остальные нейроны адаптироваться и работать независимо, что улучшает устойчивость модели. 🟠Улучшение обобщающей способности: Dropout повышает способность модели хорошо работать на новых, невидимых данных. Ставь 👍 и забирай 📚 Базу знаний

Хочешь карьеру в ИТ? Начни с программы «Мини-СЕО» ⚡Попади в команду топ-менеджера Т-Банка и работай над стратегическими проек
Хочешь карьеру в ИТ? Начни с программы «Мини-СЕО» ⚡Попади в команду топ-менеджера Т-Банка и работай над стратегическими проектами компании. В зависимости от трека ты сможешь: — разрабатывать эффективные методологии для оценки влияния продукта на экосистему с Владимиром Любимовым; — исследовать экосистемы и находить наиболее перспективные точки роста с Максимом Безруковым; — развивать сегмент автолюбителей и заниматься региональной экспансией Т-Банка с Жорой Сукасяном; — вести стратегический план развития 3P, развивать AI-продукты и искать, где AI может упростить работу команды, c Денисом Коротовым; — участвовать в создании B2B-маркетплейса c Владимиром Абазовым. Программа подойдет студентам и джуниор-специалистам, которые сильны в математике, аналитике и программировании. Успей подать заявку до 25 сентября! Зарегистрироваться #реклама 16+ t-miniceo.ru О рекламодателе

🤔 Расскажи о структуре словаря в Python? Это встроенный тип данных, который представляет собой неупорядоченную коллекцию пар "ключ-значение". Он позволяет быстро извлекать значения по ключу, обеспечивая эффективный доступ к данным. 🚩Характеристики 🟠Ключи уникальны В словаре каждый ключ должен быть уникальным. Если добавить пару с существующим ключом, значение этого ключа будет перезаписано. 🟠Ключи неизменяемы Ключи должны быть хэшируемыми, то есть они должны иметь неизменяемый тип данных (например, строки, числа, кортежи). 🟠Значения могут быть любыми: Значения в словаре могут быть любого типа данных и не обязательно уникальны. 1⃣Создание словаря
# Пустой словарь
my_dict = {}

# Словарь с начальными значениями
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
2⃣Добавление и изменение элементов
# Добавление нового ключа-значения
my_dict['email'] = 'alice@example.com'

# Изменение существующего значения
my_dict['age'] = 26
3⃣Доступ к значениям
# Доступ к значению по ключу
name = my_dict['name']  # 'Alice'

# Метод get() для доступа с предоставлением значения по умолчанию
age = my_dict.get('age', 0)  # 26
phone = my_dict.get('phone', 'Not Provided')  # 'Not Provided'
4⃣Удаление элементов
# Удаление элемента по ключу
del my_dict['email']

# Метод pop() возвращает значение и удаляет элемент
city = my_dict.pop('city', 'Not Found')  # 'New York'
5⃣Перебор элементов словаря
# Перебор ключей
for key in my_dict:
    print(key)

# Перебор значений
for value in my_dict.values():
    print(value)

# Перебор пар ключ-значение
for key, value in my_dict.items():
    print(f'{key}: {value}')
🚩Основные методы `keys()` Возвращает все ключи словаря. `values()` Возвращает все значения словаря. `items()` Возвращает все пары "ключ-значение". `update(other_dict)` Обновляет словарь, добавляя пары "ключ-значение" из другого словаря. `clear()` Удаляет все элементы из словаря. 🚩Пример использования
# Создание словаря с информацией о студенте
student = {
    'name': 'John',
    'age': 22,
    'courses': ['Math', 'CompSci']
}

# Добавление нового ключа-значения
student['phone'] = '555-5555'

# Изменение значения по ключу
student['name'] = 'John Doe'

# Доступ к значению по ключу
print(student['name'])  # 'John Doe'

# Удаление элемента
del student['age']

# Перебор элементов словаря
for key, value in student.items():
    print(f'{key}: {value}')
Ставь 👍 и забирай 📚 Базу знаний

Скидки до 50% на посудомоечные машины Kuppersberg Посудомоечные машины Kuppersberg со скидками на Яндекс Маркете! Узнать боль
Скидки до 50% на посудомоечные машины Kuppersberg Посудомоечные машины Kuppersberg со скидками на Яндекс Маркете! Узнать больше #реклама market.yandex.ru О рекламодателе

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

Ищем менеджеров нейросетей, можно без опыта Опыт не нужен. Только телефон. Занятость — 3-6 часов в день. Нужно выполнять зада
Ищем менеджеров нейросетей, можно без опыта Опыт не нужен. Только телефон. Занятость — 3-6 часов в день. Нужно выполнять задачи с помощью нейросетей. Все это вы делаете из дома. Всему обучим на бесплатном курсе и после поможем со стартом. Что вас ждет за 3 дня: ✅ Уроки с практикой по 30 минут ✅ Домашние задания с проверкой и оплатой бонусами ✅ Выплата за каждую выполненную работу 🎓 Все, кто пройдет обучение, получат сертификат от школы с образовательной лицензией. Набор закрывается, как только группа заполнится. Чтобы занять место нажмите "Зарегистрироваться". Зарегистрироваться #реклама 16+ course.neurogansta.ru О рекламодателе

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

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

🤔 Какие известны рекомендательные модели? Content-Based Filtering, Collaborative Filtering, и Hybrid модели. Выбор зависит от задачи и данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает where? Ключевое слово WHERE в SQL используется для фильтрации записей в запросах. Оно позволяет ограничивать результаты запроса только теми строками, которые удовлетворяют определенным условиям. Ключевое слово WHERE может применяться в операторах SELECT, UPDATE, DELETE, а также в других контекстах. 🚩Принципы 🟠Фильтрация строк WHERE задает условие, которое проверяется для каждой строки в таблице. Только те строки, которые удовлетворяют условию, включаются в результирующий набор данных. 🟠Операторы и выражения Условия в WHERE могут содержать различные операторы, такие как сравнения (=, <>, >, <, >=, <=), логические операторы (AND, OR, NOT), а также функции и другие выражения. 🟠Работа с NULL Для проверки на NULL используется оператор IS NULL или IS NOT NULL. 🚩Примеры использования `WHERE` SELECT с условием
SELECT * FROM employees
WHERE salary > 50000;
UPDATE с условием
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Sales';
DELETE с условием
DELETE FROM employees
WHERE hire_date < '2020-01-01';
Использование AND и OR
SELECT * FROM employees
WHERE department = 'IT' AND salary > 60000;
Этот запрос выбирает всех сотрудников из отдела IT с зарплатой более 60,000.
SELECT * FROM employees
WHERE department = 'IT' OR department = 'HR';
Проверка на NULL
SELECT * FROM employees
WHERE manager_id IS NULL;
🚩Пример использования в Python с библиотекой sqlite3
import sqlite3

# Создание соединения с базой данных SQLite
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Создание таблицы
cursor.execute('''
CREATE TABLE IF NOT EXISTS employees (
    id INTEGER PRIMARY KEY,
    name TEXT,
    department TEXT,
    salary REAL,
    hire_date TEXT
)
''')

# Вставка данных
cursor.execute('''
INSERT INTO employees (name, department, salary, hire_date)
VALUES ('John Doe', 'IT', 75000, '2021-05-01')
''')

cursor.execute('''
INSERT INTO employees (name, department, salary, hire_date)
VALUES ('Jane Smith', 'HR', 50000, '2019-03-15')
''')

conn.commit()

# Запрос данных с использованием WHERE
cursor.execute('''
SELECT * FROM employees WHERE salary > 60000
''')

# Получение и вывод результатов
rows = cursor.fetchall()
for row in rows:
    print(row)

# Закрытие соединения
conn.close()
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое mode? Это статистическая мера центральной тенденции, представляющая собой значение, которое встречается в наборе данных чаще всего. В отличие от среднего значения (mean) и медианы (median), мода не обязательно должна быть уникальной: в одном наборе данных может быть несколько мод или не быть ни одной (если все значения встречаются одинаково часто). 🚩Характеристики 🟠Частота появления Мода определяется как значение или значения, которые имеют наибольшую частоту появления в наборе данных. 🟠Устойчивость к выбросам Поскольку мода основана на частоте, она не подвержена влиянию выбросов или экстремальных значений. 🟠Применимость Мода особенно полезна для категориальных данных, где среднее значение не имеет смысла (например, самый популярный цвет, наиболее частое место назначения). 🚩Примеры 🟠Набор данных с одной модой Набор данных: [1, 2, 2, 3, 4] 2 (появляется чаще всего) 🟠Набор данных с двумя модами (бимодальный) Набор данных: [1, 2, 2, 3, 3, 4] 2 и 3 (оба значения появляются одинаково часто и чаще остальных) 🟠Набор данных без моды Набор данных: [1, 2, 3, 4] отсутствует (все значения появляются с одинаковой частотой) 🚩Применение моды 🟠Бизнес и маркетинг Определение самых популярных продуктов, услуг или предпочтений клиентов. 🟠Медицина Анализ наиболее частых симптомов или заболеваний в определённой группе пациентов. 🟠Социология Выявление наиболее распространенных ответов на опросы или анкеты. Моды на Python
from scipy import stats

# Пример с одной модой
data_single_mode = [1, 2, 2, 3, 4]
mode_single = stats.mode(data_single_mode)
print(f"Мода для набора с одной модой: {mode_single.mode[0]} (появляется {mode_single.count[0]} раз)")

# Пример с двумя модами
data_bimodal = [1, 2, 2, 3, 3, 4]
mode_bimodal = stats.mode(data_bimodal)
print(f"Моды для набора с двумя модами: {mode_bimodal.mode} (каждая появляется по {mode_bimodal.count[0]} раз)")
Для категориальных данных на Python
from collections import Counter

# Категориальные данные
data_categorical = ['red', 'blue', 'blue', 'green', 'red', 'red']
counter = Counter(data_categorical)
mode_categorical = counter.most_common(1)[0]  # most_common(1) возвращает список с одной парой (элемент, частота)
print(f"Мода для категориальных данных: {mode_categorical[0]} (появляется {mode_categorical[1]} раз)")
Ставь 👍 и забирай 📚 Базу знаний