🤔 Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке?
Если модель обучалась на неотрицательной целевой метке (например, метки, которые не могут быть отрицательными, такие как возраст, стоимость, количество и т.д.).
🟠Регрессионные модели
Могут предсказывать как положительные, так и отрицательные значения, если не наложены дополнительные ограничения. Например, линейная регрессия или случайный лес могут предсказывать отрицательные значения, даже если обучались на неотрицательных данных. Это происходит потому, что модель пытается найти лучшую аппроксимацию, минимизируя ошибку предсказания, и может выйти за пределы диапазона обучающих данных.
🟠Вероятностные модели (например, модели, предсказывающие вероятность события)
Обученные на неотрицательных целевых метках (например, 0 или 1), будут предсказывать значения в диапазоне [0, 1]. Однако, эти модели также могут иногда предсказывать значения немного ниже 0 или выше 1 из-за особенности алгоритмов (например, логистическая регрессия без дополнительных ограничений).
🚩Способы предотвращения предсказания отрицательных значений
🟠Использование функции потерь с ограничениями
Например, в регрессионных задачах можно использовать функции потерь, которые накладывают штраф за отрицательные предсказания.
🟠Постобработка предсказаний
Можно применить после предсказания функцию, которая заменяет все отрицательные значения на ноль.
predictions = model.predict(X_test)
predictions = np.maximum(predictions, 0) # Заменяем все отрицательные значения на 0
🟠Использование моделей, которые по своей природе не могут предсказывать отрицательные значения
Например, модели на основе дерева решений с соответствующими параметрами, нейронные сети с нелинейными активационными функциями, которые ограничивают выходное значение.
🟠Трансформация целевой переменной
Можно применить логарифмическую трансформацию или другую трансформацию, которая делает целевую переменную всегда неотрицательной, и потом обратную трансформацию для предсказаний.
from sklearn.linear_model import LinearRegression
import numpy as np
# Пример данных
X_train = np.array([[1], [2], [3], [4]])
y_train = np.array([10, 15, 20, 25]) # Неотрицательные целевые метки
# Обучение модели
model = LinearRegression()
model.fit(X_train, y_train)
# Предсказания
X_test = np.array([[5], [6], [7]])
predictions = model.predict(X_test)
# Применение постобработки для удаления отрицательных значений
predictions = np.maximum(predictions, 0)
print(predictions)
Ставь 👍 и забирай 📚 Базу знаний
Если модель обучалась на неотрицательной целевой метке (например, метки, которые не могут быть отрицательными, такие как возраст, стоимость, количество и т.д.).
🟠Регрессионные модели
Могут предсказывать как положительные, так и отрицательные значения, если не наложены дополнительные ограничения. Например, линейная регрессия или случайный лес могут предсказывать отрицательные значения, даже если обучались на неотрицательных данных. Это происходит потому, что модель пытается найти лучшую аппроксимацию, минимизируя ошибку предсказания, и может выйти за пределы диапазона обучающих данных.
🟠Вероятностные модели (например, модели, предсказывающие вероятность события)
Обученные на неотрицательных целевых метках (например, 0 или 1), будут предсказывать значения в диапазоне [0, 1]. Однако, эти модели также могут иногда предсказывать значения немного ниже 0 или выше 1 из-за особенности алгоритмов (например, логистическая регрессия без дополнительных ограничений).
🚩Способы предотвращения предсказания отрицательных значений
🟠Использование функции потерь с ограничениями
Например, в регрессионных задачах можно использовать функции потерь, которые накладывают штраф за отрицательные предсказания.
🟠Постобработка предсказаний
Можно применить после предсказания функцию, которая заменяет все отрицательные значения на ноль.
predictions = model.predict(X_test)
predictions = np.maximum(predictions, 0) # Заменяем все отрицательные значения на 0
🟠Использование моделей, которые по своей природе не могут предсказывать отрицательные значения
Например, модели на основе дерева решений с соответствующими параметрами, нейронные сети с нелинейными активационными функциями, которые ограничивают выходное значение.
🟠Трансформация целевой переменной
Можно применить логарифмическую трансформацию или другую трансформацию, которая делает целевую переменную всегда неотрицательной, и потом обратную трансформацию для предсказаний.
from sklearn.linear_model import LinearRegression
import numpy as np
# Пример данных
X_train = np.array([[1], [2], [3], [4]])
y_train = np.array([10, 15, 20, 25]) # Неотрицательные целевые метки
# Обучение модели
model = LinearRegression()
model.fit(X_train, y_train)
# Предсказания
X_test = np.array([[5], [6], [7]])
predictions = model.predict(X_test)
# Применение постобработки для удаления отрицательных значений
predictions = np.maximum(predictions, 0)
print(predictions)
Ставь 👍 и забирай 📚 Базу знаний