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 следует выбирать по результатам валидации, а тестовую выборку использовать для окончательной оценки.