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

channel icon
Разбираем вопросы с собеседований на Data Scientist.

Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 2300,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
-2
3 690
подписчиков
+5
663
охват 1 публикации
0
~2
постов / день
+0,1%
18,0%
ERR % ?

Статистика

Последние публикации

Data Science | Вопросы собесов
21 декабря 2024 г. 19:10
🤔🤔 Расскажи о Gradient-boosted trees

Gradient-boosted trees — это ансамблевый метод машинного обучения, который строит серию деревьев решений, каждое из которых исправляет ошибки предыдущих. Процесс обучения происходит путем последовательного добавления деревьев, каждое из которых минимизирует ошибку путем градиентного спуска, усиливая правильные прогнозы. Gradient boosting широко используется для задач регрессии и классификации, обеспечивая высокую точность и гибкость в работе с разными типами данных.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
21 декабря 2024 г. 12:10
🤔 Как при проверки гипотезы разбить все существующие магазины компании на две группы ?Как при проверки гипотезы разбить все существующие магазины компании на две группы ?

Для разделения магазинов компании на две группы в контексте проверки гипотезы, важно учитывать цели исследования и характеристики данных.

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

🚩Случайное разделение

Для обеспечения статистической надежности можно использовать случайное разделение магазинов на две группы. Это поможет убедиться, что любые различия между группами после проведения теста можно будет приписать изменениям в бизнес-стратегии, а не предварительным различиям между магазинами.
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'])


🚩Разделение по критериям

Можно также разделить магазины на основе специфических бизнес-критериев, например, по объему продаж или демографическим особенностям районов, где они расположены.

🟠🟠Проверка равенства групп
После разделения важно проверить, что группы сопоставимы по ключевым характеристикам, чтобы можно было корректно интерпретировать результаты эксперимента. Это можно сделать, сравнив средние значения или медианы важных переменных.
🟠Проведение эксперимента
После разделения на группы проводится эксперимент или внедрение изменений в одной из групп (обычно контрольной группе оставляют стандартные условия работы), а затем анализируются результаты для выявления статистически значимых различий.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
20 декабря 2024 г. 12:10
🤔 Каким образом память в питоне ощищается и выделяется?Каким образом память в питоне ощищается и выделяется?

В Python память выделяется и очищается с использованием механизмов управления памятью, таких как счетчик ссылок и сборка мусора (garbage collection).

🚩Выделение памяти

🟠Куча (Heap)
Python использует кучу для динамического выделения памяти объектам. Куча управляется менеджером памяти Python.

🟠Менеджер памяти
Менеджер памяти Python выделяет память из кучи и распределяет ее для объектов. Он отслеживает свободные и занятые блоки памяти.

🟠Создание объектов
Когда создается новый объект, менеджер памяти выделяет необходимый блок памяти из кучи. Каждый объект имеет заголовок, который содержит метаинформацию, такую как тип объекта и счетчик ссылок, и область данных, где хранятся значения.

🚩Очистка памяти

🟠Счетчик ссылок (Reference Counting)
Каждый объект в Python имеет счетчик ссылок, который отслеживает количество ссылок на этот объект. Счетчик ссылок увеличивается, когда создается новая ссылка на объект, и уменьшается, когда ссылка удаляется. Когда счетчик ссылок объекта становится равным нулю, объект считается неиспользуемым и подлежит удалению.

🟠Сборка мусора (Garbage Collection)
Python использует сборщик мусора для управления памятью и удаления неиспользуемых объектов. Основной алгоритм сборки мусора в Python основан на обнаружении циклических ссылок, которые невозможно удалить с помощью простого счетчика ссылок.

🟠Обнаружение циклов
Сборщик мусора периодически просматривает объекты и их ссылки, чтобы найти циклы (группы объектов, ссылающихся друг на друга). Объекты, которые не имеют внешних ссылок (счетчик ссылок равен нулю) и находятся в цикле, считаются неиспользуемыми и удаляются.

import sys
import gc

# Создание объекта и проверка счетчика ссылок
a = [1, 2, 3]
print(sys.getrefcount(a)) # Обычно возвращает 2, так как есть ссылка a и временная ссылка для вызова функции

# Увеличение счетчика ссылок
b = a
print(sys.getrefcount(a)) # Теперь возвращает 3, так как есть ссылки a, b и временная ссылка для вызова функции

# Уменьшение счетчика ссылок
del b
print(sys.getrefcount(a)) # Теперь возвращает 2, так как ссылка b удалена

# Принудительный запуск сборщика мусора
gc.collect()


🚩Память и большие данные

При работе с большими объемами данных полезно использовать более эффективные структуры данных и библиотеки, такие как numpy, которые позволяют более эффективно управлять памятью.
import numpy as np

# Создание большого массива с использованием numpy
large_array = np.zeros((1000, 1000))


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
19 декабря 2024 г. 20:00
Привет👋
Я Богдан - помогаю ребятам вкатываться в машинное обучение и анализ данных.
Вот немного фактов о моей деятельности:
- Более 20 человек получили консультации
- Средняя зарплата после обучения 260 тыс. руб.
- Средний срок обучения 3-4 месяца

Подробнее о моих услугах можно почитать тут
Мой телеграмм канал, где рассказываю про найм - Раскатываем ML кабины

Полезные статьи, доступные для вас уже сейчас:
- Алгоритмическая секция | Live-coding - как проходить? 🖥
- Где искать работу ML инженеру? 🎹
- Про изменение найма в рекомендательных системах 💼

Приходите на бесплатную консультацию, буду рад помочь!
Можно писать сюда 👽
Data Science | Вопросы собесов
19 декабря 2024 г. 19:10
🤔🤔 Как систематическая ошибка и дисперсия связаны между собой?

Систематическая ошибка (bias) и дисперсия (variance) образуют компромисс: уменьшение одной часто увеличивает другую. Высокая bias связана с недообучением, а высокая variance — с переобучением. Баланс между ними достигается через выбор подходящей модели, настройки гиперпараметров и использования регуляризации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
19 декабря 2024 г. 10:00
IT здорового человека.

Илья Мирин, инженер, CEO, CTO, DS и цифровой художник с 19 летним опытом работы в индустрии IT помогает *прокачать soft skills*

В том числе ты узнаешь:
- Как получить *job offer выше рынка?
- Как рассказать про свой опыт работы, чтобы *люди на собесе не уснули?
- Почему продуктовые *задачи всегда приносят в последний момент?
- Как быть, если *коллеги тебя не слушают?
- Как работая на удалёнке *быть в курсе всех важных событий и быть в "тусовке"
- Есть ли благодетели айтишника кроме *"удачи", "трудолюбия" и "нужных контактов"*, чтобы целенаправленно двигаться к цели

Илья знает про жизнь внутри IT все, он сам не сошел от этого с ума, и тебе поможет.

Подписывайся на https://t.me/healthyit
Data Science | Вопросы собесов
18 декабря 2024 г. 19:10
🤔🤔 Как обучается модель?

Модель обучается путём минимизации функции потери, которая определяет разницу между предсказанными и реальными значениями. Это достигается через оптимизационные алгоритмы, такие как градиентный спуск, которые корректируют параметры модели, чтобы уменьшить ошибку. Процесс повторяется до достижения оптимального значения функции потери или выполнения условий остановки.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
18 декабря 2024 г. 10:00
А вы знали что?...

🕵️В Windows есть папка, которая собирает на вас компромат!

Посмотрите видео выше — насколько легко узнать всю информацию о вас

Простых способов узнать о вас практически всё — сотни, и если вы хотите соблюдать хотя бы минимум сетевой гигиены — подпишитесь на IT ВЕДОМСТВО

Они рассказывает о признаках майнеров, как удалить трояны и порно-баннеры за 5 минут

Помимо всего этого, сейчас владелец канала проводит розыгрыш умной колонки, для всех новоприбывших подписчиков

💻 Подписываемся на IT ВЕДОМСТВОIT ВЕДОМСТВО — выигрываем призы и соблюдаем цифровую гигиену
Data Science | Вопросы собесов
17 декабря 2024 г. 19:10
🤔🤔 Как обучается модель?

Модель обучается путём минимизации функции потери, которая определяет разницу между предсказанными и реальными значениями. Это достигается через оптимизационные алгоритмы, такие как градиентный спуск, которые корректируют параметры модели, чтобы уменьшить ошибку. Процесс повторяется до достижения оптимального значения функции потери или выполнения условий остановки.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
17 декабря 2024 г. 12:10
🤔 Когда ROC AUC будет плохо определять качество классификатора ?Когда ROC AUC будет плохо определять качество классификатора ?

ROC AUC (Receiver Operating Characteristic - Area Under Curve) является популярной метрикой для оценки качества бинарного классификатора. Однако, в некоторых ситуациях использование ROC AUC может быть неэффективным или вводящим в заблуждение.

🟠Сильно несбалансированные данные
При сильном дисбалансе классов, где один класс существенно преобладает над другим, ROC AUC может давать завышенные оценки качества модели. Это происходит потому, что ROC AUC учитывает как истинно положительные, так и ложно положительные сработки, но при этом не всегда отражает способность модели предсказывать редкий класс.

🟠Различная стоимость ошибок
Если ошибки различных типов (ложно положительные и ложно отрицательные) имеют разную стоимость, ROC AUC может неадекватно отражать качество модели. В таких случаях более подходящей метрикой может быть Precision-Recall Curve или специфическая метрика, учитывающая стоимость ошибок.

🟠Малое количество положительных примеров
При малом количестве положительных примеров (класса 1), ROC AUC может стать менее надежной, так как небольшое изменение в предсказаниях может существенно повлиять на значение метрики. В таких случаях Precision-Recall Curve и PR AUC могут предоставить более надежную оценку.

🟠Нестабильность при малых выборках
Может быть нестабильной и сильно зависеть от конкретного набора данных, особенно при небольших выборках. Это может привести к значительным колебаниям в оценках качества модели.
import numpy as np
import pandas as pd
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, precision_recall_curve, auc

# Создание несбалансированного набора данных
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10,
n_clusters_per_class=1, weights=[0.99], flip_y=0, 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_scores = model.predict_proba(X_test)[:, 1]

# Вычисление ROC AUC
roc_auc = roc_auc_score(y_test, y_scores)

# Вычисление Precision-Recall AUC
precision, recall, _ = precision_recall_curve(y_test, y_scores)
pr_auc = auc(recall, precision)

print(f"ROC AUC: {roc_auc}")
print(f"Precision-Recall AUC: {pr_auc}")


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
16 декабря 2024 г. 19:10
🤔🤔 В чем различия между методами apply и applymap?

apply применяется к строкам или столбцам DataFrame, а также ко всему объекту Series. applymap используется только для элементарных операций над всеми элементами DataFrame. Оба метода применяют пользовательские функции, но на разных уровнях.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
16 декабря 2024 г. 12:10
🤔 Что такое регуляризация ?Что такое регуляризация ?

Это техника в машинном обучении и статистике, используемая для предотвращения переобучения модели путем добавления дополнительной информации или ограничений в процесс обучения. Цель регуляризации — улучшить обобщающую способность модели, то есть её способность хорошо работать на новых, невиданных данных.

🟠L1-регуляризация (Lasso)
Добавляет штраф за абсолютное значение коэффициентов к функции потерь. Это приводит к обнулению некоторых коэффициентов, что может привести к разреженным моделям.
from sklearn.linear_model import Lasso

model = Lasso(alpha=0.1)
model.fit(X_train, y_train)


🟠L2-регуляризация (Ridge)
Добавляет штраф за квадрат коэффициентов к функции потерь. Это приводит к уменьшению значений коэффициентов, но редко приводит к их обнулению.
from sklearn.linear_model import Ridge

model = Ridge(alpha=1.0)
model.fit(X_train, y_train)


🟠Elastic Net
Комбинирует L1 и L2 регуляризацию, что позволяет использовать преимущества обеих техник.
from sklearn.linear_model import ElasticNet

model = ElasticNet(alpha=1.0, l1_ratio=0.5)
model.fit(X_train, y_train)


🟠Dropout
Это техника регуляризации, специфичная для нейронных сетей, которая заключается в случайном отключении нейронов во время обучения. Это предотвращает переобучение и улучшает обобщающую способность модели.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout

model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(input_dim,)))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))


🟠Ранняя остановка (Early Stopping)
Контролирует производительность модели на валидационном наборе данных и останавливает обучение, когда производительность перестает улучшаться. Это помогает избежать переобучения.
from tensorflow.keras.callbacks import EarlyStopping

early_stopping = EarlyStopping(patience=5, restore_best_weights=True)
model.fit(X_train, y_train, epochs=100, validation_split=0.2, callbacks=[early_stopping])


🟠Data Augmentation
Увеличивает размер обучающего набора данных путем создания модифицированных версий существующих данных. Это помогает модели стать более устойчивой к шуму и переобучению.
from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)

datagen.fit(X_train)


🟠Norm-based Regularization (нормализация весов)
Это включает добавление штрафов на нормы весов в функции потерь, что предотвращает слишком большие значения весов и улучшает обобщающую способность модели.
from tensorflow.keras.regularizers import l2

model.add(Dense(64, activation='relu', kernel_regularizer=l2(0.01), input_shape=(input_dim,)))


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
15 декабря 2024 г. 19:10
🤔🤔 Как систематическая ошибка и дисперсия связаны между собой?

Систематическая ошибка (bias) и дисперсия (variance) образуют компромисс: уменьшение одной часто увеличивает другую. Высокая bias связана с недообучением, а высокая variance — с переобучением. Баланс между ними достигается через выбор подходящей модели, настройки гиперпараметров и использования регуляризации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
15 декабря 2024 г. 12:10
🤔 Чем еще можно тьюнить, кроме batch norm ?Чем еще можно тьюнить, кроме batch norm ?

Тьюнинг нейронных сетей включает в себя множество аспектов, кроме использования Batch Normalization. В зависимости от конкретной задачи и модели, можно применять различные техники и методы для улучшения производительности, ускорения сходимости и уменьшения переобучения.

🟠Оптимизаторы
Разные оптимизаторы могут существенно влиять на скорость и качество обучения моделей.
SGD (Stochastic Gradient Descent): Основной метод стохастического градиентного спуска.
Adam (Adaptive Moment Estimation): Популярный оптимизатор, который адаптивно изменяет скорости обучения для каждого параметра.
RMSprop: Оптимизатор, который использует скользящее среднее квадратов градиентов для адаптации скорости обучения.
Adagrad: Оптимизатор, который адаптирует скорость обучения на основе частоты параметров.
from tensorflow.keras.optimizers import Adam

model.compile(optimizer=Adam(learning_rate=0.001), loss='mse')


🟠Архитектура модели
Выбор архитектуры модели может значительно влиять на ее производительность.
Число слоев и нейронов: Увеличение количества слоев и нейронов может повысить способность модели к обучению сложных зависимостей, но также может привести к переобучению. Тип слоев: Использование различных типов слоев, таких как сверточные слои (Conv), рекуррентные слои (RNN, LSTM, GRU), слои нормализации (BatchNorm, LayerNorm) и слои Dropout, может улучшить производительность модели.

🟠Функции активации
Выбор функций активации может существенно повлиять на способность модели обучаться и аппроксимировать сложные функции. ReLU (Rectified Linear Unit): Широко используемая функция активации. Leaky ReLU: Вариант ReLU, который решает проблему "мертвых" нейронов Sigmoid: Используется в выходных слоях для бинарной классификации. Tanh: Используется в скрытых слоях.
from tensorflow.keras.layers import Dense, LeakyReLU

model.add(Dense(64))
model.add(LeakyReLU())


🟠Регуляризация
Помогает избежать переобучения и улучшает обобщающую способность модели. Dropout: Случайное отключение нейронов во время обучения для предотвращения переобучения. L1/L2 регуляризация: Добавление штрафа за большие веса к функции потерь. Data Augmentation: Увеличение объема данных за счет применения различных преобразований, таких как повороты, сдвиги и изменения яркости.
from tensorflow.keras.layers import Dropout
from tensorflow.keras.regularizers import l2

model.add(Dense(64, activation='relu', kernel_regularizer=l2(0.01)))
model.add(Dropout(0.5))


🟠Скорость обучения и стратегии обучения
Подбор правильной скорости обучения и применение различных стратегий изменения скорости обучения в процессе обучения модели. Learning Rate Scheduling: Планирование изменения скорости обучения в процессе обучения. Early Stopping: Остановка обучения, когда производительность на валидационном наборе перестает улучшаться. Gradient Clipping: Ограничение величины градиентов для предотвращения взрывающихся градиентов.
from tensorflow.keras.callbacks import LearningRateScheduler, EarlyStopping

def lr_schedule(epoch, lr):
if epoch > 10:
lr = lr * 0.1
return lr

lr_scheduler = LearningRateScheduler(lr_schedule)
early_stopping = EarlyStopping(patience=5, restore_best_weights=True)

model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2, callbacks=[lr_scheduler, early_stopping])


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
15 декабря 2024 г. 10:00
✅️ GitHubGitHub теперь в Telegram!

Подписывайтесь: @GitHub
Data Science | Вопросы собесов
14 декабря 2024 г. 19:10
🤔🤔 В чем разница между L1 и L2 регуляризацией?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
14 декабря 2024 г. 12:10
🤔 Как batch norm помогает в обучении моделей ?Как batch norm помогает в обучении моделей ?

Это техника, разработанная для ускорения и стабилизации процесса обучения глубоких нейронных сетей. Она помогает избежать проблем с затухающими и взрывающимися градиентами, что позволяет использовать более высокие скорости обучения и улучшает общую производительность модели.

🚩Основные идеи

🟠Стабилизация распределения активаций
Нормализует выходные значения слоев (активации) для каждого мини-батча данных, приводя их к стандартному нормальному распределению со средним 0 и стандартным отклонением 1. Это помогает стабилизировать распределение входных значений для каждого слоя, снижая влияние изменения параметров в предыдущих слоях.

🟠🟠Скорость обучения
Стабилизация распределения активаций позволяет использовать более высокие скорости обучения без риска затухающих или взрывающихся градиентов. Это ускоряет процесс обучения и улучшает сходимость модели.

🟠Регуляризация
Добавляет некую форму шумовой регуляризации, поскольку нормализация происходит для каждого батча данных отдельно. Это помогает уменьшить переобучение и улучшает обобщающую способность модели.

🚩Как он работает

🟠Нормализация
Для каждого мини-батча данных вычисляются среднее значение и стандартное отклонение для каждого активационного значения.

🟠Масштабирование и смещение
Нормализованные активации затем масштабируются и смещаются с использованием обучаемых параметров, что позволяет модели восстанавливать оптимальное распределение активаций для каждой задачи.

🚩Формально

Для каждого мини-батча данных \( \{x_1, x_2, \ldots, x_m\} \) вычисляются среднее значение и стандартное отклонение
\mu_B = \frac{1}{m} \sum_{i=1}^m x_i

\sigma_B^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_B)^2


Нормализация
\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}


Масштабирование и смещение
y_i = \gamma \hat{x}_i + \beta


import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, BatchNormalization
from tensorflow.keras.optimizers import Adam

# Генерация данных
np.random.seed(42)
X = np.random.rand(1000, 10)
y = np.dot(X, np.random.rand(10)) + np.random.rand(1000) * 0.1

# Создание модели
model = Sequential()
model.add(Dense(64, input_dim=10, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(64, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(1, activation='linear'))

# Компиляция модели
model.compile(optimizer=Adam(learning_rate=0.001), loss='mse')

# Обучение модели
model.fit(X, y, epochs=50, batch_size=32, validation_split=0.2)


🚩Плюсы

Ускоряет обучение
Стабилизация распределения активаций позволяет использовать более высокие скорости обучения.
Улучшает сходимость
Снижает риск затухающих и взрывающихся градиентов, улучшая сходимость модели.
Регуляризация
Добавляет форму регуляризации, что помогает уменьшить переобучение.
Уменьшает зависимость от начальной инициализации весов
Модель становится менее чувствительной к выбору начальных значений весов.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
13 декабря 2024 г. 19:10
🤔🤔 Что знаешь про early stopping?

Early stopping — это техника регуляризации, которая завершает обучение модели, если метрика качества на валидационном наборе перестаёт улучшаться. Это предотвращает переобучение, позволяя сохранить оптимальные параметры до ухудшения обобщающей способности. Метод основан на мониторинге функции ошибки или качества модели во время каждой итерации обучения.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
13 декабря 2024 г. 12:10
🤔 Сколько слоёв многослойного перцептрона с линейной функцией активации понадобится для приближения полинома третьей степени?Сколько слоёв многослойного перцептрона с линейной функцией активации понадобится для приближения полинома третьей степени?

Многослойный перцептрон (MLP) с линейными функциями активации, независимо от числа слоев, не способен аппроксимировать полином третьей степени или любую другую нелинейную функцию.

🚩Линейные функции активации

Имеет вид
 f(x) = x


Когда используется линейная функция активации в многослойном перцептроне, каждая следующая линейная комбинация входных данных остается линейной. Независимо от количества слоев, итоговая функция будет просто линейной комбинацией входных данных. Если рассматривать MLP с линейной активацией, то каждый слой \( l \) вычисляется как
\mathbf{z}^{(l)} = \mathbf{W}^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)}


🚩Полиномиальные функции

Полином третьей степени имеет вид
f(x) = a_3 x^3 + a_2 x^2 + a_1 x + a_0


🚩Необходимость нелинейной активации

Для аппроксимации полинома третьей степени необходимо использовать нелинейные функции активации, такие как:
Сигмоида (\(\sigma(x) = \frac{1}{1 + e^{-x}}\))
ReLU (Rectified Linear Unit, \( \text{ReLU}(x) = \max(0, x) \))
Тангенс гиперболический (\(\tanh(x)\))
Использование нелинейных функций активации позволяет многослойному перцептрону моделировать сложные функции, включая полиномы более высокой степени.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor

# Генерация данных
np.random.seed(42)
X = np.linspace(-2, 2, 100).reshape(-1, 1)
y = 3*X**3 - 2*X**2 + X + 1 + np.random.normal(0, 0.2, X.shape)

# Обучение MLP
mlp = MLPRegressor(hidden_layer_sizes=(100, 100), activation='relu', max_iter=10000, random_state=42)
mlp.fit(X, y.ravel())

# Предсказания
y_pred = mlp.predict(X)

# Визуализация
plt.scatter(X, y, color='blue', label='Original data')
plt.plot(X, y_pred, color='red', label='MLP prediction')
plt.legend()
plt.show()


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Data Science | Вопросы собесов
12 декабря 2024 г. 19:10
🤔🤔 Чем отличается градиентный спуск от SGD?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний