Как мы знаем, машинное обучение — это ветвь искусственного интеллекта, которая занимается проектированием и разработкой алгоритмов, позволяющих машинам/компьютерам развиваться на основе эмпирических данных. Линейная регрессия — один из самых ранних методов в статистике, изобретенный антропологом сэром Фрэнсисом Гальтоном. Он разработал многие концепции и инструменты, используемые современными статистиками и приложениями машинного обучения.

Что такое линейная регрессия

Одержимость Гальтона наследственными признаками (передача признаков от родителей потомству) привела его к изобретению статистической регрессии. Проводя исследование потомства Собаки, он заметил, что потомство со временем приобретает средние характеристики. Позднее Гальтон наблюдал то же самое у людей и гороха. Чтобы проанализировать свои результаты, он использовал такие инструменты, как нормальная кривая, корреляция, дисперсия и стандартное отклонение. Чтобы продемонстрировать свои выводы о взаимосвязи между средним ростом ребенка и ростом их родителей, Гальтон разработал метод определения того, какая линия лучше всего соответствует ряду точек данных. Техника Гальтона для подгонки линий к данным стала известна как «Линейная регрессия».

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

y = mx+c

где y — зависимая переменная (переменная, которую мы пытаемся предсказать).
x — независимая переменная (переменная, которую мы используем для прогнозирования).
m — это наклон, а c — это перехват, который помогает определить значение y, когда x равно 0.

Регрессия обычно используется для ответа на вопрос, влияют ли и как одни явления на другие или как связаны между собой несколько переменных. Давайте посмотрим, как мы можем прогнозировать значения с помощью линейной регрессии с использованием Python.

Используемые пакеты

Поскольку Python не поставляется с типом вектора или фрейма данных по умолчанию, нам нужно использовать пакет Numpy, чтобы позволить Python иметь эти функции. Numpy означает числовой Python. Это помогает python иметь многомерные массивы и матрицы. Numpy также имеет стандартный функционал для работы с линейной алгеброй, преобразованием Фурье и матрицами.

Для импорта набора данных, который хранится в формате Excel или CSV, мы можем использовать Pandas (данные панели). Pandas — это пакет для анализа данных. Pandas построен на основе пакета NumPy, поэтому он наследует многомерные возможности Python. Поскольку файлы Excel представляют собой строки и столбцы, с помощью pandas проще преобразовать любой файл Excel в DataFrame. DataFrame — это тип данных, который имеет как строки, так и столбцы. У Pandas также есть богатые возможности, которые помогают нам внедрять pandas в автоматизацию MS-Excel.

Scikit Learn — это пакет Python, который позволяет выполнять машинное обучение. Sklearn уже поставляется с готовым методом линейной регрессии, который упрощает обучение и тестирование. Sklearn также предлагает различные алгоритмы классификации, регрессии, кластеризации, включая SVM (машины опорных векторов), случайные леса, повышение градиента, K-Means и т. д.

Прогнозирование цены акций с помощью линейной регрессии

Для выполнения этого конкретного прогноза я загрузил набор данных о ценах на акции Tesla за последние 10 лет с Kaggle.com.

Вышеприведенный код импортирует файл Excel в переменную df в формате DataFrame и отображает значение закрытия цены акций для каждого дня, как показано ниже.

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

После завершения обучения у нас будет два набора данных: данные обучения и данные тестирования.

Мы можем проверить точность модели обучения, используя коэффициент детерминации «R в квадрате».

Точность теста для приведенного выше примера была (0,7826939482248321)