TGViewer
Data Science | Вопросы собесов Data Science | Вопросы собесов @easy_ds · 4.89K subscribers
Post #2510 421
🤔 Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке?

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

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

🟠Вероятностные модели (например, модели, предсказывающие вероятность события)
Обученные на неотрицательных целевых метках (например, 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)


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
  • 💊 1
More from @easy_ds
  1. Oct 12, 2026Post #2704
  2. Oct 12, 2026🤔 Как решить задачу, где присутствует одновременно два target – один categorical, другой…
  3. Oct 12, 2026🤔 Как происходит детекция без anchor box-ов? Обнаружение объектов без использования ancho…
  4. Oct 12, 2026Post #2701
  5. Oct 11, 2026🤔 Что такое декоратор? Это функция, модифицирующая или расширяющая поведение другой функц…
  6. Oct 11, 2026Post #2699
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →