🤔 За что мэп штрафует больше: за перепрогноз или недопрогноз?
MAP (Mean Average Precision) больше штрафует за недопрогноз (упущенные релевантные элементы), так как метрика ориентирована на точность в верхней части ранжированного списка.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как работает деревянный регрессор?
Это статистическая модель, используемая для прогнозирования количественного ответа (непрерывной переменной), основанного на одной или нескольких предикторных переменных (факторах). Метод основан на серии вопросов, которые разделяют данные на более мелкие группы, и каждый раздел строится таким образом, чтобы он был как можно более однородным в отношении ответа.
🚩Как оно работает
🟠Выбор признака для разделения
На каждом этапе дерево решений выбирает лучший признак и пороговое значение для разделения данных на две группы. "Лучший" означает минимизацию внутригрупповой дисперсии ответов, что делает группы как можно более однородными по ответу.
🟠Рекурсивное разбиение
Этот процесс повторяется для каждой полученной подгруппы до тех пор, пока не будет достигнут критерий остановки, такой как максимальная глубина дерева, минимальное количество точек в листе или минимальное улучшение в однородности.
🟠Прогнозирование
После построения дерева прогноз для новых данных делается путем прохождения по дереву до листа, соответствующего значениям признаков этого наблюдения. Прогнозируемое значение — это среднее значение ответов в листе.
Ставь 👍 и забирай 📚 Базу знаний
Это статистическая модель, используемая для прогнозирования количественного ответа (непрерывной переменной), основанного на одной или нескольких предикторных переменных (факторах). Метод основан на серии вопросов, которые разделяют данные на более мелкие группы, и каждый раздел строится таким образом, чтобы он был как можно более однородным в отношении ответа.
🚩Как оно работает
🟠Выбор признака для разделения
На каждом этапе дерево решений выбирает лучший признак и пороговое значение для разделения данных на две группы. "Лучший" означает минимизацию внутригрупповой дисперсии ответов, что делает группы как можно более однородными по ответу.
🟠Рекурсивное разбиение
Этот процесс повторяется для каждой полученной подгруппы до тех пор, пока не будет достигнут критерий остановки, такой как максимальная глубина дерева, минимальное количество точек в листе или минимальное улучшение в однородности.
🟠Прогнозирование
После построения дерева прогноз для новых данных делается путем прохождения по дереву до листа, соответствующего значениям признаков этого наблюдения. Прогнозируемое значение — это среднее значение ответов в листе.
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Генерация данных
X = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, 100) # sin(x) с шумом
# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели
regressor = DecisionTreeRegressor(max_depth=5)
regressor.fit(X_train, y_train)
# Предсказание и оценка
y_pred = regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("MSE:", mse)
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какая скорость поиска в хэш-таблице
Скорость поиска в хэш-таблице (например, HashMap) в среднем составляет O(1), так как ключи напрямую отображаются в индекс с помощью хэш-функции. В худшем случае, при коллизиях, время поиска может увеличиваться до O(n), если хэш-таблица не оптимизирована или используется неэффективная стратегия разрешения коллизий. Однако в большинстве случаев эффективные хэш-функции и методы обработки коллизий поддерживают близкую к O(1) скорость.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Что такое ROC/AUC?
Это инструменты для оценки качества бинарных классификаторов. Они помогают визуально и количественно оценить, насколько хорошо модель разделяет два класса.
🚩Что такое ROC-кривая
Это график, показывающий соотношение между истинно положительными и ложноположительными срабатываниями классификатора при различных порогах классификации.
🟠Истинно положительные срабатывания (True Positive Rate, TPR)
Доля правильно предсказанных положительных примеров из всех положительных примеров (также называется чувствительность или recall).
🟠Ложноположительные срабатывания (False Positive Rate, FPR)
Доля неправильно предсказанных положительных примеров из всех отрицательных примеров.
🚩Построение
Строится путем изменения порога классификации модели от 0 до 1 и вычисления TPR и FPR для каждого значения порога. График строится с FPR по оси X и TPR по оси Y.
🚩Что такое AUC
Это площадь под ROC-кривой. Значение AUC варьируется от 0 до 1 и интерпретируется следующим образом:
🟠AUC = 0.5
Модель не лучше случайного угадывания.
🟠AUC < 0.5
Модель хуже случайного угадывания (что редко случается в практике).
🟠AUC > 0.5
Модель лучше случайного угадывания.
🟠AUC = 1
Идеальная модель.
Пример
Ставь 👍 и забирай 📚 Базу знаний
Это инструменты для оценки качества бинарных классификаторов. Они помогают визуально и количественно оценить, насколько хорошо модель разделяет два класса.
🚩Что такое ROC-кривая
Это график, показывающий соотношение между истинно положительными и ложноположительными срабатываниями классификатора при различных порогах классификации.
🟠Истинно положительные срабатывания (True Positive Rate, TPR)
Доля правильно предсказанных положительных примеров из всех положительных примеров (также называется чувствительность или recall).
\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}} 🟠Ложноположительные срабатывания (False Positive Rate, FPR)
Доля неправильно предсказанных положительных примеров из всех отрицательных примеров.
\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}} 🚩Построение
Строится путем изменения порога классификации модели от 0 до 1 и вычисления TPR и FPR для каждого значения порога. График строится с FPR по оси X и TPR по оси Y.
🚩Что такое AUC
Это площадь под ROC-кривой. Значение AUC варьируется от 0 до 1 и интерпретируется следующим образом:
🟠AUC = 0.5
Модель не лучше случайного угадывания.
🟠AUC < 0.5
Модель хуже случайного угадывания (что редко случается в практике).
🟠AUC > 0.5
Модель лучше случайного угадывания.
🟠AUC = 1
Идеальная модель.
Пример
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, roc_auc_score
# Пример данных
y_true = [0, 0, 1, 1] # Истинные значения
y_scores = [0.1, 0.4, 0.35, 0.8] # Предсказанные вероятности
# Вычисление ROC-кривой
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
roc_auc = roc_auc_score(y_true, y_scores)
# Построение графика
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC-кривая (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC-кривая')
plt.legend(loc="lower right")
plt.show()
Ставь 👍 и забирай 📚 Базу знаний
🤔1
🤔 Что такое мультиколлинеарность?
Это ситуация, когда признаки сильно коррелируют друг с другом.
- Это вызывает нестабильность линейных моделей, так как коэффициенты могут становиться большими и неинтерпретируемыми.
- Решения: удаление зависимых признаков, PCA, L1-регуляризация (Lasso).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это ситуация, когда признаки сильно коррелируют друг с другом.
- Это вызывает нестабильность линейных моделей, так как коэффициенты могут становиться большими и неинтерпретируемыми.
- Решения: удаление зависимых признаков, PCA, L1-регуляризация (Lasso).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Расскажи о квантизации
Квантизация (Quantization) — это процесс приближенного представления данных или параметров модели с меньшей разрядностью (например, перевод 32-битных чисел в 8-битные). Это уменьшает размер модели и ускоряет вычисления, особенно на мобильных устройствах и встраиваемых системах.
🚩Зачем нужна квантизация?
🟠Снижение потребления памяти
уменьшает размер модели, что важно для мобильных устройств.
🟠Ускорение вычислений
операции с меньшими разрядностями выполняются быстрее.
🟠Оптимизация для аппаратного обеспечения
некоторые процессоры (например, TPU, NPU) лучше работают с низкоразрядными числами.
🚩Виды квантизации
🟠Посттренировочная квантизация (Post-Training Quantization, PTQ)
Производится после обучения модели. Преобразует веса и (иногда) активации в более низкую разрядность.
🟠Квантизация во время обучения (Quantization-Aware Training, QAT)
Модель учится с учетом квантизации, что позволяет адаптировать веса.
Ставь 👍 и забирай 📚 Базу знаний
Квантизация (Quantization) — это процесс приближенного представления данных или параметров модели с меньшей разрядностью (например, перевод 32-битных чисел в 8-битные). Это уменьшает размер модели и ускоряет вычисления, особенно на мобильных устройствах и встраиваемых системах.
🚩Зачем нужна квантизация?
🟠Снижение потребления памяти
уменьшает размер модели, что важно для мобильных устройств.
🟠Ускорение вычислений
операции с меньшими разрядностями выполняются быстрее.
🟠Оптимизация для аппаратного обеспечения
некоторые процессоры (например, TPU, NPU) лучше работают с низкоразрядными числами.
🚩Виды квантизации
🟠Посттренировочная квантизация (Post-Training Quantization, PTQ)
Производится после обучения модели. Преобразует веса и (иногда) активации в более низкую разрядность.
import tensorflow as tf
# Загружаем обученную модель
model = tf.keras.models.load_model("model.h5")
# Создаём конвертер для TFLite
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT] # Включаем квантизацию
tflite_model = converter.convert()
# Сохраняем сжатую модель
with open("model_quantized.tflite", "wb") as f:
f.write(tflite_model)
🟠Квантизация во время обучения (Quantization-Aware Training, QAT)
Модель учится с учетом квантизации, что позволяет адаптировать веса.
import torch
import torchvision.models as models
from torch.quantization import quantize_dynamic
# Загружаем модель
model = models.resnet18(pretrained=True)
model.eval()
# Применяем квантизацию
quantized_model = quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8)
# Сохраняем модель
torch.save(quantized_model.state_dict(), "resnet18_quantized.pth")
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какие проблемы могут возникнуть при прогнозе LTV на полгода вперед?
Основные проблемы при прогнозе LTV (Lifetime Value) на длительный срок включают в себя высокую неопределённость в поведении пользователей, изменение рыночных условий и устаревание данных. Кроме того, прогнозы могут быть неточными из-за сезонных изменений или новых факторов, которые не были учтены в модели. Также возможна недостаточность данных для точного прогнозирования поведения пользователей на долгий срок. Модели могут переоценивать или недооценивать реальные значения LTV.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Зачем нужен метод dir для объектов?
Метод dir() используется для автоматического перечисления атрибутов, методов и других идентификаторов, которые доступны для любого объекта. Это полезный инструмент для исследования и интерактивного программирования, особенно когда вы работаете с новыми библиотеками или объектами, структура и свойства которых вам не полностью известны.
🚩Зачем нужен dir()
🟠Интроспекция
Используется для интроспекции объектов, то есть для определения, какие свойства и методы они имеют. Это особенно полезно в средах разработки, где вы можете не знать точной структуры объекта.
🟠Отладка
Помогает понять объекты, с которыми они работают, что может значительно облегчить отладку кода, позволяя быстро проверить, какие методы и атрибуты доступны для объекта.
🟠Рефлексия
Это свойство, позволяющее программе манипулировать своими частями. С помощью
🚩Как она работает
Когда вы вызываете
Ставь 👍 и забирай 📚 Базу знаний
Метод dir() используется для автоматического перечисления атрибутов, методов и других идентификаторов, которые доступны для любого объекта. Это полезный инструмент для исследования и интерактивного программирования, особенно когда вы работаете с новыми библиотеками или объектами, структура и свойства которых вам не полностью известны.
🚩Зачем нужен dir()
🟠Интроспекция
Используется для интроспекции объектов, то есть для определения, какие свойства и методы они имеют. Это особенно полезно в средах разработки, где вы можете не знать точной структуры объекта.
🟠Отладка
Помогает понять объекты, с которыми они работают, что может значительно облегчить отладку кода, позволяя быстро проверить, какие методы и атрибуты доступны для объекта.
🟠Рефлексия
Это свойство, позволяющее программе манипулировать своими частями. С помощью
dir() можно получить список, содержащий имена всех атрибутов, которые доступны в объекте, что может быть использовано для рефлексивного доступа к атрибутам и методам.🚩Как она работает
Когда вы вызываете
dir() для объекта, возвращает список строк. Каждая строка — это имя атрибута или метода, доступного для объекта. Если вызвать dir() без аргументов, то будет возвращен список имен в текущей локальной области видимости.class Car:
def __init__(self, make, model):
self.make = make
self.model = model
def start(self):
print("Машина заведена")
car = Car("Toyota", "Corolla")
# Выведем список всех атрибутов и методов объекта car
print(dir(car))
Ставь 👍 и забирай 📚 Базу знаний
🔥1
🤔 Почему в картинках используют Standard Scaling вместо MinMax Scaling?
Standard Scaling (z-score normalization) чаще используется для обработки изображений, поскольку:
1. Он центрирует данные вокруг нуля и масштабирует их на основе стандартного отклонения, что улучшает производительность моделей, чувствительных к масштабам.
2. MinMax Scaling, преобразующий значения в диапазон [0, 1], может терять информацию о дисперсии пикселей.
3. Standard Scaling более устойчив к изменению контрастности и яркости изображений.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
1. Он центрирует данные вокруг нуля и масштабирует их на основе стандартного отклонения, что улучшает производительность моделей, чувствительных к масштабам.
2. MinMax Scaling, преобразующий значения в диапазон [0, 1], может терять информацию о дисперсии пикселей.
3. Standard Scaling более устойчив к изменению контрастности и яркости изображений.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Как использовать P-value, когда мы проверяем гипотезу?
P-value показывает вероятность получения текущих результатов при условии, что нулевая гипотеза верна. Если P-value ниже уровня значимости, нулевая гипотеза отвергается.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
P-value показывает вероятность получения текущих результатов при условии, что нулевая гипотеза верна. Если P-value ниже уровня значимости, нулевая гипотеза отвергается.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 В чем разница между командами делит и транткейп?
Команды
🚩Команда DELETE
Используется для удаления определённых записей из таблицы. Можно указать условие с помощью
🟠Характеристики
Удаление происходит построчно. Логируется каждая удалённая запись (затратно по производительности при больших объёмах данных). Можно откатить изменения с помощью транзакций, если используются
🟠Где применять
Когда нужно удалить часть данных, а не все записи. Например, удаление сотрудников только из определённого отдела.
🚩Команда TRUNCATE
🟠Описание
Используется для полного очищения таблицы. Удаляет все строки в таблице без возможности указания условия. Например:
🟠Характеристики
Работает быстрее, чем
🟠Где применять
Когда нужно быстро очистить таблицу перед новой загрузкой данных. Например, перед массовой загрузкой обновлённых данных.
🚩Пример для сравнения
DELETE
TRUNCATE
Ставь 👍 и забирай 📚 Базу знаний
Команды
DELETE и TRUNCATE в SQL используются для удаления данных из таблиц, но они работают по-разному и подходят для разных задач. 🚩Команда DELETE
Используется для удаления определённых записей из таблицы. Можно указать условие с помощью
WHERE, чтобы удалить только нужные строки. НапримерDELETE FROM employees WHERE department = 'HR';
🟠Характеристики
Удаление происходит построчно. Логируется каждая удалённая запись (затратно по производительности при больших объёмах данных). Можно откатить изменения с помощью транзакций, если используются
BEGIN TRANSACTION и ROLLBACK.🟠Где применять
Когда нужно удалить часть данных, а не все записи. Например, удаление сотрудников только из определённого отдела.
🚩Команда TRUNCATE
🟠Описание
Используется для полного очищения таблицы. Удаляет все строки в таблице без возможности указания условия. Например:
TRUNCATE TABLE employees;
🟠Характеристики
Работает быстрее, чем
DELETE, так как не записывает подробный лог изменений. Удаляет данные "в обход" построчного удаления, очищая всю структуру. Нельзя откатить изменения, так как эта операция не поддерживает транзакции в большинстве СУБД.🟠Где применять
Когда нужно быстро очистить таблицу перед новой загрузкой данных. Например, перед массовой загрузкой обновлённых данных.
🚩Пример для сравнения
DELETE
-- Удалить только сотрудников из отдела HR
DELETE FROM employees WHERE department = 'HR';
TRUNCATE
-- Очистить таблицу сотрудников полностью
TRUNCATE TABLE employees;
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какие магические методы в python знаешь?
Магические методы в Python — это специальные методы, которые начинаются и заканчиваются двойным подчеркиванием. Примеры включают `__init__` (конструктор класса), `__str__` (представление объекта в виде строки), `__len__` (возвращает длину объекта) и `__getitem__` (обращение к элементам по индексу). Также есть методы, такие как `__add__` для перегрузки операторов и `__call__`, позволяющий объекту вести себя как функция. Эти методы позволяют кастомизировать поведение объектов Python.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3
🤔 Чем отличаются str и repr?
str предназначен для отображения понятного текста для пользователя, repr — для отображения точного представления объекта для разработчика.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В чем отличия между char и varchar?
В SQL `CHAR` представляет собой тип данных с фиксированной длиной, тогда как `VARCHAR` — с переменной длиной. `CHAR` быстрее, но потенциально занимает больше места при хранении коротких строк. `VARCHAR` эффективнее использует пространство для хранения текста, размер которого меняется.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Что такое precision?
Precision (точность) — это метрика классификации, которая показывает долю правильных положительных предсказаний среди всех предсказанных положительных классов. Она рассчитывается как отношение количества истинно положительных предсказаний к сумме истинно положительных и ложно положительных. Precision важен, когда цена ложноположительных результатов высока. Высокое значение precision указывает на то, что модель почти не ошибается при предсказании положительного класса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4
🤔 Как оценивать эффективность работы рекомендательных моделей?
Оценка эффективности рекомендательных моделей делится на точностные и ранговые метрики.
🚩Точностные метрики
🟠RMSE (Среднеквадратичная ошибка)
Формула
Пример
🟠MAE (Средняя абсолютная ошибка)
Формула
Пример
🚩Ранговые метрики
🟠Precision@K и Recall@K
Precision@K: Доля релевантных элементов среди первых K предложений.
Recall@K: Доля найденных релевантных элементов среди всех возможных релевантных.
Пример
🟠MAP (Средний показатель)
Пример
Ставь 👍 и забирай 📚 Базу знаний
Оценка эффективности рекомендательных моделей делится на точностные и ранговые метрики.
🚩Точностные метрики
🟠RMSE (Среднеквадратичная ошибка)
Формула
RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}Пример
from sklearn.metrics import mean_squared_error
import numpy as np
y_true = np.array([4, 3, 5, 2])
y_pred = np.array([3.8, 2.9, 5.1, 2.2])
rmse = np.sqrt(mean_squared_error(y_true, y_pred))
print(f'RMSE: {rmse}')
🟠MAE (Средняя абсолютная ошибка)
Формула
MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|Пример
from sklearn.metrics import mean_absolute_error
y_true = np.array([4, 3, 5, 2])
y_pred = np.array([3.8, 2.9, 5.1, 2.2])
mae = mean_absolute_error(y_true, y_pred)
print(f'MAE: {mae}')
🚩Ранговые метрики
🟠Precision@K и Recall@K
Precision@K: Доля релевантных элементов среди первых K предложений.
Recall@K: Доля найденных релевантных элементов среди всех возможных релевантных.
Пример
def precision_at_k(recommended_items, relevant_items, k):
return len(set(recommended_items[:k]) & set(relevant_items)) / k
def recall_at_k(recommended_items, relevant_items, k):
return len(set(recommended_items[:k]) & set(relevant_items)) / len(relevant_items)
recommended_items = [1, 2, 3, 4, 5]
relevant_items = [3, 4, 5, 6, 7]
k = 3
print(f'Precision@{k}: {precision_at_k(recommended_items, relevant_items, k)}')
print(f'Recall@{k}: {recall_at_k(recommended_items, relevant_items, k)}')
🟠MAP (Средний показатель)
Пример
def average_precision(recommended_items, relevant_items):
score = 0.0
num_hits = 0.0
for i, item in enumerate(recommended_items):
if item in relevant_items:
num_hits += 1.0
score += num_hits / (i + 1.0)
return score / len(relevant_items)
def mean_average_precision(recommended_items_list, relevant_items_list):
return np.mean([average_precision(r, t) for r, t in zip(recommended_items_list, relevant_items_list)])
recommended_items_list = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]]
relevant_items_list = [[3, 4, 5, 6, 7], [1, 2, 3, 4, 5]]
print(f'MAP: {mean_average_precision(recommended_items_list, relevant_items_list)}')
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что можешь сказать про оконные функции?
Оконные функции в SQL и в библиотеках анализа данных, таких как pandas, позволяют выполнять вычисления по подмножествам данных (окнам), которые связаны с текущей строкой. Это включает в себя операции, такие как суммирование, вычисление среднего, и другие статистические функции, применяемые к "окну" данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3
🤔 Какие переменные (типы данных) можно использовать в качестве ключей?
Хэшируемые типы данных, такие как числа, строки, кортежи с неизменяемыми элементами. Это важно, если требуется быстро сопоставить значения в структуре данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Хэшируемые типы данных, такие как числа, строки, кортежи с неизменяемыми элементами. Это важно, если требуется быстро сопоставить значения в структуре данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Расскажи о Gradient-boosted trees
Gradient-boosted trees — это ансамблевый метод машинного обучения, который строит серию деревьев решений, каждое из которых исправляет ошибки предыдущих. Процесс обучения происходит путем последовательного добавления деревьев, каждое из которых минимизирует ошибку путем градиентного спуска, усиливая правильные прогнозы. Gradient boosting широко используется для задач регрессии и классификации, обеспечивая высокую точность и гибкость в работе с разными типами данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как валидировать временные ряды?
Валидация по времени включает разбиение данных на интервалы с учётом временной последовательности. Методы: time series split (скользящее окно), расширяемое окно или кросс-валидация по времени.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Что станет с предсказаниями, если в bagging/boosting убрать первое дерево ?
В ансамблевых методах, таких как bagging (bootstrap aggregating) и boosting, удаление первого дерева будет иметь разные последствия из-за различий в подходах к обучению и агрегированию предсказаний.
🚩Bagging
🟠Независимые деревья
В этом методе деревья обучаются независимо друг от друга на разных случайных подвыборках данных. Таким образом, каждое дерево обучается на собственном наборе данных, и предсказания делаются путем усреднения (для регрессии) или голосования (для классификации).
🟠Удаление первого дерева
Если удалить первое дерево из ансамбля, это немного изменит итоговые предсказания, но в большинстве случаев эффект будет минимальным. Причина в том, что каждое дерево в bagging имеет равный вес, и удаление одного дерева из большого числа деревьев не сильно повлияет на общее предсказание ансамбля.
🚩Boosting
🟠Последовательное обучение
В этом методе деревья обучаются последовательно, каждая последующая модель исправляет ошибки предыдущих. Первое дерево имеет важное значение, так как оно задает начальное направление для коррекции ошибок последующими деревьями.
🟠Удаление первого дерева
Удаление первого дерева в boosting значительно изменит предсказания. Это связано с тем, что каждое последующее дерево основывает свое обучение на ошибках, сделанных предыдущими деревьями. Если первое дерево удалено, то все остальные деревья будут обучаться на других ошибках, что приведет к совершенно другим предсказаниям.
Для Gradient Boosting (boosting)
🟠Bagging (например, Random Forest)
Удаление первого дерева окажет незначительное влияние на предсказания, так как каждое дерево обучается независимо.
🟠Boosting (например, Gradient Boosting)
Удаление первого дерева существенно изменит предсказания, так как каждое последующее дерево исправляет ошибки предыдущих, и первое дерево задает начальное направление для коррекции ошибок.
Ставь 👍 и забирай 📚 Базу знаний
В ансамблевых методах, таких как bagging (bootstrap aggregating) и boosting, удаление первого дерева будет иметь разные последствия из-за различий в подходах к обучению и агрегированию предсказаний.
🚩Bagging
🟠Независимые деревья
В этом методе деревья обучаются независимо друг от друга на разных случайных подвыборках данных. Таким образом, каждое дерево обучается на собственном наборе данных, и предсказания делаются путем усреднения (для регрессии) или голосования (для классификации).
🟠Удаление первого дерева
Если удалить первое дерево из ансамбля, это немного изменит итоговые предсказания, но в большинстве случаев эффект будет минимальным. Причина в том, что каждое дерево в bagging имеет равный вес, и удаление одного дерева из большого числа деревьев не сильно повлияет на общее предсказание ансамбля.
🚩Boosting
🟠Последовательное обучение
В этом методе деревья обучаются последовательно, каждая последующая модель исправляет ошибки предыдущих. Первое дерево имеет важное значение, так как оно задает начальное направление для коррекции ошибок последующими деревьями.
🟠Удаление первого дерева
Удаление первого дерева в boosting значительно изменит предсказания. Это связано с тем, что каждое последующее дерево основывает свое обучение на ошибках, сделанных предыдущими деревьями. Если первое дерево удалено, то все остальные деревья будут обучаться на других ошибках, что приведет к совершенно другим предсказаниям.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# Загрузка данных
data = load_iris()
X = data.data
y = data.target
# Разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Обучение модели Random Forest
model = RandomForestClassifier(n_estimators=10, random_state=42)
model.fit(X_train, y_train)
# Предсказания
y_pred = model.predict(X_test)
# Удаление первого дерева и повторные предсказания
model.estimators_ = model.estimators_[1:]
y_pred_without_first_tree = model.predict(X_test)
print(f"Accuracy с первым деревом: {accuracy_score(y_test, y_pred)}")
print(f"Accuracy без первого дерева: {accuracy_score(y_test, y_pred_without_first_tree)}")
Для Gradient Boosting (boosting)
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# Загрузка данных
data = load_iris()
X = data.data
y = data.target
# Разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Обучение модели Gradient Boosting
model = GradientBoostingClassifier(n_estimators=10, random_state=42)
model.fit(X_train, y_train)
# Предсказания
y_pred = model.predict(X_test)
# Удаление первого дерева и повторные предсказания
model.estimators_ = model.estimators_[1:]
y_pred_without_first_tree = model.predict(X_test)
print(f"Accuracy с первым деревом: {accuracy_score(y_test, y_pred)}")
print(f"Accuracy без первого дерева: {accuracy_score(y_test, y_pred_without_first_tree)}")
🟠Bagging (например, Random Forest)
Удаление первого дерева окажет незначительное влияние на предсказания, так как каждое дерево обучается независимо.
🟠Boosting (например, Gradient Boosting)
Удаление первого дерева существенно изменит предсказания, так как каждое последующее дерево исправляет ошибки предыдущих, и первое дерево задает начальное направление для коррекции ошибок.
Ставь 👍 и забирай 📚 Базу знаний
👍1