и посмотреть медиа
Data Science - interviews
и посмотреть медиа
Data Science interviews.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Interview questions on Data Science.
🤔 В чем отличия между loc и iloc? В pandas `loc` используется для доступа по метке (label) индекса, а `iloc` — для доступа по числовому индексу, независимо от того, как промаркированы индексы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какие методы регуляризации знаешь? Это набор методов, которые помогают предотвратить переобучение модели, уменьшая сложность модели или ограничивая её способность к чрезмерному подгонке под обучающие данные. Вот основные методы регуляризации: 🟠L1 и L2-регуляризация (регуляризация норм L1 и L2) L1-регуляризация (Lasso) В регуляризацию добавляется сумма абсолютных значений коэффициентов весов модели. Формула: \( L1 = \lambda \sum_{i} |w_i| \), где \( \lambda \) — гиперпараметр регуляризации. Преимущество: Стимулирует разреженность, заставляя некоторые веса становиться равными нулю, что помогает в выборе признаков. Недостаток: Могут игнорироваться малые, но значимые признаки. L2-регуляризация (Ridge): Добавляется сумма квадратов весов модели. Формула: \( L2 = \lambda \sum_{i} w_i^2 \).Преимущество: Регуляризует модель, не делая веса нулевыми, помогает в борьбе с мультиколлинеарностью. Недостаток: Не отбирает признаки, оставляя их все from sklearn.linear_model import Ridge, Lasso # Ridge ridge_model = Ridge(alpha=1.0) ridge_model.fit(X_train, y_train) # Lasso lasso_model = Lasso(alpha=0.1) lasso_model.fit(X_train, y_train) 🟠Dropout Используется в нейронных сетях. В процессе обучения случайно "выключает" часть нейронов, заставляя сеть учиться более устойчивым признакам. Пример: при Dropout с вероятностью 0.5 половина нейронов в слое будет игнорироваться на каждой итерации. Преимущество: Снижает зависимость от определённых нейронов, улучшая обобщающую способность сети. import tensorflow as tf from tensorflow.keras.layers import Dropout, Dense model = tf.keras.Sequential([ Dense(128, activation='relu'), Dropout(0.5), # Удаляем 50% нейронов Dense(10, activation='softmax') ]) 🟠Раннее прекращение обучения (Early Stopping) Останавливает обучение, когда ошибка на валидационной выборке перестаёт уменьшаться. Преимущество: предотвращает переобучение без необходимости добавления дополнительной регуляризации. Недостаток: Может остановить обучение до достижения оптимального результата. from keras.callbacks import EarlyStopping early_stopping = EarlyStopping(monitor='val_loss', patience=5) model.fit(X_train, y_train, validation_data=(X_val, y_val), callbacks=[early_stopping]) 🟠Нормализация и стандартизация данных Хотя это больше подготовка данных, правильное масштабирование (например, через Min-Max Scaling или Z-Score) может улучшить регуляризацию модели, сделав её более устойчивой к шуму. from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X) 🟠Регуляризация через ограничение весов (Weight Constraint) Вводятся ограничения на значения весов, например, они должны оставаться в пределах заданного диапазона. from tensorflow.keras.constraints import MaxNorm from tensorflow.keras.layers import Dense layer = Dense(128, activation='relu', kernel_constraint=MaxNorm(3)) 🟠Аугментация данных Увеличение объёма данных с помощью преобразований, таких как поворот изображений, изменение яркости и т. д. Преимущество: Искусственно увеличивает выборку, что уменьшает риск переобучения. 🟠Batch Normalization Стабилизирует обучение, нормализуя выходы скрытых слоёв. Это также действует как лёгкая форма регуляризации. from tensorflow.keras.layers import BatchNormalization model.add(BatchNormalization()) 🟠Сложные методы (Elastic Net и DropConnect) Elastic Net: Комбинация L1 и L2-регуляризации. DropConnect: Аналог Dropout, но выключаются не нейроны, а их веса. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как работает память в питоне? Работа с памятью в Python основывается на управлении объектами, сборке мусора и использовании кучи (heap) для динамического распределения памяти. 🚩Концепции управления памятью 🟠Объекты и их управление В Python все является объектом, включая числа, строки, функции и классы. Каждый объект состоит из двух частей: заголовка и данных. Заголовок включает тип объекта и счетчик ссылок, а данные содержат значение объекта. 🟠Куча (Heap) Все объекты в Python хранятся в куче, которая управляется интерпретатором. Куча используется для динамического распределения памяти, что позволяет эффективно управлять памятью. 🟠Счетчик ссылок Python использует счетчик ссылок для отслеживания, сколько раз объект используется в программе. Счетчик ссылок увеличивается при создании новой ссылки на объект и уменьшается при удалении ссылки. Когда счетчик ссылок объекта становится равным нулю, объект считается неиспользуемым и подлежит удалению. 🟠Сборка мусора (Garbage Collection) Python использует механизм сборки мусора для удаления неиспользуемых объектов и освобождения памяти. Основной алгоритм сборки мусора основан на циклическом сборе (cyclic garbage collection), который позволяет находить и удалять циклические ссылки (объекты, которые ссылаются друг на друга). 🚩Как работает 🟠Счетчик ссылок Когда объект создается, его счетчик ссылок устанавливается в 1. При создании новой ссылки на объект счетчик увеличивается на 1, при удалении ссылки — уменьшается на 1. Когда счетчик ссылок становится равным нулю, объект удаляется, а память освобождается. 🟠Циклический сборщик мусора Основной сборщик мусора Python способен обнаруживать циклические ссылки, которые невозможно удалить с помощью простого счетчика ссылок. Сборщик мусора периодически просматривает объекты и их ссылки, чтобы найти циклы и удалить неиспользуемые объекты. import sys # Создание объекта и проверка счетчика ссылок 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 удалена # Сборка мусора import gc # Принудительный запуск сборщика мусора gc.collect() Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 В чем отличие градиентного бустинга над деревьями от случайного леса Какие базовые параметры настраиваются? Являются популярными ансамблевыми методами на основе деревьев решений. Они оба используют множество деревьев для улучшения точности и устойчивости модели, но делают это по-разному. Рассмотрим их отличия и основные параметры, которые настраиваются. 🚩Отличия между ними 🟠Основные концепции Случайный лес (Random Forest): Бэггинг (Bagging): Использует технику бэггинга для создания множества деревьев решений. Каждое дерево обучается на случайной подвыборке данных с заменой. Комбинирование предсказаний: Предсказания всех деревьев усредняются (для регрессии) или берется мажоритарное голосование (для классификации). Параллельное обучение: Все деревья обучаются независимо друг от друга, что позволяет выполнять параллельные вычисления. Градиентный бустинг (Gradient Boosting): Бустинг (Boosting): Создает деревья последовательно, каждое следующее дерево исправляет ошибки предыдущего. Основная идея состоит в улучшении модели путем поэтапного добавления новых деревьев, которые минимизируют функцию ошибки. Аддитивная модель: Каждое новое дерево добавляется к ансамблю, корректируя ошибки предыдущих деревьев. Последовательное обучение: Все деревья обучаются последовательно, что делает этот метод менее подходящим для параллельных вычислений. 🟠Основные свойства Случайный лес: Устойчив к переобучению благодаря усреднению предсказаний. Работает хорошо без тщательной настройки гиперпараметров. Менее чувствителен к шуму в данных. Градиентный бустинг: Обычно достигает более высокой точности, но может быть более склонен к переобучению. Требует тщательной настройки гиперпараметров. Может работать медленнее, так как деревья строятся последовательно. 🚩Основные параметры для настройки 🟠Случайный лес n_estimators: Количество деревьев в лесу. Увеличение этого параметра обычно улучшает точность, но увеличивает время обучения и предсказания. max_depth: Максимальная глубина дерева. Ограничение глубины деревьев может предотвратить переобучение. min_samples_split: Минимальное количество образцов, необходимых для разделения узла. Увеличение этого параметра может привести к более простым деревьям и уменьшению переобучения. min_samples_leaf: Минимальное количество образцов в листе. Увеличение этого параметра также может помочь предотвратить переобучение. max_features: Максимальное количество признаков, используемых для поиска лучшего разделения. Уменьшение этого параметра может уменьшить корреляцию между деревьями и уменьшить переобучение. 🟠Градиентный бустинг n_estimators: Количество деревьев. Большое количество деревьев может улучшить производительность, но также может привести к переобучению. learning_rate: Коэффициент скорости обучения. Меньшие значения требуют большего количества деревьев, но могут улучшить общую производительность. max_depth: Максимальная глубина каждого дерева. Глубокие деревья могут захватывать сложные зависимости, но также могут быть склонны к переобучению. min_samples_split: Минимальное количество образцов, необходимых для разделения узла. Как и в случайном лесу, увеличение этого параметра может привести к более простым деревьям и уменьшению переобучения. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как систематическая ошибка и дисперсии связаны между собой? Высокая систематическая ошибка (bias) уменьшает сложность модели, но снижает точность, а высокая дисперсия (variance) приводит к переобучению. Баланс между ними важен для оптимальной работы модели. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Можно ли тьюнить только batch norm? Да, можно тюнить только Batch Normalization (BatchNorm) слои в нейронной сети, заморозив остальные параметры. 🟠Предобученная модель адаптируется к новым данным фиксируются веса сверточных или полносвязных слоев, но обновляются параметры BatchNorm, чтобы скорректировать статистики (mean, variance) под новый датасет. 🟠Финетюнинг при небольшом размере данных если данных мало, обновление только BatchNorm слоев может помочь адаптироваться без переобучения всей модели. 🟠Ускорение обучения тюнинг только BatchNorm слоев уменьшает число обновляемых параметров, снижая вычислительные затраты. 🚩Как это работает? BatchNorm содержит обучаемые параметры: γ (scale) и β (shift) – которые позволяют нормализованному выходу масштабироваться и смещаться. running_mean и running_variance – обновляются во время тренировки, даже если веса других слоев зафиксированы. При тюнинге только BatchNorm Градиенты всех других слоев замораживаются (requires_grad = False). BatchNorm слои остаются обучаемыми (requires_grad = True). running_mean и running_variance обновляются в режиме train(), но не в eval(). 🚩В каких случаях это плохо? Если данные очень сильно отличаются от тех, на которых обучалась исходная модель, тюнинг только BatchNorm может быть недостаточным. При маленьких батчах статистики BatchNorm могут становиться нестабильными. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как делается прунинг деревьев? 1. Pre-pruning: остановка роста дерева по заранее заданным критериям (глубина, минимальный размер листа). 2. Post-pruning: удаление "слабых" ветвей после построения дерева для улучшения обобщения. 3. Метрики, такие как ошибка на валидационной выборке, помогают оценить, какие ветви обрезать. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 В чем разница между пивот и пивоттэйбл? Функции pivot и pivot_table обе предназначены для реорганизации и сводки данных, но они используются в разных сценариях и имеют некоторые ключевые отличия. 🚩Метод pivot Используется для преобразования данных из длинного формата в широкий. Он создаёт новый DataFrame, где один или несколько столбцов используются в качестве индексов, один столбец используется для столбцов новой таблицы, и один столбец для значений новой таблицы. Основное ограничение pivot заключается в том, что комбинация индекса и столбцов должна быть уникальной, иначе метод вызовет ошибку. import pandas as pd data = pd.DataFrame({ 'date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'], 'variable': ['A', 'B', 'A', 'B'], 'value': [1, 2, 3, 4] }) # Преобразование в широкий формат pivot_df = data.pivot(index='date', columns='variable', values='value') print(pivot_df) 🚩Метод pivot_table Более сложный и гибкий, он используется для создания сводных таблиц. pivot_table может агрегировать данные по одному или нескольким ключам на основе суммы, среднего, максимума, минимума или других агрегатных функций. pivot_table также способен обрабатывать повторяющиеся значения за счёт агрегации. import pandas as pd data = pd.DataFrame({ 'date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'], 'variable': ['A', 'A', 'B', 'B'], 'value': [1, 2, 3, 4] }) # Создание сводной таблицы pivot_table_df = data.pivot_table(index='date', columns='variable', values='value', aggfunc='sum') print(pivot_table_df) 🚩Основные различия 🟠Уникальность данных pivot требует уникальных пар индекс/столбец и выдаст ошибку в случае дубликатов. pivot_table может агрегировать дублирующиеся данные, используя функцию агрегации. 🟠Гибкость pivot_table предлагает дополнительные параметры, такие как aggfunc, которые позволяют более гибко обрабатывать данные. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое recall? Recall (полнота) — это метрика, показывающая, какая доля истинных положительных случаев была правильно предсказана моделью. Она рассчитывается как отношение количества истинно положительных предсказаний к сумме истинно положительных и ложно отрицательных. Recall важен, когда важно минимизировать количество пропущенных положительных случаев. Высокий recall означает, что модель почти не пропускает положительные случаи. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!