Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

магистры / ЛР-1

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
1.19 Mб
Скачать

Методические указания по выполнению лабораторной работы № 1 по дисциплине

«Системы искусственного интеллекта» для магистров образовательных программ:

11.04.01 «Радиотехника», 11.04.02 «Инфокоммуникационные технологии и системы связи»

Цель лабораторной работы – изучение алгоритмов линейной и полиноминальной регрессии в библиотеке машинного обучения Scikit-Learn.

1. Задание

Каждый студент выполняет индивидуальный вариант данного практикума в соответствии с исходными данными, представленными в п. 3.

Построение модели линейной регрессии с использованием нормального уравнения

1.1 Необходимо сгенерировать данные измерения дальности до цели РЛС, в соответствии с заданным вариантом (параметры A и B):

import numpy as np %matplotlib inline

import matplotlib.pyplot as plt Х = 2 * np.random.rand(l00, 1)

у = A + B*Х + np.random.randn(l00, 1) plt.plot(X, y, 'ro')

plt.show()

На экране отобразится график с полученными данными (по оси х – время, по оси y – дальность до цели)

Фактически данные сгенерированы уравнением y = A+BX+гауссовский шум.

1.2 Необходимо вычислить параметр модели линейной регрессии с применением нормального уравнения. Для этого используется функцию inv() из модуля линейной алгебры (linear algebra), входящего в состав NumPy (np.linalg), для получения обратной матрицы и метод dot() для умножения матриц:

На экране в массиве array отобразятся найденные значения модели. В идеальном случае они должны совпадать со значениями A и B. Сделайте вывод насколько близки найденные значения 1, 2 со значениями A и B.

1.3 С использованием построенной модели линейной регрессии выработайте прогноз:

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

2

Построение модели линейной регрессии с использованием метода градиентного спуска

1.4 Постройте модель линейной регрессии с использованием метода градиентного спуска при скорости обучения eta = 0,1:

Полученные значения модели сравните со значениями модели рассчитанные с использованием нормального уравнения. Изменяя параметр eta в диапазоне 0,01…0,5 добейтесь наиболее точных значений модели.

Зафиксируйте их. Сделайте вывод, как скорость обучения влияет на качество модели.

Построение модели линейной регрессии с использованием метода стохастического градиентного спуска

1.5 Постройте модель линейной регрессии с использованием метода стохастического градиентного спуска при гиперпараметрах t0=5, t1=50.

3

Сравните полученные значения модели со значениями модели рассчитанные с использованием нормального уравнения. Сделайте вывод о

том какая модель точнее.

Построение модели полиноминальной регрессии

1.6 Сгенерируйте нелинейные данные, основываясь на простом квадратном уравнении (параметры С, D и E в соответствии с вариантом) плюс некоторый шум:

На экране отобразится график с исходными данными.

4

Очевидно, что прямая линия никогда не будет подогнана под такие данные должным образом. Потому воспользуемся классом Polynomial Features из Scikit-Learn, чтобы преобразовать наши обучающие данные, добавив в качестве новых признаков квадрат (полином 2-й степени) каждого признака (в данном случае есть только один признак):

Теперь Х_ро1у содержит первоначальный признак Х и его квадрат.

1.7 Подберем модель LinearRegression к таким расширенным обучающим данным

Первый элемент отображенного массива это оценка параметра D, второй элемент – параметра E, третий – параметра C. Оцените точность

полученной модели.

1.8 Постройте кривые обучения:

5

На экране отобразятся кривые обучения построенные по обучающей и проверочной выборке.

По виду кривых сделайте вывод о качестве модели (недообученная, переобученная, адекватная).

1.9 Постройте кривые обучения полиномиальной модели 10-й степени на тех же самых данных

На экране отобразятся кривые обучения:

6

По виду кривых сделайте вывод о качестве модели (недообученная, переобученная, адекватная).

1.10 Обобщите все выводы по ЛР.

2. Теоретические сведения

2.1 Модель линейной регрессии Линейная регрессия одна из простейших моделей прогнозирования.

Как правило, линейная модель вырабатывает прогноз, просто вычисляя взвешенную сумму входных признаков плюс константы под названием член смещения, также называемой свободным членом (intercept term):

̂ - спрогнозированное значение.

n - количество признаков.

xi - значение i-того признака .

j - j-тый параметр модели (включая член смещения 0 и веса

признаков 1, 2 , . . . , n).

Модель может быть записана гораздо компактнее с применением векторизованной формы

- вектор параметров модели, содержащий член смещения 0 и веса

признаков 1, 2 , . . . , n;

Т – транспонированный ;

x – вектор признаков образца, содержащий от х0 до xn, где х0 всегда равно 1;

h - функция гипотезы, использующая параметры модели .

7

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

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

(RМSE):

.

Следовательно, для обучения линейной регрессионной модели необходимо найти значение , которое сводит к минимуму RМSE. На

практике проще довести до минимума среднеквадратическую ошибку (Меаn

Squared Error - MSE), чем RМSE, что приведет к тому же самому результату.

Ошибка MSE гипотезы линейной регрессии h на обучающем наборе Х вычисляется с использованием уравнения

.

2.2 Нормальное уравнение Для нахождения значения , которое сводит к минимуму функцию

издержек, имеется решение в аналитическом виде – иными словами, математическое уравнение, дающее результат напрямую. Оно называется нормальным уравнением

,

̂ - значение , которое сводит к минимуму функцию издержек. у - вектор целевых значений, содержащий от y(1) до у(m).

Нормальное уравнение вычисляет инверсию XT*X, которая представляет собой матрицу n х n (где n - количество признаков). Вычислительная сложность инвертирования такой матрицы обычно составляет примерно от О(n2.4) до О(n3) (в зависимости от реализации). Другими словами, если вы удвоите количество признаков, то умножите время вычислений на значение приблизительно от 22.4 = 5.3 до 23 = 8.

Нормальное уравнение становится очень медленным, когда количество признаков серьезно возрастает (скажем, до 100 000).

В качестве положительной стороны следует отметить, что это уравнение является линейным относительно числа образцов в обучающем наборе (О(m)), а потому оно эффективно обрабатывает крупные обучающие наборы, если только они могут уместиться в память.

8

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

2.3 Метод градиентного спуска Градиентный спуск представляет собой самый общий алгоритм

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

Метод градиентный спуск измеряет локальный градиент функции ошибок применительно к вектору параметров и двигается в направлении убывающего градиента. Как только градиент становится нулевым, вы достигли минимума.

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

Рисунок 1 Важным параметром в градиентном спуске является размер шагов,

определяемый гиперпараметром скорости обучения (learning rate). Если скорость обучения слишком мала, тогда алгоритму для сведения придется пройти через множество итераций, что потребует длительного времени (см. рисунок 2).

9

Рисунок 2 С другой стороны, если скорость обучения слишком высока, тогда вы

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

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

Рисунок 3

10

Соседние файлы в папке магистры