Что такое бутстреп и где он используется?
Бутстрепом (bootstrap) называют процесс генерации подвыборок с помощью семплирования с возвращением (когда один и тот же элемент может быть выбран более одного раза).
Рассмотрим пример: у нас есть урна с пятью шарами, пронумерованными от 1 до 5. Это наша выборка. Чтобы сформировать подвыборки, мы:
🎱 вытаскиваем шар из урны и записываем его номер;
🎱 возвращаем шар в урну;
🎱 перемешиваем шары и снова вытаскиваем рандомный;
🎱 делаем так до тех пор, пока не получим равное исходному количество номеров шаров в подвыборке.
Бутстреп, например, лежит в основе бэггинга — метода ансамблевых алгоритмов. В целом, обучение модели на различных подвыборках из исходных данных позволяет оценить вариабельность её производительности.
#вопросы_с_собеседований
Бутстрепом (bootstrap) называют процесс генерации подвыборок с помощью семплирования с возвращением (когда один и тот же элемент может быть выбран более одного раза).
Рассмотрим пример: у нас есть урна с пятью шарами, пронумерованными от 1 до 5. Это наша выборка. Чтобы сформировать подвыборки, мы:
🎱 вытаскиваем шар из урны и записываем его номер;
🎱 возвращаем шар в урну;
🎱 перемешиваем шары и снова вытаскиваем рандомный;
🎱 делаем так до тех пор, пока не получим равное исходному количество номеров шаров в подвыборке.
Бутстреп, например, лежит в основе бэггинга — метода ансамблевых алгоритмов. В целом, обучение модели на различных подвыборках из исходных данных позволяет оценить вариабельность её производительности.
#вопросы_с_собеседований
👍9🔥6👏2🥰1
Чем градиентный бустинг на деревьях отличается от случайного леса?
Здесь достаточно вспомнить базовые принципы построения этих двух алгоритмов.
🌲Градиентный бустинг:
Комбинирует предсказания нескольких базовых моделей, в данном случае решающих деревьев. Эти базовые модели строятся последовательно, и каждая новая учится исправлять ошибки предыдущих.
🌲Случайный лес:
Использует совокупность деревьев решений, построенных параллельно на случайно выбранных подмножествах обучающего набора данных. Конечный результат получается путём усреднения или выбора большинства среди предсказаний всех деревьев.
#вопросы_с_собеседований
Здесь достаточно вспомнить базовые принципы построения этих двух алгоритмов.
🌲Градиентный бустинг:
Комбинирует предсказания нескольких базовых моделей, в данном случае решающих деревьев. Эти базовые модели строятся последовательно, и каждая новая учится исправлять ошибки предыдущих.
🌲Случайный лес:
Использует совокупность деревьев решений, построенных параллельно на случайно выбранных подмножествах обучающего набора данных. Конечный результат получается путём усреднения или выбора большинства среди предсказаний всех деревьев.
#вопросы_с_собеседований
🔥5👍3😁3
👨💻 Как провести отбор признаков при построении модели?
Можно исходить из нескольких соображений:
✍️ Первым делом можно убрать те признаки, значения у которых практически не меняются. Такие фичи не содержат информации. В целом, можно отбрасывать признаки, дисперсия которых ниже определённой границы.
✍️ Можно делать выбор в пользу лучших признаков по результатам статистических тестов. Подробнее тут.
✍️ Можно сначала построить baseline модель для оценки признаков. Она должна явно показывать важность использованных фичей. На роль такой модели подойдут, например, Random Forest или линейная модель с Lasso-регуляризацией.
✍️ Наконец можно использовать метод перебора. Нужно по очереди обучать модель на разных подмножествах фичей. Этот способ самый вычислительно сложный, но надёжный.
#вопросы_с_собеседований
Можно исходить из нескольких соображений:
✍️ Первым делом можно убрать те признаки, значения у которых практически не меняются. Такие фичи не содержат информации. В целом, можно отбрасывать признаки, дисперсия которых ниже определённой границы.
✍️ Можно делать выбор в пользу лучших признаков по результатам статистических тестов. Подробнее тут.
✍️ Можно сначала построить baseline модель для оценки признаков. Она должна явно показывать важность использованных фичей. На роль такой модели подойдут, например, Random Forest или линейная модель с Lasso-регуляризацией.
✍️ Наконец можно использовать метод перебора. Нужно по очереди обучать модель на разных подмножествах фичей. Этот способ самый вычислительно сложный, но надёжный.
#вопросы_с_собеседований
❤12
❓Объясните, как работает градиентный бустинг?
Градиентный бустинг используется для задач как классификации, так и регрессии. Это алгоритм, который объединяет прогнозы слабых моделей для создания сильной модели.
Основные шаги градиентного бустинга:
👣 Инициализация слабой модели, например простого дерева решений.
👣 Вычисление ошибки, которую она допустила, то есть разницы между предсказанным и реальным целевым значением.
👣 Добавление новой слабой модели, которая будет учиться исправлять ошибку, совершённую предыдущей моделью.
👣 Итоговое объединение всех предсказаний.
✔️Вот простой пример: допустим, что предсказание первой модели на 5 больше настоящего значения. Если бы следующая новая модель выдавала ответ -5, то сумма ответов этих двух моделей оказалась бы идеальной.
❔Почему «градиентный»? Потому что каждая очередная модель в ансамбле обучается предсказывать отрицательный градиент (или антиградиент) функции потерь на основе предсказания предыдущей модели.
#вопросы_с_собеседований
Градиентный бустинг используется для задач как классификации, так и регрессии. Это алгоритм, который объединяет прогнозы слабых моделей для создания сильной модели.
Основные шаги градиентного бустинга:
👣 Инициализация слабой модели, например простого дерева решений.
👣 Вычисление ошибки, которую она допустила, то есть разницы между предсказанным и реальным целевым значением.
👣 Добавление новой слабой модели, которая будет учиться исправлять ошибку, совершённую предыдущей моделью.
👣 Итоговое объединение всех предсказаний.
✔️Вот простой пример: допустим, что предсказание первой модели на 5 больше настоящего значения. Если бы следующая новая модель выдавала ответ -5, то сумма ответов этих двух моделей оказалась бы идеальной.
❔Почему «градиентный»? Потому что каждая очередная модель в ансамбле обучается предсказывать отрицательный градиент (или антиградиент) функции потерь на основе предсказания предыдущей модели.
#вопросы_с_собеседований
👍15
❓Как вы обработали бы разреженные данные?
Разреженные векторы часто содержат много измерений. Если передать такие многомерные данные в модель, то может потребоваться слишком много вычислительных ресурсов.
✅ В разреженном векторе было бы неплохо уменьшить некоторые веса до нуля. Можно рассмотреть L1 регуляризацию. Она приведёт многие неинформативные коэффициенты в модели к нулю.
✅ Кроме того, стоит оценить причину разреженности данных. В некоторых случаях можно избавиться от нерелевантных признаков или обработать пропущенные значения.
#вопросы_с_собеседований
Разреженные векторы часто содержат много измерений. Если передать такие многомерные данные в модель, то может потребоваться слишком много вычислительных ресурсов.
✅ В разреженном векторе было бы неплохо уменьшить некоторые веса до нуля. Можно рассмотреть L1 регуляризацию. Она приведёт многие неинформативные коэффициенты в модели к нулю.
✅ Кроме того, стоит оценить причину разреженности данных. В некоторых случаях можно избавиться от нерелевантных признаков или обработать пропущенные значения.
#вопросы_с_собеседований
👍12❤1
Какова вычислительная сложность механизма self-attention?
В оригинальной статье Attention Is All You Need есть таблица со сравнением Complexity per Layer (сложность на слой) нового механизма self-attention и других архитектур. Указано, что для self-attention это значение составляет O(n^2 * d), где d — это размерность векторного представления.
В статье есть один нюанс. Авторы не учитывали сложность вычисления матриц Q, V и K (query, value и key). Их значения были взяты из скрытых состояний RNN. Поэтому идёт «чистый» расчёт для слоя Attention.
#вопросы_с_собеседований
В оригинальной статье Attention Is All You Need есть таблица со сравнением Complexity per Layer (сложность на слой) нового механизма self-attention и других архитектур. Указано, что для self-attention это значение составляет O(n^2 * d), где d — это размерность векторного представления.
В статье есть один нюанс. Авторы не учитывали сложность вычисления матриц Q, V и K (query, value и key). Их значения были взяты из скрытых состояний RNN. Поэтому идёт «чистый» расчёт для слоя Attention.
#вопросы_с_собеседований
👍9❤3🔥1
Какие существуют модификации KNN?
Метод k-ближайших соседей, или k-nearest neighbors (KNN), — довольно простой и легко интерпретируемый алгоритм. Он работает, идентифицируя k объектов обучающего набора данных, которые находятся ближе всего к объекту, который нужно классифицировать или для которого нужно предсказать значение.
Как алгоритм можно модифицировать?
🔹Выбор метрики
Во-первых, можно использовать разные функции расстояния для вычисления дистанции между объектами. Это могут быть Манхэттенская метрика, метрика Минковского, косинусное расстояние, расстояние Жаккара.
🔹Взвешенный KNN
Решает главный недостаток оригинального алгоритма: он никак не учитывает расстояния до соседних объектов, хотя эта информация может быть полезной. В этой модификации чем ближе сосед, тем больше его вклад в принятие решения. Это позволяет уменьшить влияние «далёких» соседей.
🔹Адаптивный KNN
В этой версии алгоритма значение k может адаптироваться в зависимости от локальной плотности данных. Это означает, что для объектов в разреженных областях пространства будет использоваться большее значение k, а в плотных областях — меньшее.
#вопросы_с_собеседований
Метод k-ближайших соседей, или k-nearest neighbors (KNN), — довольно простой и легко интерпретируемый алгоритм. Он работает, идентифицируя k объектов обучающего набора данных, которые находятся ближе всего к объекту, который нужно классифицировать или для которого нужно предсказать значение.
Как алгоритм можно модифицировать?
🔹Выбор метрики
Во-первых, можно использовать разные функции расстояния для вычисления дистанции между объектами. Это могут быть Манхэттенская метрика, метрика Минковского, косинусное расстояние, расстояние Жаккара.
🔹Взвешенный KNN
Решает главный недостаток оригинального алгоритма: он никак не учитывает расстояния до соседних объектов, хотя эта информация может быть полезной. В этой модификации чем ближе сосед, тем больше его вклад в принятие решения. Это позволяет уменьшить влияние «далёких» соседей.
🔹Адаптивный KNN
В этой версии алгоритма значение k может адаптироваться в зависимости от локальной плотности данных. Это означает, что для объектов в разреженных областях пространства будет использоваться большее значение k, а в плотных областях — меньшее.
#вопросы_с_собеседований
👍14⚡5😁2🤩2❤1
Вам дали список чисел. Напишите функцию, которая вернёт выбросы
Выброс — это результат измерения, выделяющийся из общей выборки. Простейшие способы определения выбросов основаны на манипуляциях с межквартильным расстоянием. Рассмотрим такой алгоритм:
✔️ Вычислим квартили.
Так мы получим Q1 (первый квартиль) и Q3 (третий квартиль). Тогда IQR — это размах между первым и третьим квартилями (Q3 - Q1).
✔️ Определим выбросы.
Как правило, выбросами считаются точки данных, которые находятся ниже Q1 - 1.5 * IQR или выше Q3 + 1.5 * IQR.
Вот пример функции, реализующей такой алгоритм:
#вопросы_с_собеседований
Выброс — это результат измерения, выделяющийся из общей выборки. Простейшие способы определения выбросов основаны на манипуляциях с межквартильным расстоянием. Рассмотрим такой алгоритм:
Так мы получим Q1 (первый квартиль) и Q3 (третий квартиль). Тогда IQR — это размах между первым и третьим квартилями (Q3 - Q1).
Как правило, выбросами считаются точки данных, которые находятся ниже Q1 - 1.5 * IQR или выше Q3 + 1.5 * IQR.
Вот пример функции, реализующей такой алгоритм:
import numpy as np
def find_outliers(data):
sorted_data = sorted(data)
Q1 = np.percentile(sorted_data, 25)
Q3 = np.percentile(sorted_data, 75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers = [x for x in sorted_data if x < lower_bound or x > upper_bound]
return outliers
#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍14🔥4⚡1
Какие допущения есть у линейной регрессии?
Линейная регрессия — это, в сущности, статистический метод, который позволяет описать связь между переменными. Этот метод валиден, если выполняются четыре предположения:
1️⃣ Между независимой переменной x и зависимой переменной y существует линейная зависимость.
2️⃣ Между последовательными остатками (или разницей между фактическими и предсказанными значениями) нет корреляции. Это чаще всего случается в данных временных рядов.
3️⃣ Должна соблюдаться гомоскедастичность. То есть дисперсия остатков обязана быть одинаковой. Иными словами, разность между реальным и предсказанным значениями, должна оставаться в определённом известном диапазоне.
4️⃣ Остатки должны быть нормально распределены.
#вопросы_с_собеседований
Линейная регрессия — это, в сущности, статистический метод, который позволяет описать связь между переменными. Этот метод валиден, если выполняются четыре предположения:
1️⃣ Между независимой переменной x и зависимой переменной y существует линейная зависимость.
2️⃣ Между последовательными остатками (или разницей между фактическими и предсказанными значениями) нет корреляции. Это чаще всего случается в данных временных рядов.
3️⃣ Должна соблюдаться гомоскедастичность. То есть дисперсия остатков обязана быть одинаковой. Иными словами, разность между реальным и предсказанным значениями, должна оставаться в определённом известном диапазоне.
4️⃣ Остатки должны быть нормально распределены.
#вопросы_с_собеседований
⚡12👍2😁1
Как выбрать количество скрытых слоёв и нейронов в нейросети?
Не существует универсального решения этой проблемы. Выбор количества скрытых слоёв и нейронов часто зависит от практических наблюдений и экспериментов. Однако есть несколько общих принципов и эвристик, которые можно использовать.
▫️Количество скрытых слоёв может быть определено сложностью решаемой проблемы. Простые задачи можно решить с использованием всего одного скрытого слоя, тогда как более сложные задачи могут потребовать больше. Однако нужно помнить, что добавление дополнительных слоёв также увеличивает риск переобучения. Следует находить компромисс.
▫️Количество нейронов в скрытом слое может быть определено на основе количества входных признаков и желаемого уровня сложности модели. Некоторые специалисты советуют применять такие правила:
— Число нейронов в скрытых слоях должно лежать в диапазоне от количества входных до количества выходных нейронов.
— Можно сделать количество нейронов в скрытом слое кратным к размеру входного слоя. Например, в два раза больше или в два раза меньше.
На практике бывает полезно начать с простой модели и постепенно увеличивать её сложность до достижения желаемой производительности.
#вопросы_с_собеседований
Не существует универсального решения этой проблемы. Выбор количества скрытых слоёв и нейронов часто зависит от практических наблюдений и экспериментов. Однако есть несколько общих принципов и эвристик, которые можно использовать.
▫️Количество скрытых слоёв может быть определено сложностью решаемой проблемы. Простые задачи можно решить с использованием всего одного скрытого слоя, тогда как более сложные задачи могут потребовать больше. Однако нужно помнить, что добавление дополнительных слоёв также увеличивает риск переобучения. Следует находить компромисс.
▫️Количество нейронов в скрытом слое может быть определено на основе количества входных признаков и желаемого уровня сложности модели. Некоторые специалисты советуют применять такие правила:
— Число нейронов в скрытых слоях должно лежать в диапазоне от количества входных до количества выходных нейронов.
— Можно сделать количество нейронов в скрытом слое кратным к размеру входного слоя. Например, в два раза больше или в два раза меньше.
На практике бывает полезно начать с простой модели и постепенно увеличивать её сложность до достижения желаемой производительности.
#вопросы_с_собеседований
👍9