Отчет по лабораторной работе #1 выполнил(а):
- Рушкова Ольга Игоревна
- РИ210940 Отметка о выполнении заданий (заполняется студентом):
Задание | Выполнение | Баллы |
---|---|---|
Задание 1 | * | 60 |
Задание 2 | * | 20 |
Задание 3 | * | 20 |
знак "*" - задание выполнено; знак "#" - задание не выполнено;
Работу проверили:
- к.т.н., доцент Денисов Д.В.
- к.э.н., доцент Панов М.А.
- ст. преп., Фадеев В.О.
Структура отчета
- Данные о работе: название работы, фио, группа, выполненные задания.
- Цель работы.
- Задание 1.
- Код реализации выполнения задания. Визуализация результатов выполнения (если применимо).
- Задание 2.
- Код реализации выполнения задания. Визуализация результатов выполнения (если применимо).
- Задание 3.
- Код реализации выполнения задания. Визуализация результатов выполнения (если применимо).
- Выводы.
- ✨Magic ✨
Ознакомиться с основными операторами языка Python на примере реализации линейной регрессии.
Код реализации представлен в виде скринов Скрины реализации первого задания:
Ход работы:
-
Произвести подготовку данных для работы с алгоритмом линейной регрессии. 10 видов данных были установлены случайным образом, и данные находились в линейной зависимости. Данные преобразуются в формат массива, чтобы их можно было вычислить напрямую при использовании умножения и сложения.
-
Определите связанные функции. Функция модели: определяет модель линейной регрессии wx+b. Функция потерь: функция потерь среднеквадратичной ошибки. Функция оптимизации: метод градиентного спуска для нахождения частных производных w и b.
-
Первая итерация: Инициализация и модель итеративной оптимизации
-
Вторая итерация: отображаются значения параметров, значение потерь и эффекты визуализации
-
Третья итерация: отображаются значения параметров, значение потерь и эффекты визуализации
-
Четвёртая итерация: отображаются значения параметров, значение потерь и эффекты визуализации
-
Пятая итерация: отображаются значения параметров, значение потерь и эффекты визуализации
-
Тысячная итерация: отображаются значения параметров, значение потерь и эффекты визуализации Код реализации:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = [3, 21, 22, 34, 54, 34, 55, 67, 89, 99]
x = np.array(x)
y = [2, 22, 24, 65, 79, 82, 55, 130, 150, 199]
y = np.array(y)
plt.scatter(x,y)
def model(a, b, x):
return a * x + b
def loss_function(a, b, x, y):
num = len(x)
prediction = model(a, b, x)
return (0.5 / num) * (np.square(prediction - y)).sum()
def optimize(a, b, x, y):
num = len(x)
prediction = model(a, b, x)
da = (1.0 / num) * ((prediction - y) * x).sum()
db = (1.0 / num) * ((prediction - y).sum())
a = a - Lr * da
b = b - Lr * db
return a, b
def iterate(a, b, x, y, times):
for i in range(times):
a, b = optimize(a, b, x, y)
return a, b
a = np.random.rand(1)
b = np.random.rand(1)
Lr = 0.000001
a, b = iterate(a, b, x, y, 10000000)
prediction = model(a, b, x)
loss = loss_function(a, b, x, y)
print(a, b, loss)
plt.scatter(x, y)
plt.plot(x, prediction)
Должна ли величина loss стремиться к нулю при изменении исходных данных? Ответьте на вопрос, приведите пример выполнения кода, который подтверждает ваш ответ.
Да, должна, так как в результате алгоритма мы должны получить линейную функцию, которая минимизирует значение потерь, следовательно, если представить в массивах исходных данных значение x и y, приблизительно соответствующие некой линейной функции, то в результате выполнения прога\раммы мы сможем получить функцию, которая сводит величину loss (значение потерь) к нулю. Ту же тенденцию можно заметить и в приведённом выше задании 2.
Какова роль параметра Lr? Ответьте на вопрос, приведите пример выполнения кода, который подтверждает ваш ответ. В качестве эксперимента можете изменить значение параметра.
Параметр Lr регулирует скорость обучения нашей программы и влияет на то, насколько сильно мы меняем коэффициенты a и b для приближения нашей модели к той, что сведёт функцию потерь к минимуму. От величины Lr зависит успешность выполнения программы, так как если выбрать слишком маленькую скорость обучения, то программе понадобится слишком много итерация для получения нужного значения, а если - слишком большую, то велика вероятность просто перескочить через нужные значения коэффициентов в ходе выполнения программы.
Абзац умных слов о том, что было сделано и что было узнано: В данной лабораторной работе я познакомилась с алгоритмом линейной регрессии: узнала принципы его работы и основные функции, которые использует данный алгоритм. Также установила необходимое программное обеспечение в виде Unity и создала свой первый проект, а такж ознакомилась с основными операторами языка Python и работой в google.colab
Plugin | README |
---|---|
Dropbox | [plugins/dropbox/README.md][PlDb] |
GitHub | [plugins/github/README.md][PlGh] |
Google Drive | [plugins/googledrive/README.md][PlGd] |
OneDrive | [plugins/onedrive/README.md][PlOd] |
Medium | [plugins/medium/README.md][PlMe] |
Google Analytics | [plugins/googleanalytics/README.md][PlGa] |
BigDigital Team: Denisov | Fadeev | Panov