1. По представленным данным зависимость стоимости
квартиры от площади является линейной.
Коэффициент регрессии:
β₁ = 0.4.
Свободный член:
β₀ = 2.
Уравнение модели:
ŷ = 2 + 0.4x.
Для квартиры площадью 55 м²:
ŷ = 2 + 0.4 × 55 = 24.
Прогнозируемая стоимость составляет 24 млн тенге.
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([30, 40, 50, 60, 70]).reshape(-1, 1)
y = np.array([14, 18, 22, 26, 30])
model = LinearRegression()
model.fit(X, y)
print("Коэффициент:", model.coef_[0])
print("Свободный член:", model.intercept_)
print("Прогноз:", model.predict([[55]])[0])
Коэффициент 0.4 означает, что при увеличении площади на 1
м² прогнозируемая стоимость увеличивается на 0.4 млн тенге в рамках
построенной модели.
2. Остатки рассчитываются по формуле:
eᵢ = yᵢ − ŷᵢ.
Получаем:
e = [−2, 1, 1, −2].
Сумма квадратов ошибок:
SSE = (−2)² + 1² + 1² +
(−2)² = 10.
Среднеквадратичная ошибка:
MSE = 10 / 4 = 2.5.
import numpy as np
y = np.array([10, 15, 20, 25])
y_pred = np.array([12, 14, 19, 27])
residuals = y - y_pred
sse = np.sum(residuals ** 2)
mse = np.mean(residuals ** 2)
print("Остатки:", residuals)
print("SSE:", sse)
print("MSE:", mse)
Возведение ошибок в квадрат позволяет избежать взаимного
сокращения положительных и отрицательных отклонений. Кроме того, большие ошибки
получают более значительный вес.
3. Для сравнения моделей Ridge и Lasso можно
использовать следующий код:
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import Ridge, Lasso
from sklearn.metrics import mean_squared_error
X, y = make_regression(
n_samples=150,
n_features=8,
n_informative=4,
noise=20,
random_state=42
)
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2,
random_state=42
)
for alpha in [0.1, 1, 10]:
for name,
estimator in [
("Ridge", Ridge(alpha=alpha)),
("Lasso", Lasso(alpha=alpha, max_iter=10000))
]:
model =
make_pipeline(
StandardScaler(),
estimator
)
model.fit(X_train, y_train)
predictions =
model.predict(X_test)
mse =
mean_squared_error(y_test, predictions)
print(name,
"alpha =", alpha)
print("MSE:", round(mse, 2))
print("Коэффициенты:", model[-1].coef_)
print()
При увеличении alpha усиливается регуляризация.
В модели Ridge коэффициенты обычно уменьшаются по абсолютной
величине, но не становятся строго нулевыми.
В модели Lasso некоторые коэффициенты могут стать равными
нулю, что позволяет исключить соответствующие признаки из модели.
Слишком сильная регуляризация может привести к недообучению
и увеличению ошибки. Поэтому оптимальное значение alpha следует выбирать по
результатам валидации, а тестовую выборку использовать для окончательной
оценки.