Привет всем! В этой статье мы рассмотрим метод моделирования линейной регрессии в машинном обучении. Для начала давайте разберемся, что такое линейная регрессия и как мы можем использовать ее для прогнозирования в машинном обучении.

Линейная регрессия — метод моделирования связи между несколькими переменными. В простейшем случае его можно использовать для двух переменных, где модель определяет наиболее подходящую линию через диаграмму рассеяния наборов данных вместе с коэффициентом детерминации, обычно обозначаемым r2 или R2 (R квадрат). Если в регрессию включены только две переменные, R2 – это просто квадрат корреляции между двумя переменными. R2 – это число от 0 до 1, указывающее, насколько хорошо можно использовать одну переменную для прогнозирования значения другой. Значение 1 означает идеальную корреляцию, а значение, близкое к 0, указывает на слабую связь между переменными.

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

Набор данных:

В этой статье мы собираемся использовать такую ​​информацию, как возраст человека, пол, ИМТ, число. детей, и привычка курить, чтобы предсказать цену ежегодных медицинских счетов. Такая модель полезна для страховых компаний, чтобы определить ежегодную страховую премию для человека. Набор данных для этой статьи взят из Наборов данных о медицинских расходах, размещенных на Kaggle.

Импортируйте необходимые пакеты (PyTorch, NumPy, Matplotlib, Pandas и т. д.):

Шаг 1. Скачайте и изучите данные

Начнем с загрузки данных. Мы будем использовать функцию из PyTorch, чтобы получить данные в виде файла CSV (значения, разделенные запятыми).

Чтобы загрузить набор данных в память, мы будем использовать функцию read_csv из библиотеки pandas.

Теперь с помощью библиотеки matplotlib будем визуализировать данные.

Шаг 2. Подготовьте набор данных для обучения

Нам нужно преобразовать данные из фрейма данных Pandas в тензоры PyTorch для обучения. Для этого первым делом необходимо преобразовать его в массивы NumPy. Эта следующая функция выполнит преобразование в массивы NumPy.

Как только кадр данных будет преобразован в массив NumPy, мы будем использовать функцию from_numpy PyTorch для преобразования в тензоры.

Шаг 3: Создайте модель линейной регрессии

Теперь мы создадим модель линейной регрессии для прогнозирования расходов.

Шаг 4. Обучите модель, чтобы она соответствовала данным

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

Давайте посмотрим на первоначальную потерю проверки нашей модели.

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

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

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

Шаг 5. Делайте прогнозы с помощью обученной модели

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

Пришло время использовать нашу модель для прогнозирования тестовых данных и посмотреть, как модель прогнозирует страховые сборы.

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

Вывод

В этой статье мы узнали о линейной регрессии и использовали этот алгоритм для прогнозирования стоимости ежегодных медицинских счетов с использованием такой информации, как возраст человека, пол, ИМТ, число. детей и привычка курить.

Вы также можете просмотреть мою записную книжку jovian ML об этих тензорных операциях.

Ссылка на мой блокнот: https://jovian.ml/siddeshbb/02-insurance-linear-regression

Справочные ссылки

Вы можете просмотреть официальную документацию PyTorch, которая является отличным источником таких методов с хорошими примерами.

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