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

Что такое машинное обучение?

С точки зрения непрофессионала, машинное обучение - это наука, в которой машина учится сама по себе. Учитывая набор данных, работа машины состоит в том, чтобы идентифицировать закономерности в данных и делать из них выводы. После этого эти шаблоны и выводы используются для прогнозирования того, что произойдет в будущем, когда аналогичный набор данных будет предоставлен машине. Его применение варьируется от простой задачи идентификации электронной почты как спама до использования в автоматических автомобилях для выявления препятствий и многого другого. Цель состоит в том, чтобы предсказать и идентифицировать что-то за считанные минуты, на что у человеческого разума уйдут годы. Но всегда помните, что машина будет настолько хороша, насколько хорош человеческий разум, работающий с ней, и поэтому всегда зависит от нас, насколько хорошо мы можем заставить машину работать.

Почему машинное обучение - это следующая важная вещь?

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

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

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

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

Существует два типа линейной регрессии:

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

2. Множественная линейная регрессия: у нас есть одна зависимая переменная и много независимых переменных.

В этой статье мы рассмотрим пошаговый процесс множественной линейной регрессии.

Математика

Взаимосвязь в этой модели выражается уравнением:

Y = B₀ + B₁X₁ + B₂X₂ + .... + BₙXₙ

Здесь Y представляет собой зависимую переменную для нашей постановки задачи, а Xₛ представляет каждую отдельную независимую переменную. Количество независимых переменных может быть от 1 до 100.

Здесь B₀ - это наклон уравнения, которое показывает, что когда все Xₛ (независимые переменные) равны нулю, значение Y (зависимая переменная) равно B₀. Каждый из остальных Bₛ - это коэффициенты, соответствующие Xₛ. т.е. B₁ - коэффициент при X₁. B₂ - коэффициент при X₂ и так далее. Что это означает? Этот коэффициент говорит нам, что когда переменная отступа (Xᵢ) изменяется на 1 единицу, соответствующее изменение значения Y равно Bᵢ. т.е. когда значение X₁ увеличивается или уменьшается на одну единицу, значение Y увеличивается или уменьшается на B₁ соответственно. Мы склоняем нашу модель к предположению, что существует линейная зависимость.

Чего мы пытаемся достичь?

Как видно на рисунке 1, мы пытаемся найти уравнение красной линии посередине. Теперь мы не всегда можем предсказать точное значение для Y, всегда будет некоторая разница между прогнозируемым значением и истинным значением, то есть это называется остатками (я расскажу об этом в другом посте, но пока определения достаточно). Итак, найдя линию наилучшего соответствия (линию регрессии), мы пытаемся минимизировать остатки. (Вертикальные черные пунктирные линии на рисунке 1). Другими словами, мы пытаемся найти линию как можно ближе ко всем фактическим точкам.

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

На этом мы завершаем теоретическую часть, и теперь давайте приступим к ее реализации на Python.

Реализация

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

import pandas as pd        
import numpy as np
from sklearn.linear_model import LinearRegression

Давайте теперь выберем набор данных, уже присутствующий в Python. Мы будем использовать следующий набор данных load_diabetes (), уже присутствующий в библиотеке SKLearn.

from sklearn import datasets
data = dataset.load_diabetes()  # Load the load_diabetes dataset

Теперь мы загрузим данные в pandas DataFrame, и вся работа будет выполнена с этим набором данных.

X = pd.DataFrame(data.data)
X.head()

Результатом будет:

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

Y = pd.DataFrame(data.target)
Y.head()

Результатом будет:

Как мы видим, все значения непрерывны. Итак, теперь у нас есть значения X и Y, и мы готовы построить линейную модель.

lm = LinearRegression()   # Initiating a model
model = lm.fit(X,Y)       # Fitting the model on our variables

lm.fit () соответствует линейной модели переменных. Теперь у нас есть готовая модель, и мы хотим спрогнозировать результаты. Для этого мы воспользуемся функцией model.predict (). Он будет использовать только что настроенную линейную модель для прогнозирования этих значений.

pred = model.predict(X)   # Predict for all the values of X
print(pred)[:10]          # Printing the first 10 values

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

[206.11706979 68.07234761 176.88406035 166.91796559 128.45984241, 106.34908972 73.89417947 118.85378669 158.81033076 213.58408893]

Мы получаем 10 значений для первых 10 строк X. Теперь мы увидели предсказанные значения для X, но другие важные для нас вещи - это значения B₀ и Bᵢ. Мы можем найти его, используя атрибуты модели.

model.intercept_    # Represents B₀

Это дало бы нам значение B₀ нашего пересечения для уравнения.

152.13348416

Коэффициенты для каждого Xᵢ определяются как:

model.coef_      # Represents Bᵢ

Выход будет

[ -10.01219782, -239.81908937,  519.83978679,  324.39042769,
        -792.18416163,  476.74583782,  101.04457032,  177.06417623,
         751.27932109,   67.62538639]

Это дает нам наклон для каждого Xᵢ, т.е. изменение одной единицы X₁ изменит значение Y на -10,012 и так далее для всех остальных независимых переменных.

Теперь давайте посмотрим на значение ошибки модели.

lm.score(X,Y) #Finds the R-square for the model

Результат:

0.51774942541329338

Это значение говорит нам о том, какая часть дисперсии объясняется нашей моделью. Я объясню больше о значениях R-квадрата в следующих статьях, а пока, если вы хотите узнать об этом, вы можете прочитать его здесь.

50%, похоже, не является значением R-квадрата для модели, мы можем определенно улучшить их с помощью различных методов, таких как использование основного компонента, стандартизация переменных, преобразования, взаимодействие, использование разбиения тестового поезда или перекрестной проверки. Это выходит за рамки данной статьи, но я опубликую новую статью со всеми упомянутыми методами и тем, как мы можем на самом деле улучшить наш R-квадрат и, следовательно, предсказательную силу нашей модели.

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

Это конец моего первого поста, и как новый писатель я хотел бы услышать, что вы думаете об этой статье. Если я упустил какие-либо идеи, я был бы рад узнать их от вас. Если вам это нравится, дайте мне знать с помощью 👏, это побудит меня написать больше статей о концепции машинного обучения.

Вы можете найти код здесь.

Спасибо за чтение !