Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Исследование работы L2-регуляризатора в задачах регрессии

Автор:   •  Декабрь 24, 2023  •  Лабораторная работа  •  760 Слов (4 Страниц)  •  102 Просмотры

Страница 1 из 4

Кафедра «Цифровые технологии»

Лабораторная работа №3

«Исследование работы L2-регуляризатора в задачах регрессии»

по дисциплине

«Интеллектуальные системы и технологии»

Вариант 4

Выполнил:

магистрант группы ИСТм-22

Инжеватов Е.А.

Проверил: Иванов Д.В.

Самара 2023 

Цель и задание

Цель работы: изучить особенности работы L2-регуляризатора на примере задачи аппроксимации функции линейной моделью.

Выполнение работы

Начнем с создания обучающей выборки из функции и обучения модели. В этом случае, мы будем аппроксимировать полиномом 13-й степени. Затем мы вычислим значения коэффициентов вектора ω для квадратичной функции потерь.

import numpy as np

import matplotlib.pyplot as plt

# Функция для аппроксимации

def true_function(x):

return x**3 - 2*x**2 + x

# Создание обучающей выборки

X_train = np.linspace(-5, 5, 100)

y_train = true_function(X_train)

# Формирование обучающей выборки

X_train_even = X_train[::2]

y_train_even = y_train[::2]

# Функция потерь

def loss_function(M):

return M**2

# Градиент

def gradient(w, X, y):

M = np.dot(X, w) - y

grad = 2 * np.dot(X.T, M)

return grad

# Градиентный спуск

def gradient_descent(X, y, learning_rate=0.01, epochs=1000):

w = np.zeros(X.shape[1]) # Начальные веса

for epoch in range(epochs):

M = np.dot(X, w) - y

Q = np.sum(loss_function(M))

grad = gradient(w, X, y)

w -= learning_rate * grad

if epoch % 100 == 0:

print(f"Epoch: {epoch}, Loss: {Q}")

return w

# Создание матрицы X для полинома 13-й степени

X_poly = np.column_stack([X_train_even**i for i in range(14)])

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

learned_weights = gradient_descent(X_poly, y_train_even)

# Вывод коэффициентов

print("Learned Weights:", learned_weights)

Теперь, у вас есть обученные веса модели. Далее, вы можете использовать их для вычисления прогнозов и построения графика.

# Вычисление прогнозов функции для всего диапазона значений

X_range = np.linspace(-5, 5, 100)

X_range_poly = np.column_stack([X_range**i for i in range(14)])

predictions = np.dot(X_range_poly, learned_weights)

# Построение графика

plt.plot(X_train, y_train, label='True Function', color='blue')

plt.scatter(X_train_even, y_train_even, label='Training Points', color='red')

plt.plot(X_range, predictions, label='Predictions', color='green')

plt.xlabel('X')

plt.ylabel('y')

plt.title('Polynomial Regression')

plt.legend()

plt.grid(True)

plt.show()

Конечный код

import numpy as np

import matplotlib.pyplot as plt

# Функция для аппроксимации

def true_function(x):

return x**2

# Создание обучающей выборки

X_train = np.linspace(0, 10, 100)

y_train = true_function(X_train)

# Формирование обучающей выборки

...

Скачать:   txt (7.3 Kb)   pdf (60.5 Kb)   docx (12.2 Kb)  
Продолжить читать еще 3 страниц(ы) »
Доступно только на Essays.club