📌 Что будет с целевой меткой с предсказаниями, если обучалась на неотрицательной целевой метке ?



💬 Спрашивают в 14% собеседований



Когда модель обучается на неотрицательной целевой метке, поведение модели на этапе предсказаний зависит от типа модели и её внутреннего устройства. Рассмотрим, что произойдет с предсказаниями в разных сценариях:



1️⃣ Линейная регрессия



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

import numpy as np

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split



# Генерация данных

np.random.seed(42)

X = np.random.rand(100, 1) * 10

y = X.ravel() * 2 + np.random.randn(100) * 2 # Целевая метка может быть как положительной, так и отрицательной



# Удаление отрицательных значений

y = np.abs(y)



# Разделение данных

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



# Обучение модели

model = LinearRegression()

model.fit(X_train, y_train)



# Предсказание

y_pred = model.predict(X_test)

print(y_pred)




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



2️⃣ Регрессия с ограничениями (например, Poisson Regression)



Некоторые модели, такие как регрессия Пуассона, могут быть специально разработаны для работы с неотрицательными целевыми метками и обеспечивать неотрицательные предсказания.

import numpy as np

from sklearn.linear_model import PoissonRegressor

from sklearn.model_selection import train_test_split



# Генерация данных

np.random.seed(42)

X = np.random.rand(100, 1) * 10

y = np.abs(X.ravel() * 2 + np.random.randn(100) * 2) # Убедимся, что целевая метка неотрицательна



# Разделение данных

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



# Обучение модели

model = PoissonRegressor()

model.fit(X_train, y_train)



# Предсказание

y_pred = model.predict(X_test)

print(y_pred)




Модели, разработанные для работы с неотрицательными целевыми метками, будут давать неотрицательные предсказания.



3️⃣ Деревья решений и случайные леса



Могут обучаться на неотрицательных целевых метках, но предсказания могут включать как неотрицательные, так и отрицательные значения, если этого требует структура дерева.

import numpy as np

from sklearn.ensemble import RandomForestRegressor

from sklearn.model_selection import train_test_split



# Генерация данных

np.random.seed(42)

X = np.random.rand(100, 1) * 10

y = np.abs(X.ravel() * 2 + np.random.randn(100) * 2) # Убедимся, что целевая метка неотрицательна



# Разделение данных

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



# Обучение модели

model = RandomForestRegressor()

model.fit(X_train, y_train)



# Предсказание

y_pred = model.predict(X_test)

print(y_pred)




Случайные леса и деревья решений могут предсказывать отрицательные значения, даже если обучались на неотрицательных целевых метках.



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



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых